feat(designate): allow users to provide configs in designate.conf.d

Allow users to provide additional projected volumes to be mounted into
the various deployments, statefulsets, and jobs that the designate chart has
in the /etc/designate/designate.conf.d/ path. This allows for users to provide
service account or database secrets via different operators as well as
provide ways to use the chart to define common deployments while being
able to have site specific overrides.

Change-Id: If3460aecde61078885480040daca1c9794c443e4
Signed-off-by: Mathieu Gagné <mgagne@calavera.ca>
This commit is contained in:
Mathieu Gagné
2026-02-26 15:50:42 -05:00
parent cd78f168ad
commit abdd69c978
15 changed files with 115 additions and 5 deletions

View File

@@ -17,7 +17,8 @@ COMMAND="${@:-start}"
function start () {
exec designate-central \
--config-file /etc/designate/designate.conf
--config-file /etc/designate/designate.conf \
--config-dir /etc/designate/designate.conf.d
}
function stop () {

View File

@@ -16,7 +16,8 @@ COMMAND="${@:-start}"
function start () {
designate-mdns \
--config-file /etc/designate/designate.conf
--config-file /etc/designate/designate.conf \
--config-dir /etc/designate/designate.conf.d
}
function stop () {

View File

@@ -15,7 +15,9 @@ set -ex
COMMAND="${@:-start}"
function start () {
designate-producer --config-file /etc/designate/designate.conf
designate-producer \
--config-file /etc/designate/designate.conf \
--config-dir /etc/designate/designate.conf.d
}
function stop () {

View File

@@ -6,4 +6,5 @@ set -ex
designate-manage \
--config-file /etc/designate/designate.conf \
--config-dir /etc/designate/designate.conf.d \
service clean

View File

@@ -15,7 +15,8 @@
set -ex
COMMAND="${@:-start}"
exec designate-sink \
--config-file /etc/designate/designate.conf
--config-file /etc/designate/designate.conf \
--config-dir /etc/designate/designate.conf.d
}
function stop () {

View File

@@ -16,7 +16,8 @@ COMMAND="${@:-start}"
function start () {
designate-worker \
--config-file /etc/designate/designate.conf
--config-file /etc/designate/designate.conf \
--config-dir /etc/designate/designate.conf.d
}
function stop () {

View File

@@ -6,6 +6,7 @@
{{- $mounts_designate_service_cleaner := .Values.pod.mounts.designate_service_cleaner.designate_service_cleaner }}
{{- $mounts_designate_service_cleaner_init := .Values.pod.mounts.designate_service_cleaner.init_container }}
{{- $etcSources := .Values.pod.etcSources.designate_service_cleaner }}
{{- $serviceAccountName := "designate-service-cleaner" }}
{{ tuple $envAll "service_cleaner" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
@@ -66,6 +67,9 @@ spec:
mountPath: /etc/designate/designate.conf
subPath: designate.conf
readOnly: true
- name: designate-etc-snippets
mountPath: /etc/designate/designate.conf.d/
readOnly: true
- name: designate-etc
mountPath: /etc/designate/api-paste.ini
subPath: api-paste.ini
@@ -94,5 +98,13 @@ spec:
secret:
secretName: designate-etc
defaultMode: 0444
- name: service-etc-snippets
{{- if $etcSources }}
projected:
sources:
{{ toYaml $etcSources | indent 18 }}
{{- else }}
emptyDir: {}
{{ end }}
{{ if $mounts_designate_service_cleaner.volumes }}{{ toYaml $mounts_designate_service_cleaner.volumes | indent 12 }}{{ end }}
{{- end }}

View File

@@ -14,6 +14,7 @@
{{- $envAll := . }}
{{- $mounts_designate_api := .Values.pod.mounts.designate_api.designate_api }}
{{- $mounts_designate_api_init := .Values.pod.mounts.designate_api.init_container }}
{{- $etcSources := .Values.pod.etcSources.designate_api }}
{{- $serviceAccountName := "designate-api" }}
{{ tuple $envAll "api" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
@@ -89,6 +90,9 @@ spec:
mountPath: /etc/designate/designate.conf
subPath: designate.conf
readOnly: true
- name: designate-etc-snippets
mountPath: /etc/designate/designate.conf.d/
readOnly: true
- name: designate-etc
mountPath: /etc/designate/api-paste.ini
subPath: api-paste.ini
@@ -123,5 +127,13 @@ spec:
secret:
secretName: designate-etc
defaultMode: 0444
- name: designate-etc-snippets
{{- if $etcSources }}
projected:
sources:
{{ toYaml $etcSources | indent 14 }}
{{- else }}
emptyDir: {}
{{ end }}
{{ if $mounts_designate_api.volumes }}{{ toYaml $mounts_designate_api.volumes | indent 8 }}{{ end }}
{{- end }}

View File

@@ -14,6 +14,7 @@
{{- $envAll := . }}
{{- $mounts_designate_central := .Values.pod.mounts.designate_central.designate_central }}
{{- $mounts_designate_central_init := .Values.pod.mounts.designate_central.init_container }}
{{- $etcSources := .Values.pod.etcSources.designate_central }}
{{- $serviceAccountName := "designate-central" }}
{{ tuple $envAll "central" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
@@ -74,6 +75,9 @@ spec:
mountPath: /etc/designate/designate.conf
subPath: designate.conf
readOnly: true
- name: designate-etc-snippets
mountPath: /etc/designate/designate.conf.d/
readOnly: true
- name: designate-etc
mountPath: /etc/designate/api-paste.ini
subPath: api-paste.ini
@@ -104,5 +108,13 @@ spec:
secret:
secretName: designate-etc
defaultMode: 0444
- name: designate-etc-snippets
{{- if $etcSources }}
projected:
sources:
{{ toYaml $etcSources | indent 14 }}
{{- else }}
emptyDir: {}
{{ end }}
{{ if $mounts_designate_central.volumes }}{{ toYaml $mounts_designate_central.volumes | indent 8 }}{{ end }}
{{- end }}

View File

@@ -14,6 +14,7 @@
{{- $envAll := . }}
{{- $mounts_designate_mdns := .Values.pod.mounts.designate_mdns.designate_mdns }}
{{- $mounts_designate_mdns_init := .Values.pod.mounts.designate_mdns.init_container }}
{{- $etcSources := .Values.pod.etcSources.designate_mdns }}
{{- $serviceAccountName := "designate-mdns" }}
{{ tuple $envAll "mdns" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
@@ -85,6 +86,9 @@ spec:
mountPath: /etc/designate/designate.conf
subPath: designate.conf
readOnly: true
- name: designate-etc-snippets
mountPath: /etc/designate/designate.conf.d/
readOnly: true
- name: designate-etc
mountPath: /etc/designate/api-paste.ini
subPath: api-paste.ini
@@ -115,5 +119,13 @@ spec:
secret:
secretName: designate-etc
defaultMode: 0444
- name: designate-etc-snippets
{{- if $etcSources }}
projected:
sources:
{{ toYaml $etcSources | indent 14 }}
{{- else }}
emptyDir: {}
{{ end }}
{{ if $mounts_designate_mdns.volumes }}{{ toYaml $mounts_designate_mdns.volumes | indent 8 }}{{ end }}
{{- end }}

View File

@@ -14,6 +14,7 @@
{{- $envAll := . }}
{{- $mounts_designate_producer := .Values.pod.mounts.designate_producer.designate_producer }}
{{- $mounts_designate_producer_init := .Values.pod.mounts.designate_producer.init_container }}
{{- $etcSources := .Values.pod.etcSources.designate_producer }}
{{- $serviceAccountName := "designate-producer" }}
{{ tuple $envAll "producer" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
@@ -74,6 +75,9 @@ spec:
mountPath: /etc/designate/designate.conf
subPath: designate.conf
readOnly: true
- name: designate-etc-snippets
mountPath: /etc/designate/designate.conf.d/
readOnly: true
- name: designate-etc
mountPath: /etc/designate/api-paste.ini
subPath: api-paste.ini
@@ -104,5 +108,13 @@ spec:
secret:
secretName: designate-etc
defaultMode: 0444
- name: designate-etc-snippets
{{- if $etcSources }}
projected:
sources:
{{ toYaml $etcSources | indent 14 }}
{{- else }}
emptyDir: {}
{{ end }}
{{ if $mounts_designate_producer.volumes }}{{ toYaml $mounts_designate_producer.volumes | indent 8 }}{{ end }}
{{- end }}

View File

@@ -14,6 +14,7 @@
{{- $envAll := . }}
{{- $mounts_designate_sink := .Values.pod.mounts.designate_sink.designate_sink }}
{{- $mounts_designate_sink_init := .Values.pod.mounts.designate_sink.init_container }}
{{- $etcSources := .Values.pod.etcSources.designate_sink }}
{{- $serviceAccountName := "designate-sink" }}
{{ tuple $envAll "sink" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
@@ -74,6 +75,9 @@ spec:
mountPath: /etc/designate/designate.conf
subPath: designate.conf
readOnly: true
- name: designate-etc-snippets
mountPath: /etc/designate/designate.conf.d/
readOnly: true
- name: designate-etc
mountPath: /etc/designate/policy.yaml
subPath: policy.yaml
@@ -100,5 +104,13 @@ spec:
secret:
secretName: designate-etc
defaultMode: 0444
- name: designate-etc-snippets
{{- if $etcSources }}
projected:
sources:
{{ toYaml $etcSources | indent 14 }}
{{- else }}
emptyDir: {}
{{ end }}
{{ if $mounts_designate_sink.volumes }}{{ toYaml $mounts_designate_sink.volumes | indent 8 }}{{ end }}
{{- end }}

View File

@@ -14,6 +14,7 @@
{{- $envAll := . }}
{{- $mounts_designate_worker := .Values.pod.mounts.designate_worker.designate_worker }}
{{- $mounts_designate_worker_init := .Values.pod.mounts.designate_worker.init_container }}
{{- $etcSources := .Values.pod.etcSources.designate_worker }}
{{- $serviceAccountName := "designate-worker" }}
{{ tuple $envAll "worker" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
@@ -99,6 +100,9 @@ spec:
mountPath: /etc/designate/designate.conf
subPath: designate.conf
readOnly: true
- name: designate-etc-snippets
mountPath: /etc/designate/designate.conf.d/
readOnly: true
- name: designate-etc
mountPath: /etc/designate/api-paste.ini
subPath: api-paste.ini
@@ -129,5 +133,13 @@ spec:
secret:
secretName: designate-etc
defaultMode: 0444
- name: designate-etc-snippets
{{- if $etcSources }}
projected:
sources:
{{ toYaml $etcSources | indent 14 }}
{{- else }}
emptyDir: {}
{{ end }}
{{ if $mounts_designate_worker.volumes }}{{ toYaml $mounts_designate_worker.volumes | indent 8 }}{{ end }}
{{- end }}

View File

@@ -116,6 +116,18 @@ pod:
designate_db_sync:
volumeMounts:
volumes:
# -- This allows users to add Kubernetes Projected Volumes to be mounted at /etc/designate/designate.conf.d/
## This is a list of projected volume source objects for each deployment/statefulset/daemonset/cronjob
## https://kubernetes.io/docs/concepts/storage/projected-volumes/
etcSources:
designate_api: []
designate_central: []
designate_mdns: []
designate_worker: []
designate_producer: []
designate_sink: []
designate_service_cleaner: []
designate_db_sync: []
replicas:
api: 1
central: 1

View File

@@ -0,0 +1,7 @@
---
designate:
- |
Allow users to add additional sources to the Projected Volume that is mounted
at /etc/designate/designate.conf.d/ so they may more easily override configs or provide
additional configs for the various services in the chart.
...