[DCAE] Updates to defaults for configmap 27/121727/12
authorJack Lucas <jflos@sonoris.net>
Mon, 7 Jun 2021 20:40:31 +0000 (16:40 -0400)
committerSylvain Desbureaux <sylvain.desbureaux@orange.com>
Wed, 30 Jun 2021 06:32:09 +0000 (06:32 +0000)
Make external configMaps optional by
default for microservices
Make applicationConfig an optional parameter
in values.yaml for microservices.

Issue-ID: DCAEGEN2-2770
Issue-ID: DCAEGEN2-2782
Signed-off-by: Jack Lucas <jflos@sonoris.net>
Change-Id: I80ec8e4a1d55201c5a174f50159bac171953b031

kubernetes/dcaegen2-services/common/dcaegen2-services-common/templates/_configmap.tpl
kubernetes/dcaegen2-services/common/dcaegen2-services-common/templates/_deployment.tpl

index 46f52b8..1dff4d0 100644 (file)
@@ -40,6 +40,7 @@ information for the logging sidecar.
 */}}
 
 {{- define "dcaegen2-services-common.configMap" -}}
 */}}
 
 {{- define "dcaegen2-services-common.configMap" -}}
+{{- $appConf := .Values.applicationConfig | default (dict) -}}
 apiVersion: v1
 kind: ConfigMap
 metadata:
 apiVersion: v1
 kind: ConfigMap
 metadata:
@@ -48,7 +49,7 @@ metadata:
     labels: {{ include "common.labels" . | nindent 6 }}
 data:
   application_config.yaml: |
     labels: {{ include "common.labels" . | nindent 6 }}
 data:
   application_config.yaml: |
-{{ .Values.applicationConfig | toYaml | indent 4 }}
+{{ $appConf | toYaml | indent 4 }}
 
 {{- if .Values.logDirectory }}
 ---
 
 {{- if .Values.logDirectory }}
 ---
index 328a4c6..ffff46f 100644 (file)
@@ -79,7 +79,7 @@ to give the microservice access to data in volumes created else.
 This initial implementation supports ConfigMaps only, as this is the only
 external volume mounting required by current microservices.
 
 This initial implementation supports ConfigMaps only, as this is the only
 external volume mounting required by current microservices.
 
-.Values.externalValues is a list of objects.  Each object has 3 required fields and 1 optional field:
+.Values.externalVolumes is a list of objects.  Each object has 3 required fields and 2 optional fields:
    - name: the name of the resource (in the current implementation, it must be a ConfigMap)
      that is to be set up as a volume.  The value is a case sensitive string.  Because the
      names of resources are sometimes set at deployment time (for instance, to prefix the Helm
    - name: the name of the resource (in the current implementation, it must be a ConfigMap)
      that is to be set up as a volume.  The value is a case sensitive string.  Because the
      names of resources are sometimes set at deployment time (for instance, to prefix the Helm
@@ -91,6 +91,11 @@ external volume mounting required by current microservices.
      value is a case-sensitive string.
    - readOnly: (Optional) Boolean flag.  Set to true to mount the volume as read-only.
      Defaults to false.
      value is a case-sensitive string.
    - readOnly: (Optional) Boolean flag.  Set to true to mount the volume as read-only.
      Defaults to false.
+   - optional: (Optional) Boolean flag.  Set to true to make the configMap optional (i.e., to allow the
+     microservice's pod to start even if the configMap doesn't exist).  If set to false, the configMap must
+     be present in order for the microservice's pod to start. Defaults to true.  (Note that this
+     default is the opposite of the Kubernetes default.  We've done this to be consistent with the behavior
+     of the DCAE Cloudify plugin for Kubernetes [k8splugin], which always set "optional" to true.)
 
 Here is an example fragment from a values.yaml file for a microservice:
 
 
 Here is an example fragment from a values.yaml file for a microservice:
 
@@ -101,16 +106,19 @@ externalVolumes:
   - name: '{{ include "common.release" . }}-another-example'
     type: configmap
     mountPath: /opt/app/otherconfig
   - name: '{{ include "common.release" . }}-another-example'
     type: configmap
     mountPath: /opt/app/otherconfig
+    optional: false
 */}}
 {{- define "dcaegen2-services-common._externalVolumes" -}}
   {{- $global := . -}}
   {{- if .Values.externalVolumes }}
     {{- range $vol := .Values.externalVolumes }}
       {{- if eq (lower $vol.type) "configmap" }}
 */}}
 {{- define "dcaegen2-services-common._externalVolumes" -}}
   {{- $global := . -}}
   {{- if .Values.externalVolumes }}
     {{- range $vol := .Values.externalVolumes }}
       {{- if eq (lower $vol.type) "configmap" }}
-        {{- $vname := (tpl $vol.name $global) }}
+        {{- $vname := (tpl $vol.name $global) -}}
+        {{- $opt := hasKey $vol "optional" | ternary $vol.optional true }}
 - configMap:
     defaultMode: 420
     name: {{ $vname }}
 - configMap:
     defaultMode: 420
     name: {{ $vname }}
+    optional: {{ $opt }}
   name: {{ $vname }}
       {{- end }}
     {{- end }}
   name: {{ $vname }}
       {{- end }}
     {{- end }}