diff --git a/examples/thanos-sidecar.jsonnet b/examples/thanos-sidecar.jsonnet
new file mode 100644
index 0000000000000000000000000000000000000000..35eca8e19e0689c2a491fcd367ad2be9e3621462
--- /dev/null
+++ b/examples/thanos-sidecar.jsonnet
@@ -0,0 +1,32 @@
+local kp =
+  (import 'kube-prometheus/main.libsonnet') +
+  (import 'kube-prometheus/addons/thanos-sidecar.libsonnet') +
+  {
+    values+:: {
+      common+: {
+        namespace: 'monitoring',
+      },
+      thanos: {
+        version: '0.17.2',
+        image: 'quay.io/thanos-io/thanos:v' + $.values.thanos.version,
+        objectStorageConfig: {
+          key: 'thanos.yaml',  // How the file inside the secret is called
+          name: 'thanos-objectstorage',  // This is the name of your Kubernetes secret with the config
+        },
+      },
+    },
+  };
+
+{ ['setup/0namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +
+{
+  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]
+  for name in std.filter((function(name) name != 'serviceMonitor'), std.objectFields(kp.prometheusOperator))
+} +
+// serviceMonitor is separated so that it can be created after the CRDs are ready
+{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +
+{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +
+{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +
+{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +
+{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
+{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +
+{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }
diff --git a/jsonnet/kube-prometheus/addons/thanos-sidecar.libsonnet b/jsonnet/kube-prometheus/addons/thanos-sidecar.libsonnet
index af6474d2dacb725dd75dfbe63a08c7ee6dd10567..64a1e1816be7eb511863271ba5aca81d43f38e0e 100644
--- a/jsonnet/kube-prometheus/addons/thanos-sidecar.libsonnet
+++ b/jsonnet/kube-prometheus/addons/thanos-sidecar.libsonnet
@@ -1,13 +1,10 @@
 (import 'github.com/thanos-io/thanos/mixin/alerts/sidecar.libsonnet') +
 {
   values+:: {
-    thanos+:: {
-      version: '0.14.0',
-      image: 'quay.io/thanos/thanos:v0.14.0',
-      objectStorageConfig: {
-        key: 'thanos.yaml',  // How the file inside the secret is called
-        name: 'thanos-objectstorage',  // This is the name of your Kubernetes secret with the config
-      },
+    thanos: {
+      version: error 'must provide thanos version',
+      image: error 'must provide thanos image',
+      objectStorageConfig: error 'must provide thanos object storage configuration',
     },
   },
   prometheus+: {
@@ -35,7 +32,7 @@
           { name: 'grpc', port: 10901, targetPort: 10901 },
           { name: 'http', port: 10902, targetPort: 10902 },
         ],
-        selector: { app: 'prometheus', prometheus: p.name },
+        selector: { app: 'prometheus', prometheus: p.config.name },
         clusterIP: 'None',
       },
     },