aboutsummaryrefslogtreecommitdiffstats
path: root/kubernetes/dcaegen2-services/common
diff options
context:
space:
mode:
Diffstat (limited to 'kubernetes/dcaegen2-services/common')
-rw-r--r--kubernetes/dcaegen2-services/common/Makefile15
-rw-r--r--kubernetes/dcaegen2-services/common/dcaegen2-services-common/templates/_configmap.tpl3
-rw-r--r--kubernetes/dcaegen2-services/common/dcaegen2-services-common/templates/_deployment.tpl12
3 files changed, 26 insertions, 4 deletions
diff --git a/kubernetes/dcaegen2-services/common/Makefile b/kubernetes/dcaegen2-services/common/Makefile
index 4a6491d8cc..db8704c2ca 100644
--- a/kubernetes/dcaegen2-services/common/Makefile
+++ b/kubernetes/dcaegen2-services/common/Makefile
@@ -22,11 +22,18 @@ HELM_REPO := local
EXCLUDES :=
HELM_BIN := helm
+# Helm v2 and helm v3 uses different version format so we first try in helm v3 format
+# and if it fails then we fallback to helm v2 one
+HELM_VER := $(shell $(HELM_BIN) version --template "{{.Version}}" 2>/dev/null)
+ifneq "$(findstring v3,$(HELM_VER))" "v3"
+ HELM_VER := $(shell $(HELM_BIN) version -c --template "{{.Client.SemVer}}")
+endif
+
HELM_CHARTS := $(filter-out $(EXCLUDES), $(sort $(patsubst %/.,%,$(wildcard */.))))
.PHONY: $(EXCLUDES) $(HELM_CHARTS)
-all: $(HELM_CHARTS)
+all: $(HELM_CHARTS) helm-repo-update
$(HELM_CHARTS):
@echo "\n[$@]"
@@ -50,5 +57,11 @@ clean:
@rm -f */requirements.lock
@rm -f *tgz */charts/*tgz
@rm -rf $(PACKAGE_DIR)
+
+helm-repo-update:
+ifeq "$(findstring v3,$(HELM_VER))" "v3"
+ @$(HELM_BIN) repo update
+endif
+
%:
@:
diff --git a/kubernetes/dcaegen2-services/common/dcaegen2-services-common/templates/_configmap.tpl b/kubernetes/dcaegen2-services/common/dcaegen2-services-common/templates/_configmap.tpl
index 46f52b805e..1dff4d0f77 100644
--- a/kubernetes/dcaegen2-services/common/dcaegen2-services-common/templates/_configmap.tpl
+++ b/kubernetes/dcaegen2-services/common/dcaegen2-services-common/templates/_configmap.tpl
@@ -40,6 +40,7 @@ information for the logging sidecar.
*/}}
{{- define "dcaegen2-services-common.configMap" -}}
+{{- $appConf := .Values.applicationConfig | default (dict) -}}
apiVersion: v1
kind: ConfigMap
metadata:
@@ -48,7 +49,7 @@ metadata:
labels: {{ include "common.labels" . | nindent 6 }}
data:
application_config.yaml: |
-{{ .Values.applicationConfig | toYaml | indent 4 }}
+{{ $appConf | toYaml | indent 4 }}
{{- if .Values.logDirectory }}
---
diff --git a/kubernetes/dcaegen2-services/common/dcaegen2-services-common/templates/_deployment.tpl b/kubernetes/dcaegen2-services/common/dcaegen2-services-common/templates/_deployment.tpl
index 328a4c625f..ffff46fab5 100644
--- a/kubernetes/dcaegen2-services/common/dcaegen2-services-common/templates/_deployment.tpl
+++ b/kubernetes/dcaegen2-services/common/dcaegen2-services-common/templates/_deployment.tpl
@@ -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.
-.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
@@ -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.
+ - 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:
@@ -101,16 +106,19 @@ externalVolumes:
- 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" }}
- {{- $vname := (tpl $vol.name $global) }}
+ {{- $vname := (tpl $vol.name $global) -}}
+ {{- $opt := hasKey $vol "optional" | ternary $vol.optional true }}
- configMap:
defaultMode: 420
name: {{ $vname }}
+ optional: {{ $opt }}
name: {{ $vname }}
{{- end }}
{{- end }}