diff --git a/.gitignore b/.gitignore
index dc2549f2f6d8117f30bf4afa59d4f43fea86a77b..ee91348fc8ea6f2d2e0f92e526eefc244e5c149e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,4 @@
 tmp/
 minikube-manifests/
-jsonnetfile.lock.json
 vendor/
 ./auth
diff --git a/Makefile b/Makefile
index 74ccee14a17ff458f949e7bbf63c4c7a8c4ddeca..f40e810411794ae47b8c094de20bf5eb66c80f01 100644
--- a/Makefile
+++ b/Makefile
@@ -30,7 +30,7 @@ manifests: vendor example.jsonnet build.sh
 	rm -rf manifests
 	./build.sh
 
-vendor: $(JB_BINARY) jsonnetfile.json
+vendor: $(JB_BINARY) jsonnetfile.json jsonnetfile.lock.json
 	rm -rf vendor
 	$(JB_BINARY) install
 
diff --git a/jsonnet/kube-prometheus/jsonnetfile.json b/jsonnet/kube-prometheus/jsonnetfile.json
index 719f0e9464b82a7f2aa966169fa5f4143e5d88e9..edbf70e5e6ce28c69e07dc67dcbd27853450e369 100644
--- a/jsonnet/kube-prometheus/jsonnetfile.json
+++ b/jsonnet/kube-prometheus/jsonnetfile.json
@@ -38,7 +38,7 @@
                     "subdir": "jsonnet/prometheus-operator"
                 }
             },
-            "version": "master"
+            "version": "v0.22.2"
         },
         {
             "name": "etcd-mixin",
diff --git a/jsonnetfile.json b/jsonnetfile.json
index dc29c8217618b4990680383a097235302d506b74..b4ebb0f2d8395fb3455d878435a9e3ef059bc496 100644
--- a/jsonnetfile.json
+++ b/jsonnetfile.json
@@ -9,16 +9,6 @@
                 }
             },
             "version": "."
-        },
-        {
-            "name": "prometheus-operator",
-            "source": {
-                "git": {
-                    "remote": "../../",
-                    "subdir": "jsonnet/prometheus-operator"
-                }
-            },
-            "version": "."
         }
     ]
 }
