summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
2810308)
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
*/}}
{{- 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:
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 }}
---
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
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:
- name: '{{ include "common.release" . }}-another-example'
type: configmap
mountPath: /opt/app/otherconfig
- name: '{{ include "common.release" . }}-another-example'
type: configmap
mountPath: /opt/app/otherconfig
*/}}
{{- 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 }}
name: {{ $vname }}
{{- end }}
{{- end }}
name: {{ $vname }}
{{- end }}
{{- end }}