Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
.tool-versions
.claude/
.idea/
6 changes: 6 additions & 0 deletions UPGRADE.md
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,12 @@ Note: The configmap is automatically mounted via `envFrom` when `configmap.enabl

- Each entry in `ingresses` list can now have its own `annotations` and `ingressClassName`.

### Per-container `uid`

- Each entry in the `containers` list now honors its own `uid`, rendered as `runAsUser`/`runAsGroup` on that container.
- The pod-level securityContext (`runAsUser`/`runAsGroup`/`fsGroup`) follows the first `containers` entry's `uid`, falling back to `container.uid` (default `1000`). Single-container charts run as the same uid as before; the only rendered difference is that each container's securityContext now also spells out `runAsUser`/`runAsGroup` (previously only the pod-level securityContext did).
- ⚠️ Previously `uid` on `containers` entries was silently ignored and those pods ran as `1000`. If you set `uid` on `containers` entries and relied on the old `1000` behavior (e.g. volume or file ownership, `fsGroup`-dependent mounts), verify ownership after upgrading.

### Cloud SQL Proxy v2 features

- Prometheus metrics exposed on port 9801 (`/metrics`).
Expand Down
4 changes: 4 additions & 0 deletions charts/common/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ meta.helm.sh/release-namespace: {{ empty .Release.Namespace| ternary .Release.Na
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
{{- with .uid }}
runAsUser: {{ . }}
runAsGroup: {{ . }}
{{- end }}
capabilities:
drop: ["ALL"]
seccompProfile:
Expand Down
7 changes: 4 additions & 3 deletions charts/common/templates/cron.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

{{- $releaseName := include "name" . -}}
{{- $containers := .Values.containers | default (list .Values.container) -}}
{{- $podUid := (first $containers).uid | default .Values.container.uid -}}
{{- $configmap := .Values.configmap -}}
{{- $postgres := .Values.postgres -}}
{{- $secrets := .Values.secrets -}}
Expand Down Expand Up @@ -89,10 +90,10 @@ spec:
{{- end }}
restartPolicy: {{ .Values.cron.restartPolicy | default "OnFailure" }}
securityContext:
runAsGroup: {{ .Values.container.uid }}
runAsGroup: {{ $podUid }}
runAsNonRoot: true
runAsUser: {{ .Values.container.uid }}
fsGroup: {{ .Values.container.uid }}
runAsUser: {{ $podUid }}
fsGroup: {{ $podUid }}
seccompProfile:
type: RuntimeDefault
{{- end -}}
7 changes: 4 additions & 3 deletions charts/common/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

{{- $releaseName := include "name" . -}}
{{- $containers := .Values.containers | default (list .Values.container) -}}
{{- $podUid := (first $containers).uid | default .Values.container.uid -}}
{{- $configmap := .Values.configmap -}}
{{- $postgres := .Values.postgres -}}
{{- $secrets := .Values.secrets -}}
Expand Down Expand Up @@ -129,10 +130,10 @@ spec:
{{- end }}
restartPolicy: Always
securityContext:
runAsGroup: {{ .Values.container.uid }}
runAsGroup: {{ $podUid }}
runAsNonRoot: true
runAsUser: {{ .Values.container.uid }}
fsGroup: {{ .Values.container.uid }}
runAsUser: {{ $podUid }}
fsGroup: {{ $podUid }}
seccompProfile:
type: RuntimeDefault
{{- end }}
28 changes: 27 additions & 1 deletion charts/common/tests/cron_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -282,4 +282,30 @@ tests:
asserts:
- equal:
path: spec.jobTemplate.spec.template.spec.containers[1].envFrom[0].secretRef.name
value: my-cron-creds
value: my-cron-creds
- it: honors uid per entry in the containers list
set:
containers:
- name: app
uid: 101
image: img
probes:
enabled: false
- name: sidecar
uid: 2000
image: img
probes:
enabled: false
asserts:
- equal:
path: spec.jobTemplate.spec.template.spec.securityContext.runAsUser
value: 101
- equal:
path: spec.jobTemplate.spec.template.spec.securityContext.fsGroup
value: 101
- equal:
path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsUser
value: 101
- equal:
path: spec.jobTemplate.spec.template.spec.containers[1].securityContext.runAsUser
value: 2000
64 changes: 64 additions & 0 deletions charts/common/tests/deployment_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -366,6 +366,70 @@ tests:
- equal:
path: spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation
value: false
- it: uses container uid in pod and container security context
set:
container:
uid: 101
image: img
asserts:
- equal:
path: spec.template.spec.securityContext.runAsUser
value: 101
- equal:
path: spec.template.spec.securityContext.fsGroup
value: 101
- equal:
path: spec.template.spec.containers[0].securityContext.runAsUser
value: 101
- it: honors uid per entry in the containers list
set:
containers:
- name: app
uid: 101
image: img
probes:
enabled: false
- name: sidecar
uid: 2000
image: img
probes:
enabled: false
- name: nouid
image: img
probes:
enabled: false
asserts:
- equal:
path: spec.template.spec.securityContext.runAsUser
value: 101
- equal:
path: spec.template.spec.securityContext.fsGroup
value: 101
- equal:
path: spec.template.spec.containers[0].securityContext.runAsUser
value: 101
- equal:
path: spec.template.spec.containers[1].securityContext.runAsUser
value: 2000
- equal:
path: spec.template.spec.containers[1].securityContext.runAsGroup
value: 2000
- notExists:
path: spec.template.spec.containers[2].securityContext.runAsUser
- it: defaults pod security context to uid 1000 when containers list sets no uid
set:
containers:
- name: app
image: img
probes:
enabled: false
asserts:
- equal:
path: spec.template.spec.securityContext.runAsUser
value: 1000
- equal:
path: spec.template.spec.securityContext.fsGroup
value: 1000
- it: has envFrom secrets in all containers
set:
containers:
Expand Down