Skip to content

Commit 734157e

Browse files
committed
feat: add secretsStoreCsiDriver integration (usages in azure)
1 parent ad099b9 commit 734157e

File tree

5 files changed

+87
-2
lines changed

5 files changed

+87
-2
lines changed

toggle-django-helm/templates/_helpers.tpl

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,17 @@ Create the name of the service account to use
4242
{{- end }}
4343
{{- end }}
4444

45+
{{/*
46+
Create the name of the secret to be used by the django-app
47+
*/}}
48+
{{- define "django-app.secretProviderName" -}}
49+
{{- if .Values.secretsStoreCsiDriverProviderName }}
50+
{{- .Values.secretsStoreCsiDriverProviderName -}}
51+
{{- else }}
52+
{{- printf "%s-secret-provider" (include "django-app.fullname" .) -}}
53+
{{- end -}}
54+
{{- end -}}
55+
4556
{{/*
4657
Create the name of the secret to be used by the django-app
4758
*/}}
@@ -151,18 +162,35 @@ Generate default labels for app deployments
151162
Generate default volumes for app deployments
152163
*/}}
153164
{{- define "django-app.appDefaultVolumes" -}}
154-
{{- if .Values.podVolumes }}
165+
{{- if or .Values.secretsStoreCsiDriver.create .Values.podVolumes -}}
155166
volumes:
167+
{{- if .Values.secretsStoreCsiDriver.create }}
168+
- name: {{ template "django-app.secretname" . }}
169+
csi:
170+
driver: "secrets-store.csi.k8s.io"
171+
readOnly: true
172+
volumeAttributes:
173+
secretProviderClass: {{ template "django-app.secretProviderName" . }}
174+
{{- end }}
175+
{{- if .Values.podVolumes }}
156176
{{ .Values.podVolumes | toYaml | indent 2 }}
157177
{{- end }}
158178
{{- end }}
179+
{{- end }}
159180

160181
{{/*
161182
Generate default volumes mounts for app deployments
162183
*/}}
163184
{{- define "django-app.appDefaultVolumeMounts" -}}
164-
{{- if .Values.podVolumeMounts }}
185+
{{- if or .Values.secretsStoreCsiDriver.create .Values.podVolumeMounts -}}
165186
volumeMounts:
187+
{{- if .Values.secretsStoreCsiDriver.create }}
188+
- name: {{ template "django-app.secretname" . }}
189+
mountPath: /mnt/secrets-store
190+
readOnly: true
191+
{{- end }}
192+
{{- if .Values.podVolumeMounts }}
166193
{{ .Values.podVolumeMounts | toYaml | indent 2 }}
167194
{{- end }}
168195
{{- end }}
196+
{{- end }}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{{- if .Values.secretsStoreCsiDriver.create -}}
2+
3+
apiVersion: secrets-store.csi.x-k8s.io/v1
4+
kind: SecretProviderClass
5+
metadata:
6+
name: {{ template "django-app.secretProviderName" . }}
7+
spec:
8+
provider: {{ .Values.secretsStoreCsiDriver.provider }}
9+
parameters:
10+
{{- with .Values.secretsStoreCsiDriver.parameters -}}
11+
{{ toYaml . | nindent 4 }}
12+
{{- end }}
13+
objects: |
14+
array:
15+
{{- range $secret_key, $object_key := .Values.secretsStoreCsiDriver.secretsKeyMap }}
16+
- |
17+
objectName: {{ $object_key }}
18+
objectType: secret
19+
{{- end }}
20+
secretObjects:
21+
- secretName: {{ template "django-app.secretname" . }}
22+
type: Opaque
23+
data:
24+
{{- range $secret_key, $object_key := .Values.secretsStoreCsiDriver.secretsKeyMap }}
25+
- objectName: {{ $object_key }}
26+
key: {{ $secret_key }}
27+
{{- end }}
28+
29+
{{- end }}

toggle-django-helm/templates/config/secret.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
{{- if not .Values.secretsStoreCsiDriver.create -}}
2+
13
kind: Secret
24
apiVersion: v1
35
metadata:
@@ -12,3 +14,5 @@ stringData:
1214
{{- range $name, $value := .Values.secrets }}
1315
{{ $name }}: {{ tpl $value $ | quote }}
1416
{{- end }}
17+
18+
{{- end }}

toggle-django-helm/tests/values-2.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,18 @@ secrets:
157157
AWS_S3_BUCKET_MEDIA_NAME: media-data
158158

159159

160+
# Azure configurations
161+
secretsStoreCsiDriver:
162+
create: true
163+
parameters:
164+
usePodIdentity: "false"
165+
clientID: "sample"
166+
keyvaultName: "sample"
167+
tenantId: ""
168+
secretsKeyMap:
169+
CACHE_REDIS_URL: CACHE-REDIS-URL
170+
CELERY_BROKER_URL: CELERY-BROKER-URL
171+
160172
serviceAccountName: ""
161173
serviceAccount:
162174
create: true

toggle-django-helm/values.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,4 +266,16 @@ serviceAccount:
266266
labels: {}
267267
automountServiceAccountToken: true
268268

269+
# Azure configurations
270+
secretsStoreCsiDriverProviderName: ""
271+
secretsStoreCsiDriver:
272+
create: false
273+
provider: azure # Only azure is supported
274+
parameters:
275+
usePodIdentity: "false"
276+
clientID: ""
277+
keyvaultName: ""
278+
tenantId: ""
279+
secretsKeyMap: {} # k8s Secret Key -> VaultKey
280+
269281
# extraManifests: [] or {}

0 commit comments

Comments
 (0)