\ No newline at end of file
diff --git a/jsonnetfile.lock.json b/jsonnetfile.lock.json
new file mode 100644
index 0000000000000000000000000000000000000000..e394e5a77e6576dafd3e4b5d8e4b679ba644795e
--- /dev/null
+++ b/jsonnetfile.lock.json
@@ -0,0 +1,14 @@
+{
+    "dependencies": [
+        {
+            "name": "kube-prometheus",
+            "source": {
+                "git": {
+                    "remote": "../../",
+                    "subdir": "contrib/kube-prometheus/jsonnet/kube-prometheus"
+                }
+            },
+            "version": "ca9cf6257548c30a6d3d6e926f38498f96cc3525"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/manifests/0prometheus-operator-0alertmanagerCustomResourceDefinition.yaml b/manifests/0prometheus-operator-0alertmanagerCustomResourceDefinition.yaml
index 9d782f51938ac305d3c43268123ac0deb3b033d0..6f30397aa749223fcdb71fb6995f5934b5d908c4 100644
--- a/manifests/0prometheus-operator-0alertmanagerCustomResourceDefinition.yaml
+++ b/manifests/0prometheus-operator-0alertmanagerCustomResourceDefinition.yaml
@@ -23,8 +23,8 @@ spec:
             submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
           type: string
         spec:
-          description: 'AlertmanagerSpec is a specification of the desired behavior
-            of the Alertmanager cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status'
+          description: 'Specification of the desired behavior of the Alertmanager
+            cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status'
           properties:
             affinity:
               description: Affinity is a group of affinity scheduling rules.
@@ -2372,9 +2372,9 @@ spec:
               description: Version the cluster should be on.
               type: string
         status:
-          description: 'AlertmanagerStatus is the most recent observed status of the
-            Alertmanager cluster. Read-only. Not included when requesting from the
-            apiserver, only from the Prometheus Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status'
+          description: 'Most recent observed status of the Alertmanager cluster. Read-only.
+            Not included when requesting from the apiserver, only from the Prometheus
+            Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status'
           properties:
             availableReplicas:
               description: Total number of available pods (ready for at least minReadySeconds)
diff --git a/manifests/0prometheus-operator-0prometheusCustomResourceDefinition.yaml b/manifests/0prometheus-operator-0prometheusCustomResourceDefinition.yaml
index fad5f32575f60198af9a686a506e95e590274d0b..140deffa2d11881a2b979ff7da3d3c1ca5f9d293 100644
--- a/manifests/0prometheus-operator-0prometheusCustomResourceDefinition.yaml
+++ b/manifests/0prometheus-operator-0prometheusCustomResourceDefinition.yaml
@@ -23,8 +23,8 @@ spec:
             submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
           type: string
         spec:
-          description: 'PrometheusSpec is a specification of the desired behavior
-            of the Prometheus cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status'
+          description: 'Specification of the desired behavior of the Prometheus cluster.
+            More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status'
           properties:
             additionalAlertManagerConfigs:
               description: SecretKeySelector selects a key of a Secret.
@@ -671,76 +671,6 @@ spec:
                   type: array
               required:
               - alertmanagers
-            apiserverConfig:
-              description: 'APIServerConfig defines a host and auth methods to access
-                apiserver. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config'
-              properties:
-                basicAuth:
-                  description: 'BasicAuth allow an endpoint to authenticate over basic
-                    authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints'
-                  properties:
-                    password:
-                      description: SecretKeySelector selects a key of a Secret.
-                      properties:
-                        key:
-                          description: The key of the secret to select from.  Must
-                            be a valid secret key.
-                          type: string
-                        name:
-                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
-                          type: string
-                        optional:
-                          description: Specify whether the Secret or it's key must
-                            be defined
-                          type: boolean
-                      required:
-                      - key
-                    username:
-                      description: SecretKeySelector selects a key of a Secret.
-                      properties:
-                        key:
-                          description: The key of the secret to select from.  Must
-                            be a valid secret key.
-                          type: string
-                        name:
-                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
-                          type: string
-                        optional:
-                          description: Specify whether the Secret or it's key must
-                            be defined
-                          type: boolean
-                      required:
-                      - key
-                bearerToken:
-                  description: Bearer token for accessing apiserver.
-                  type: string
-                bearerTokenFile:
-                  description: File to read bearer token for accessing apiserver.
-                  type: string
-                host:
-                  description: Host of apiserver. A valid string consisting of a hostname
-                    or IP followed by an optional port number
-                  type: string
-                tlsConfig:
-                  description: TLSConfig specifies TLS configuration parameters.
-                  properties:
-                    caFile:
-                      description: The CA cert to use for the targets.
-                      type: string
-                    certFile:
-                      description: The client cert file for the targets.
-                      type: string
-                    insecureSkipVerify:
-                      description: Disable target certificate validation.
-                      type: boolean
-                    keyFile:
-                      description: The client key file for the targets.
-                      type: string
-                    serverName:
-                      description: Used to verify the hostname for the targets.
-                      type: string
-              required:
-              - host
             baseImage:
               description: Base image to use for a Prometheus deployment.
               type: string
@@ -2932,7 +2862,7 @@ spec:
                   description: Peers is a DNS name for Thanos to discover peers through.
                   type: string
                 s3:
-                  description: ThanosS3Spec defines parameters for of AWS Simple Storage
+                  description: ThanosSpec defines parameters for of AWS Simple Storage
                     Service (S3) with Thanos. (S3 compatible services apply as well)
                   properties:
                     accessKey:
@@ -3031,9 +2961,9 @@ spec:
               description: Version of Prometheus to be deployed.
               type: string
         status:
-          description: 'PrometheusStatus is the most recent observed status of the
-            Prometheus cluster. Read-only. Not included when requesting from the apiserver,
-            only from the Prometheus Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status'
+          description: 'Most recent observed status of the Prometheus cluster. Read-only.
+            Not included when requesting from the apiserver, only from the Prometheus
+            Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status'
           properties:
             availableReplicas:
               description: Total number of available pods (ready for at least minReadySeconds)
diff --git a/manifests/0prometheus-operator-0servicemonitorCustomResourceDefinition.yaml b/manifests/0prometheus-operator-0servicemonitorCustomResourceDefinition.yaml
index 9d96bfebf1c8918634bf181c590afa5ca5f069cf..f3068cf8ce71885c2e0896626a2f767b3e8479d5 100644
--- a/manifests/0prometheus-operator-0servicemonitorCustomResourceDefinition.yaml
+++ b/manifests/0prometheus-operator-0servicemonitorCustomResourceDefinition.yaml
@@ -169,7 +169,7 @@ spec:
               description: The label to use to retrieve the job name from.
               type: string
             namespaceSelector:
-              description: NamespaceSelector is a selector for selecting either all
+              description: A selector for selecting namespaces either selecting all
                 namespaces or a list of namespaces.
               properties:
                 any:
diff --git a/manifests/0prometheus-operator-deployment.yaml b/manifests/0prometheus-operator-deployment.yaml
index a08269803127c74055588613b96ee1ee85c445ff..358fb6e228a108e4ebb3b60fc13418351aec1f10 100644
--- a/manifests/0prometheus-operator-deployment.yaml
+++ b/manifests/0prometheus-operator-deployment.yaml
@@ -18,7 +18,6 @@ spec:
       containers:
       - args:
         - --kubelet-service=kube-system/kubelet
-        - -logtostderr=true
         - --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1
         - --prometheus-config-reloader=quay.io/coreos/prometheus-config-reloader:v0.22.2
         image: quay.io/coreos/prometheus-operator:v0.22.2
@@ -29,13 +28,10 @@ spec:
         resources:
           limits:
             cpu: 200m
-            memory: 200Mi
+            memory: 100Mi
           requests:
             cpu: 100m
-            memory: 100Mi
-        securityContext:
-          allowPrivilegeEscalation: false
-          readOnlyRootFilesystem: true
+            memory: 50Mi
       nodeSelector:
         beta.kubernetes.io/os: linux
       securityContext:
diff --git a/manifests/kube-state-metrics-clusterRole.yaml b/manifests/kube-state-metrics-clusterRole.yaml
index c519a918fa5ef362986dd9c3030316eb7f77750f..cae184834cfff42306b4d56fff6cff4004267ba8 100644
--- a/manifests/kube-state-metrics-clusterRole.yaml
+++ b/manifests/kube-state-metrics-clusterRole.yaml
@@ -34,9 +34,6 @@ rules:
   - apps
   resources:
   - statefulsets
-  - daemonsets
-  - deployments
-  - replicasets
   verbs:
   - list
   - watch
diff --git a/manifests/kube-state-metrics-role.yaml b/manifests/kube-state-metrics-role.yaml
index e03d889881fd2b0792e1a394d479e2c60c5a4cc2..0063ffb453a8d1f254755e7209a73f74ec1a5195 100644
--- a/manifests/kube-state-metrics-role.yaml
+++ b/manifests/kube-state-metrics-role.yaml
@@ -19,12 +19,3 @@ rules:
   verbs:
   - get
   - update
-- apiGroups:
-  - apps
-  resourceNames:
-  - kube-state-metrics
-  resources:
-  - deployments
-  verbs:
-  - get
-  - update