Skip to content

Commit 9b75510

Browse files
Add Helm overrides for env vars, volumes and volume mounts (#449)
Issue #, if available: aws-controllers-k8s/community#919 Description of changes: Adds additional Helm chart value overrides for deployment environment variables, volumes and volume mounts. When deploying the `s3-controller` with the following `values.yaml` overrides: ```yaml deployment: extraVolumes: - name: test-volume secret: secretName: test-secret extraVolumeMounts: - name: test-volume-mount mountPath: /root/ extraEnvVars: - name: SOMEVAR value: somevalue - name: PASSWORD valueFrom: secretKeyRef: name: mysecret key: password optional: false ``` `helm template` produces the following output: ```yaml # Source: s3-chart/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: release-name-s3-chart namespace: default labels: app.kubernetes.io/name: s3-chart app.kubernetes.io/instance: release-name app.kubernetes.io/managed-by: Helm app.kubernetes.io/version: "1.0.4" k8s-app: s3-chart helm.sh/chart: s3-chart-1.0.4 spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: s3-chart app.kubernetes.io/instance: release-name template: metadata: labels: app.kubernetes.io/name: s3-chart app.kubernetes.io/instance: release-name app.kubernetes.io/managed-by: Helm k8s-app: s3-chart spec: serviceAccountName: ack-s3-controller containers: - command: - ./bin/controller args: - --aws-region - "$(AWS_REGION)" - --aws-endpoint-url - "$(AWS_ENDPOINT_URL)" - --enable-development-logging - "$(ACK_ENABLE_DEVELOPMENT_LOGGING)" - --log-level - "$(ACK_LOG_LEVEL)" - --resource-tags - "$(ACK_RESOURCE_TAGS)" - --watch-namespace - "$(ACK_WATCH_NAMESPACE)" - --deletion-policy - "$(DELETION_POLICY)" image: public.ecr.aws/aws-controllers-k8s/s3-controller:1.0.4 imagePullPolicy: IfNotPresent name: controller ports: - name: http containerPort: 8080 resources: limits: cpu: 100m memory: 128Mi requests: cpu: 50m memory: 64Mi env: - name: ACK_SYSTEM_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: AWS_REGION value: - name: AWS_ENDPOINT_URL value: "" - name: ACK_WATCH_NAMESPACE value: - name: DELETION_POLICY value: delete - name: ACK_ENABLE_DEVELOPMENT_LOGGING value: "false" - name: ACK_LOG_LEVEL value: "info" - name: ACK_RESOURCE_TAGS value: "services.k8s.aws/controller-version=%CONTROLLER_SERVICE%-%CONTROLLER_VERSION%,services.k8s.aws/namespace=%K8S_NAMESPACE%" - name: SOMEVAR value: somevalue - name: PASSWORD valueFrom: secretKeyRef: key: password name: mysecret optional: false volumeMounts: - mountPath: /root/ name: test-volume-mount securityContext: allowPrivilegeEscalation: false privileged: false runAsNonRoot: true capabilities: drop: - ALL securityContext: seccompProfile: type: RuntimeDefault terminationGracePeriodSeconds: 10 nodeSelector: kubernetes.io/os: linux hostIPC: false hostNetwork: false hostPID: false volumes: - name: test-volume secret: secretName: test-secret ``` By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
1 parent dbc9ad5 commit 9b75510

File tree

3 files changed

+43
-1
lines changed

3 files changed

+43
-1
lines changed

templates/helm/templates/deployment.yaml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@ spec:
1818
app.kubernetes.io/instance: {{ .Release.Name }}
1919
template:
2020
metadata:
21+
{{- if .Values.deployment.annotations }}
2122
annotations:
2223
{{- range $key, $value := .Values.deployment.annotations }}
2324
{{ $key }}: {{ $value | quote }}
2425
{{- end }}
26+
{{- end }}
2527
labels:
2628
app.kubernetes.io/name: {{ include "app.name" . }}
2729
app.kubernetes.io/instance: {{ .Release.Name }}
@@ -104,11 +106,19 @@ spec:
104106
value: {{ include "aws.credentials.path" . }}
105107
- name: AWS_PROFILE
106108
value: {{ .Values.aws.credentials.profile }}
109+
{{- end }}
110+
{{- if .Values.deployment.extraEnvVars -}}
111+
{{ toYaml .Values.deployment.extraEnvVars | nindent 8 }}
112+
{{- end }}
107113
volumeMounts:
114+
{{- if .Values.aws.credentials.secretName }}
108115
- name: {{ .Values.aws.credentials.secretName }}
109116
mountPath: {{ include "aws.credentials.secret_mount_path" . }}
110117
readOnly: true
111118
{{- end }}
119+
{{- if .Values.deployment.extraVolumeMounts -}}
120+
{{ toYaml .Values.deployment.extraVolumeMounts | nindent 12 }}
121+
{{- end }}
112122
securityContext:
113123
allowPrivilegeEscalation: false
114124
privileged: false
@@ -133,9 +143,12 @@ spec:
133143
hostIPC: false
134144
hostNetwork: false
135145
hostPID: false
136-
{{ if .Values.aws.credentials.secretName -}}
137146
volumes:
147+
{{- if .Values.aws.credentials.secretName -}}
138148
- name: {{ .Values.aws.credentials.secretName }}
139149
secret:
140150
secretName: {{ .Values.aws.credentials.secretName }}
141151
{{ end -}}
152+
{{- if .Values.deployment.extraVolumes }}
153+
{{ toYaml .Values.deployment.extraVolumes | indent 8}}
154+
{{- end }}

templates/helm/values.schema.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,15 @@
5858
},
5959
"priorityClassName": {
6060
"type": "string"
61+
},
62+
"extraVolumeMounts": {
63+
"type": "array"
64+
},
65+
"extraVolumes": {
66+
"type": "array"
67+
},
68+
"extraEnvVars": {
69+
"type": "array"
6170
}
6271
},
6372
"required": [

templates/helm/values.yaml.tpl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,26 @@ deployment:
2828
# Which priorityClassName to set?
2929
# See: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#pod-priority
3030
priorityClassName: ""
31+
extraVolumes: []
32+
extraVolumeMounts: []
33+
34+
# Additional server container environment variables
35+
#
36+
# You specify this manually like you would a raw deployment manifest.
37+
# This means you can bind in environment variables from secrets.
38+
#
39+
# e.g. static environment variable:
40+
# - name: DEMO_GREETING
41+
# value: "Hello from the environment"
42+
#
43+
# e.g. secret environment variable:
44+
# - name: USERNAME
45+
# valueFrom:
46+
# secretKeyRef:
47+
# name: mysecret
48+
# key: username
49+
extraEnvVars: []
50+
3151

3252
# If "installScope: cluster" then these labels will be applied to ClusterRole
3353
role:

0 commit comments

Comments
 (0)