Merge "[POLICY] Remove hardcoded credentials from policy-distribution"
diff --git a/kubernetes/policy/charts/policy-distribution/resources/config/config.json b/kubernetes/policy/charts/policy-distribution/resources/config/config.json
index 9062633..4c42ed2 100644
--- a/kubernetes/policy/charts/policy-distribution/resources/config/config.json
+++ b/kubernetes/policy/charts/policy-distribution/resources/config/config.json
@@ -21,8 +21,8 @@
     "restServerParameters":{
         "host":"0.0.0.0",
         "port":6969,
-        "userName":"healthcheck",
-        "password":"zb!XztG34",
+        "userName":"${RESTSERVER_USER}",
+        "password":"${RESTSERVER_PASSWORD}",
         "https":true
     },
     "receptionHandlerParameters":{
@@ -61,8 +61,8 @@
                 "messageBusAddress": [
                     "message-router"
                  ],
-                "user": "policy",
-                "password": "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U",
+                "user": "${SDCBE_USER}",
+                "password": "${SDCBE_PASSWORD}",
                 "pollingInterval":20,
                 "pollingTimeout":30,
                 "consumerId": "policy-id",
@@ -107,14 +107,14 @@
                 "apiParameters": {
                 "hostName": "policy-api",
                 "port": 6969,
-                  "userName": "healthcheck",
-                  "password": "zb!XztG34"
+                  "userName": "${API_USER}",
+                  "password": "${API_PASSWORD}"
                  },
                 "papParameters": {
                   "hostName": "policy-pap",
                   "port": 6969,
-                 "userName": "healthcheck",
-                "password": "zb!XztG34"
+                 "userName": "${PAP_USER}",
+                "password": "${PAP_PASSWORD}"
                 },
                 "isHttps": true,
                 "deployPolicies": true
diff --git a/kubernetes/policy/charts/policy-distribution/templates/deployment.yaml b/kubernetes/policy/charts/policy-distribution/templates/deployment.yaml
index 65961d8..b3b017a 100644
--- a/kubernetes/policy/charts/policy-distribution/templates/deployment.yaml
+++ b/kubernetes/policy/charts/policy-distribution/templates/deployment.yaml
@@ -16,6 +16,37 @@
         app: {{ include "common.name" . }}
         release: {{ include "common.release" . }}
     spec:
+      initContainers:
+      - command:
+        - sh
+        args:
+        - -c
+        - "cd /config-input && for PFILE in `ls -1`; do envsubst <${PFILE} >/config/${PFILE}; done"
+        env:
+        - name: RESTSERVER_USER
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "restserver-creds" "key" "login") | indent 10 }}
+        - name: RESTSERVER_PASSWORD
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "restserver-creds" "key" "password") | indent 10 }}
+        - name: API_USER
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "apiparameters-creds" "key" "login") | indent 10 }}
+        - name: API_PASSWORD
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "apiparameters-creds" "key" "password") | indent 10 }}
+        - name: PAP_USER
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "papparameters-creds" "key" "login") | indent 10 }}
+        - name: PAP_PASSWORD
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "papparameters-creds" "key" "password") | indent 10 }}
+        - name: SDCBE_USER
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "sdcbe-creds" "key" "login") | indent 10 }}
+        - name: SDCBE_PASSWORD
+          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "sdcbe-creds" "key" "password") | indent 10 }}
+        volumeMounts:
+        - mountPath: /config-input
+          name: distributionconfig-input
+        - mountPath: /config
+          name: distributionconfig
+        image: "{{ .Values.global.envsubstImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-update-config
       containers:
         - name: {{ include "common.name" . }}
           image: "{{ include "common.repository" . }}/{{ .Values.image }}"
@@ -58,9 +89,12 @@
         - name: localtime
           hostPath:
              path: /etc/localtime
-        - name: distributionconfig
+        - name: distributionconfig-input
           configMap:
             name: {{ include "common.fullname" . }}-configmap
             defaultMode: 0755
+        - name: distributionconfig
+          emptyDir:
+            medium: Memory
       imagePullSecrets:
       - name: "{{ include "common.namespace" . }}-docker-registry-key"
diff --git a/kubernetes/policy/charts/policy-distribution/templates/secrets.yaml b/kubernetes/policy/charts/policy-distribution/templates/secrets.yaml
new file mode 100644
index 0000000..bd7eb8e
--- /dev/null
+++ b/kubernetes/policy/charts/policy-distribution/templates/secrets.yaml
@@ -0,0 +1,15 @@
+# Copyright © 2020 Samsung Electronics
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+{{ include "common.secretFast" . }}
diff --git a/kubernetes/policy/charts/policy-distribution/values.yaml b/kubernetes/policy/charts/policy-distribution/values.yaml
index 835bfc4..c8d24e5 100644
--- a/kubernetes/policy/charts/policy-distribution/values.yaml
+++ b/kubernetes/policy/charts/policy-distribution/values.yaml
@@ -18,10 +18,40 @@
 #  ============LICENSE_END=========================================================
 
 #################################################################
+# Secrets metaconfig
+#################################################################
+secrets:
+  - uid: restserver-creds
+    type: basicAuth
+    externalSecret: '{{ tpl (default "" .Values.restServer.credsExternalSecret) . }}'
+    login: '{{ .Values.restServer.user }}'
+    password: '{{ .Values.restServer.password }}'
+    passwordPolicy: required
+  - uid: apiparameters-creds
+    type: basicAuth
+    externalSecret: '{{ tpl (default "" .Values.apiParameters.credsExternalSecret) . }}'
+    login: '{{ .Values.apiParameters.user }}'
+    password: '{{ .Values.apiParameters.password }}'
+    passwordPolicy: required
+  - uid: papparameters-creds
+    type: basicAuth
+    externalSecret: '{{ tpl (default "" .Values.papParameters.credsExternalSecret) . }}'
+    login: '{{ .Values.papParameters.user }}'
+    password: '{{ .Values.papParameters.password }}'
+    passwordPolicy: required
+  - uid: sdcbe-creds
+    type: basicAuth
+    externalSecret: '{{ tpl (default "" .Values.sdcBe.credsExternalSecret) . }}'
+    login: '{{ .Values.sdcBe.user }}'
+    password: '{{ .Values.sdcBe.password }}'
+    passwordPolicy: required
+
+#################################################################
 # Global configuration defaults.
 #################################################################
 global:
   persistence: {}
+  envsubstImage: dibi/envsubst
 
 #################################################################
 # Application configuration defaults.
@@ -36,6 +66,19 @@
 
 # application configuration
 
+restServer:
+  user: healthcheck
+  password: zb!XztG34
+apiParameters:
+  user: healthcheck
+  password: zb!XztG34
+papParameters:
+  user: healthcheck
+  password: zb!XztG34
+sdcBe:
+  user: policy
+  password: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+
 # default number of instances
 replicaCount: 1