From 066b04322d62605f203637574ffbf645597b5fca Mon Sep 17 00:00:00 2001
From: Frederic Branczyk <fbranczyk@gmail.com>
Date: Thu, 6 Apr 2017 15:24:22 +0200
Subject: [PATCH] grafana-watcher: allow credentials from env variable

---
 .../generate-grafana-credentials-secret.sh    | 20 +++++++++++++
 hack/scripts/generate-manifests.sh            |  3 ++
 manifests/grafana/grafana-credentials.yaml    |  7 +++++
 manifests/grafana/grafana-deployment.yaml     | 30 ++++++++++++++++---
 4 files changed, 56 insertions(+), 4 deletions(-)
 create mode 100755 hack/scripts/generate-grafana-credentials-secret.sh
 create mode 100644 manifests/grafana/grafana-credentials.yaml

diff --git a/hack/scripts/generate-grafana-credentials-secret.sh b/hack/scripts/generate-grafana-credentials-secret.sh
new file mode 100755
index 00000000..e877b080
--- /dev/null
+++ b/hack/scripts/generate-grafana-credentials-secret.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+if [ "$#" -ne 2 ]; then
+    echo "Usage: $0 user password"
+    exit 1
+fi
+
+user=$1
+password=$2
+
+cat <<-EOF
+apiVersion: v1
+kind: Secret
+metadata:
+  name: grafana-credentials
+data:
+  user: $(echo -n ${user} | base64 --wrap=0)
+  password: $(echo -n ${password} | base64 --wrap=0)
+EOF
+
diff --git a/hack/scripts/generate-manifests.sh b/hack/scripts/generate-manifests.sh
index bf5f42fa..280bc121 100755
--- a/hack/scripts/generate-manifests.sh
+++ b/hack/scripts/generate-manifests.sh
@@ -6,6 +6,9 @@ hack/scripts/generate-rules-configmap.sh > manifests/prometheus/prometheus-k8s-r
 # Generate Dashboard ConfigMap
 hack/scripts/generate-dashboards-configmap.sh > manifests/grafana/grafana-dashboards.yaml
 
+# Generate Grafana Credentials Secret
+hack/scripts/generate-grafana-credentials-secret.sh admin admin > manifests/grafana/grafana-credentials.yaml
+
 # Generate Secret for Alertmanager config
 hack/scripts/generate-alertmanager-config-secret.sh > manifests/alertmanager/alertmanager-config.yaml
 
diff --git a/manifests/grafana/grafana-credentials.yaml b/manifests/grafana/grafana-credentials.yaml
new file mode 100644
index 00000000..c3da1b63
--- /dev/null
+++ b/manifests/grafana/grafana-credentials.yaml
@@ -0,0 +1,7 @@
+apiVersion: v1
+kind: Secret
+metadata:
+  name: grafana-credentials
+data:
+  user: YWRtaW4=
+  password: YWRtaW4=
diff --git a/manifests/grafana/grafana-deployment.yaml b/manifests/grafana/grafana-deployment.yaml
index b727561c..e83d265d 100644
--- a/manifests/grafana/grafana-deployment.yaml
+++ b/manifests/grafana/grafana-deployment.yaml
@@ -17,6 +17,16 @@ spec:
           value: "true"
         - name: GF_AUTH_ANONYMOUS_ENABLED
           value: "true"
+        - name: GF_SECURITY_ADMIN_USER
+          valueFrom:
+            secretKeyRef:
+              name: grafana-credentials
+              key: user
+        - name: GF_SECURITY_ADMIN_PASSWORD
+          valueFrom:
+            secretKeyRef:
+              name: grafana-credentials
+              key: password
         volumeMounts:
         - name: grafana-storage
           mountPath: /var/grafana-storage
@@ -28,13 +38,25 @@ spec:
             memory: 100Mi
             cpu: 100m
           limits:
-            memory: 300Mi
-            cpu: 300m
+            memory: 200Mi
+            cpu: 200m
       - name: grafana-watcher
-        image: quay.io/coreos/grafana-watcher:v0.0.2
+        image: quay.io/coreos/grafana-watcher:v0.0.3
+        imagePullPolicy: Never
         args:
           - '--watch-dir=/var/grafana-dashboards'
-          - '--grafana-url=http://admin:admin@localhost:3000'
+          - '--grafana-url=http://localhost:3000'
+        env:
+        - name: GRAFANA_USER
+          valueFrom:
+            secretKeyRef:
+              name: grafana-credentials
+              key: user
+        - name: GRAFANA_PASSWORD
+          valueFrom:
+            secretKeyRef:
+              name: grafana-credentials
+              key: password
         volumeMounts:
         - name: grafana-dashboards
           mountPath: /var/grafana-dashboards
-- 
GitLab