= k8s helm examples script pieces =

 * https://hackernoon.com/the-art-of-the-helm-chart-patterns-from-the-official-kubernetes-charts-8a7cafa86d12
 * Add extraEnv values to chart #1 with {{{

{{- range $key, $value := .Values.extraEnv -}}
- name: {{ $key }}
- value: {{ $value -}}
{{- end }}

}}}
 * Add extraEnv values to chart #2 as string and then parse through tpl(template) {{{
# in values.yaml
extraEnv: |
 - name: KEYCLOAK_LOGLEVEL
   value: DEBUG
 - name: HOSTNAME
   value: {{ .Release.Name }}-keycloak

# and in template
{{- with .Values.keycloak.extraEnv }}{{ tpl . $ | indent 12 }}{{- end }}
}}}

 * Referencing Mutually-deployed Resources e.g. db password {{{
# use trick above passing string that can be parsed in deployment and vars replaced
extraEnv: |. #String to be parsed through tpl
  - name: POSTGRES_USER
    value: {{ .Values.postgresql.postgresUser }}
  - name: POSTGRESS_PASSWORD
    valueFrom:
      secretKeyRef:
        name: {{ .Release.Name }}-postgresql
        key: postgres-password
}}}
 * parse vars into file imported into ConfigMap or Secret {{{
# https://stackoverflow.com/questions/47595295/how-do-i-load-multiple-templated-config-files-into-a-helm-chart/52009992#52009992
conf_file1: {{ tpl (.Files.Get "files/conf_file1") . | quote }}

#load into a Secret we need to encode the content in base64:
conf_file1: {{ tpl (.Files.Get "files/conf_file1") . | b64enc | quote }}

#load a set of files into a ConfigMap using .Files.Glob :
{{ (tpl (.Files.Glob "files/*").AsConfig . ) | indent 2 }}
}}}

 * To update deployment when a config, changes, add the sha1 of the config as annotation to deployment.
   * A change in the annotation will force a redeploy
   * e.g. deployment.yaml {{{
{{/* 1. Generate checksums for config changes once, then loop through deployments */}}
{{- define "config-checksums" }}
  {{- range $path, $bytes := $.Files.Glob "files/**" }}
{{- base $path }}={{ tpl ( $.Files.Get $path ) $ | sha1sum }}
  {{- end }}
{{- end }}
{{ $chk := include "config-checksums" . | sha1sum  }}
---
kind: Deployment
spec:
  template:
    metadata:
      annotations:
        config/checksums: {{ $chk }}
...
}}}

}}}