diff --git a/production/helm/Chart.yaml b/production/helm/Chart.yaml
index 6eebbd45494fba9ddbc72ea8a9abdb915214dcd8..57501cb32caa4db855fa3f1ddcff3a8e8f4a8552 100644
--- a/production/helm/Chart.yaml
+++ b/production/helm/Chart.yaml
@@ -1,5 +1,5 @@
 name: loki
-version: 0.4.0
+version: 0.5.0
 appVersion: 0.0.1
 kubeVersion: "^1.10.0-0"
 description: "Loki: like Prometheus, but for logs."
diff --git a/production/helm/templates/promtail/configmap.yaml b/production/helm/templates/promtail/configmap.yaml
index 71d6c0617a331ee7e50c5d39f5e8cedd3907c889..25fdc366b687da676f2a33e55ba0d4e6d0db3d67 100644
--- a/production/helm/templates/promtail/configmap.yaml
+++ b/production/helm/templates/promtail/configmap.yaml
@@ -10,207 +10,5 @@ metadata:
     heritage: {{ .Release.Service }}
 data:
   promtail.yaml: |
-    backoff_config:
-      minbackoff: {{ .Values.promtail.config.backoff_config.minbackoff }}
-      maxbackoff: {{ .Values.promtail.config.backoff_config.maxbackoff }}
-      maxretries: {{ .Values.promtail.config.backoff_config.maxretries }}
-    server:
-      http_listen_port: {{ .Values.promtail.port }}
-    positions:
-      filename: /run/promtail/positions.yaml
-    scrape_configs:
-      - entry_parser: '{{ .Values.promtail.entryParser }}'
-        job_name: kubernetes-pods-name
-        kubernetes_sd_configs:
-        - role: pod
-        relabel_configs:
-        - source_labels:
-          - __meta_kubernetes_pod_label_name
-          target_label: __service__
-        - source_labels:
-          - __meta_kubernetes_pod_node_name
-          target_label: __host__
-        - action: drop
-          regex: ^$
-          source_labels:
-          - __service__
-        - action: replace
-          replacement: $1
-          separator: /
-          source_labels:
-          - __meta_kubernetes_namespace
-          - __service__
-          target_label: job
-        - action: replace
-          source_labels:
-          - __meta_kubernetes_namespace
-          target_label: namespace
-        - action: replace
-          source_labels:
-          - __meta_kubernetes_pod_name
-          target_label: instance
-        - action: replace
-          source_labels:
-          - __meta_kubernetes_pod_container_name
-          target_label: container_name
-        - action: labelmap
-          regex: __meta_kubernetes_pod_label_(.+)
-        - replacement: /var/log/pods/$1/*.log
-          separator: /
-          source_labels:
-          - __meta_kubernetes_pod_uid
-          - __meta_kubernetes_pod_container_name
-          target_label: __path__
-      - entry_parser: '{{ .Values.promtail.entryParser }}'
-        job_name: kubernetes-pods-app
-        kubernetes_sd_configs:
-        - role: pod
-        relabel_configs:
-        - action: drop
-          regex: .+
-          source_labels:
-          - __meta_kubernetes_pod_label_name
-        - source_labels:
-          - __meta_kubernetes_pod_label_app
-          target_label: __service__
-        - source_labels:
-          - __meta_kubernetes_pod_node_name
-          target_label: __host__
-        - action: drop
-          regex: ^$
-          source_labels:
-          - __service__
-        - action: replace
-          replacement: $1
-          separator: /
-          source_labels:
-          - __meta_kubernetes_namespace
-          - __service__
-          target_label: job
-        - action: replace
-          source_labels:
-          - __meta_kubernetes_namespace
-          target_label: namespace
-        - action: replace
-          source_labels:
-          - __meta_kubernetes_pod_name
-          target_label: instance
-        - action: replace
-          source_labels:
-          - __meta_kubernetes_pod_container_name
-          target_label: container_name
-        - action: labelmap
-          regex: __meta_kubernetes_pod_label_(.+)
-        - replacement: /var/log/pods/$1/*.log
-          separator: /
-          source_labels:
-          - __meta_kubernetes_pod_uid
-          - __meta_kubernetes_pod_container_name
-          target_label: __path__
-      - entry_parser: '{{ .Values.promtail.entryParser }}'
-        job_name: kubernetes-pods-direct-controllers
-        kubernetes_sd_configs:
-        - role: pod
-        relabel_configs:
-        - action: drop
-          regex: .+
-          separator: ''
-          source_labels:
-          - __meta_kubernetes_pod_label_name
-          - __meta_kubernetes_pod_label_app
-        - action: drop
-          regex: ^([0-9a-z-.]+)(-[0-9a-f]{8,10})$
-          source_labels:
-          - __meta_kubernetes_pod_controller_name
-        - source_labels:
-          - __meta_kubernetes_pod_controller_name
-          target_label: __service__
-        - source_labels:
-          - __meta_kubernetes_pod_node_name
-          target_label: __host__
-        - action: drop
-          regex: ^$
-          source_labels:
-          - __service__
-        - action: replace
-          replacement: $1
-          separator: /
-          source_labels:
-          - __meta_kubernetes_namespace
-          - __service__
-          target_label: job
-        - action: replace
-          source_labels:
-          - __meta_kubernetes_namespace
-          target_label: namespace
-        - action: replace
-          source_labels:
-          - __meta_kubernetes_pod_name
-          target_label: instance
-        - action: replace
-          source_labels:
-          - __meta_kubernetes_pod_container_name
-          target_label: container_name
-        - action: labelmap
-          regex: __meta_kubernetes_pod_label_(.+)
-        - replacement: /var/log/pods/$1/*.log
-          separator: /
-          source_labels:
-          - __meta_kubernetes_pod_uid
-          - __meta_kubernetes_pod_container_name
-          target_label: __path__
-      - entry_parser: '{{ .Values.promtail.entryParser }}'
-        job_name: kubernetes-pods-indirect-controller
-        kubernetes_sd_configs:
-        - role: pod
-        relabel_configs:
-        - action: drop
-          regex: .+
-          separator: ''
-          source_labels:
-          - __meta_kubernetes_pod_label_name
-          - __meta_kubernetes_pod_label_app
-        - action: keep
-          regex: ^([0-9a-z-.]+)(-[0-9a-f]{8,10})$
-          source_labels:
-          - __meta_kubernetes_pod_controller_name
-        - action: replace
-          regex: ^([0-9a-z-.]+)(-[0-9a-f]{8,10})$
-          source_labels:
-          - __meta_kubernetes_pod_controller_name
-          target_label: __service__
-        - source_labels:
-          - __meta_kubernetes_pod_node_name
-          target_label: __host__
-        - action: drop
-          regex: ^$
-          source_labels:
-          - __service__
-        - action: replace
-          replacement: $1
-          separator: /
-          source_labels:
-          - __meta_kubernetes_namespace
-          - __service__
-          target_label: job
-        - action: replace
-          source_labels:
-          - __meta_kubernetes_namespace
-          target_label: namespace
-        - action: replace
-          source_labels:
-          - __meta_kubernetes_pod_name
-          target_label: instance
-        - action: replace
-          source_labels:
-          - __meta_kubernetes_pod_container_name
-          target_label: container_name
-        - action: labelmap
-          regex: __meta_kubernetes_pod_label_(.+)
-        - replacement: /var/log/pods/$1/*.log
-          separator: /
-          source_labels:
-          - __meta_kubernetes_pod_uid
-          - __meta_kubernetes_pod_container_name
-          target_label: __path__
+    {{- tpl (toYaml .Values.promtail.config | nindent 4 ) . }}
 {{- end }}
diff --git a/production/helm/values.yaml b/production/helm/values.yaml
index ee7df7a8075d7ced0207dbe2eff6618efdda355d..a6b6ed1bcc339c95310e2b363777aa0b52c21fe3 100644
--- a/production/helm/values.yaml
+++ b/production/helm/values.yaml
@@ -134,20 +134,12 @@ promtail:
 
   entryParser: docker
 
-  config:
-    backoff_config:
-      # Initial backoff time between retries
-      minbackoff: 100ms
-      # Maximum backoff time between retries
-      maxbackoff: 5s
-      # Maximum number of retires when sending batches, 0 means infinite retries
-      maxretries: 5
-
   image:
     repository: grafana/promtail
     tag: latest
     pullPolicy: Always # Always pull while in BETA
 
+  # This should match promtail.config.server.http_listen_port
   port: 3101
 
   # Extra volumes to scrape logs from
@@ -213,3 +205,211 @@ promtail:
   ##
   affinity: {}
 
+  config:
+    client:
+      backoff_config:
+        # Initial backoff time between retries
+        minbackoff: 100ms
+        # Maximum backoff time between retries
+        maxbackoff: 5s
+        # Maximum number of retires when sending batches, 0 means infinite retries
+        maxretries: 5
+    server:
+      http_listen_port: 3101
+    positions:
+      filename: /run/promtail/positions.yaml
+    scrape_configs:
+      - entry_parser: '{{ .Values.promtail.entryParser }}'
+        job_name: kubernetes-pods-name
+        kubernetes_sd_configs:
+        - role: pod
+        relabel_configs:
+        - source_labels:
+          - __meta_kubernetes_pod_label_name
+          target_label: __service__
+        - source_labels:
+          - __meta_kubernetes_pod_node_name
+          target_label: __host__
+        - action: drop
+          regex: ^$
+          source_labels:
+          - __service__
+        - action: replace
+          replacement: $1
+          separator: /
+          source_labels:
+          - __meta_kubernetes_namespace
+          - __service__
+          target_label: job
+        - action: replace
+          source_labels:
+          - __meta_kubernetes_namespace
+          target_label: namespace
+        - action: replace
+          source_labels:
+          - __meta_kubernetes_pod_name
+          target_label: instance
+        - action: replace
+          source_labels:
+          - __meta_kubernetes_pod_container_name
+          target_label: container_name
+        - action: labelmap
+          regex: __meta_kubernetes_pod_label_(.+)
+        - replacement: /var/log/pods/$1/*.log
+          separator: /
+          source_labels:
+          - __meta_kubernetes_pod_uid
+          - __meta_kubernetes_pod_container_name
+          target_label: __path__
+      - entry_parser: '{{ .Values.promtail.entryParser }}'
+        job_name: kubernetes-pods-app
+        kubernetes_sd_configs:
+        - role: pod
+        relabel_configs:
+        - action: drop
+          regex: .+
+          source_labels:
+          - __meta_kubernetes_pod_label_name
+        - source_labels:
+          - __meta_kubernetes_pod_label_app
+          target_label: __service__
+        - source_labels:
+          - __meta_kubernetes_pod_node_name
+          target_label: __host__
+        - action: drop
+          regex: ^$
+          source_labels:
+          - __service__
+        - action: replace
+          replacement: $1
+          separator: /
+          source_labels:
+          - __meta_kubernetes_namespace
+          - __service__
+          target_label: job
+        - action: replace
+          source_labels:
+          - __meta_kubernetes_namespace
+          target_label: namespace
+        - action: replace
+          source_labels:
+          - __meta_kubernetes_pod_name
+          target_label: instance
+        - action: replace
+          source_labels:
+          - __meta_kubernetes_pod_container_name
+          target_label: container_name
+        - action: labelmap
+          regex: __meta_kubernetes_pod_label_(.+)
+        - replacement: /var/log/pods/$1/*.log
+          separator: /
+          source_labels:
+          - __meta_kubernetes_pod_uid
+          - __meta_kubernetes_pod_container_name
+          target_label: __path__
+      - entry_parser: '{{ .Values.promtail.entryParser }}'
+        job_name: kubernetes-pods-direct-controllers
+        kubernetes_sd_configs:
+        - role: pod
+        relabel_configs:
+        - action: drop
+          regex: .+
+          separator: ''
+          source_labels:
+          - __meta_kubernetes_pod_label_name
+          - __meta_kubernetes_pod_label_app
+        - action: drop
+          regex: ^([0-9a-z-.]+)(-[0-9a-f]{8,10})$
+          source_labels:
+          - __meta_kubernetes_pod_controller_name
+        - source_labels:
+          - __meta_kubernetes_pod_controller_name
+          target_label: __service__
+        - source_labels:
+          - __meta_kubernetes_pod_node_name
+          target_label: __host__
+        - action: drop
+          regex: ^$
+          source_labels:
+          - __service__
+        - action: replace
+          replacement: $1
+          separator: /
+          source_labels:
+          - __meta_kubernetes_namespace
+          - __service__
+          target_label: job
+        - action: replace
+          source_labels:
+          - __meta_kubernetes_namespace
+          target_label: namespace
+        - action: replace
+          source_labels:
+          - __meta_kubernetes_pod_name
+          target_label: instance
+        - action: replace
+          source_labels:
+          - __meta_kubernetes_pod_container_name
+          target_label: container_name
+        - action: labelmap
+          regex: __meta_kubernetes_pod_label_(.+)
+        - replacement: /var/log/pods/$1/*.log
+          separator: /
+          source_labels:
+          - __meta_kubernetes_pod_uid
+          - __meta_kubernetes_pod_container_name
+          target_label: __path__
+      - entry_parser: '{{ .Values.promtail.entryParser }}'
+        job_name: kubernetes-pods-indirect-controller
+        kubernetes_sd_configs:
+        - role: pod
+        relabel_configs:
+        - action: drop
+          regex: .+
+          separator: ''
+          source_labels:
+          - __meta_kubernetes_pod_label_name
+          - __meta_kubernetes_pod_label_app
+        - action: keep
+          regex: ^([0-9a-z-.]+)(-[0-9a-f]{8,10})$
+          source_labels:
+          - __meta_kubernetes_pod_controller_name
+        - action: replace
+          regex: ^([0-9a-z-.]+)(-[0-9a-f]{8,10})$
+          source_labels:
+          - __meta_kubernetes_pod_controller_name
+          target_label: __service__
+        - source_labels:
+          - __meta_kubernetes_pod_node_name
+          target_label: __host__
+        - action: drop
+          regex: ^$
+          source_labels:
+          - __service__
+        - action: replace
+          replacement: $1
+          separator: /
+          source_labels:
+          - __meta_kubernetes_namespace
+          - __service__
+          target_label: job
+        - action: replace
+          source_labels:
+          - __meta_kubernetes_namespace
+          target_label: namespace
+        - action: replace
+          source_labels:
+          - __meta_kubernetes_pod_name
+          target_label: instance
+        - action: replace
+          source_labels:
+          - __meta_kubernetes_pod_container_name
+          target_label: container_name
+        - action: labelmap
+          regex: __meta_kubernetes_pod_label_(.+)
+        - replacement: /var/log/pods/$1/*.log
+          separator: /
+          source_labels:
+          - __meta_kubernetes_pod_uid
+          - __meta_kubernetes_pod_container_name
+          target_label: __path__
diff --git a/production/ksonnet/promtail/config.libsonnet b/production/ksonnet/promtail/config.libsonnet
index 335531fb44d7a15cc11506ab6465f51882e09f4e..8b9f9a1f3d407bebb403039f3394e70581a9d9a9 100644
--- a/production/ksonnet/promtail/config.libsonnet
+++ b/production/ksonnet/promtail/config.libsonnet
@@ -13,11 +13,6 @@
       container_root_path: '/var/lib/docker',
       external_labels: {},
       entry_parser: 'docker',
-      backoff_config: {
-        minbackoff: 100ms,
-        maxbackoff: 5s,
-        maxretries: 5
-      }
     },
 
     service_url:
diff --git a/tools/scrape_config.sh b/tools/scrape_config.sh
index 14a8bfc739b768381be8688cd356f9f4f15dcf26..ebb945b767fa242e87ad0afb2ce3e4c42e1aaf14 100755
--- a/tools/scrape_config.sh
+++ b/tools/scrape_config.sh
@@ -19,30 +19,12 @@ case $target in
         ;;
 
     "helm")
-        cat <<EOF
-{{- if .Values.promtail.enabled }}
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: {{ template "promtail.fullname" . }}
-  labels:
-    app: {{ template "promtail.name" . }}
-    chart: {{ template "promtail.chart" . }}
-    release: {{ .Release.Name }}
-    heritage: {{ .Release.Service }}
-data:
-  promtail.yaml: |
-    scrape_configs:
-EOF
         (cd $BASE;
           jsonnet -e '((import "../production/ksonnet/promtail/scrape_config.libsonnet") + { _config:: { promtail_config: { entry_parser: "{{ .Values.promtail.entryParser }}"}}}).promtail_config' \
           | ytools 2>/dev/null \
           | tail -n +3 \
           | awk '{ print "      " $0 }' \
         )
-        cat <<EOF
-{{- end }}
-EOF
         ;;
     *)
         echo "unknown target. expected 'shell' or 'helm'"