helm: Use k8s `EnvVar` for `proxy.ExperimentalEnv` (#11923)

PR #11874 introduced a `proxy.ExperimentalEnv` setting, allowing
arbitrary name+value environment variables on proxies. This name+value
pairing was a subset of k8s' environment variables, specifically, it did
not allow for `valueFrom.configMapKeyRef` and related fields. PR #11908
introduced this pattern in the ControlPlane containers.

Modify `proxy.ExperimentalEnv` to behave identically to k8s' native
`EnvVar`, allowing settings such as:
```
--set proxy.experimentalEnv[0].name=LINKERD2_PROXY_DEFROBINATION
--set proxy.experimentalEnv[0].valueFrom.configMapKeyRef.key=extreme-key
--set proxy.experimentalEnv[0].valueFrom.configMapKeyRef.name=extreme-config
```

Context:
https://github.com/linkerd/linkerd2/pull/11908#issuecomment-1888945793

Signed-off-by: Andrew Seigner <siggy@buoyant.io>
This commit is contained in:
Andrew Seigner 2024-01-15 10:03:11 +00:00 committed by GitHub
parent 391ce919f5
commit b9546af08f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 4 deletions

View File

@ -160,9 +160,8 @@ be used in other contexts.
- name: LINKERD2_PROXY_SHUTDOWN_GRACE_PERIOD
value: {{.Values.proxy.shutdownGracePeriod | quote}}
{{ end -}}
{{ range $k, $v := (.Values.proxy.experimentalEnv) -}}
- name: {{ $k }}
value: {{ $v | quote }}
{{ if .Values.proxy.experimentalEnv -}}
{{ toYaml .Values.proxy.experimentalEnv }}
{{ end -}}
image: {{.Values.proxy.image.name}}:{{.Values.proxy.image.version | default .Values.linkerdVersion}}
imagePullPolicy: {{.Values.proxy.image.pullPolicy | default .Values.imagePullPolicy}}

View File

@ -123,7 +123,7 @@ type (
StartupProbe *StartupProbe `json:"startupProbe"`
Control *ProxyControl `json:"control"`
ExperimentalEnv map[string]string `json:"experimentalEnv"`
ExperimentalEnv []corev1.EnvVar `json:"experimentalEnv"`
}
ProxyControl struct {