Skip to content

Commit 1583cb7

Browse files
authored
Reorder environment variables (#570)
* reorder environment variables * fixes
1 parent 47eb19b commit 1583cb7

File tree

20 files changed

+389
-103
lines changed

20 files changed

+389
-103
lines changed

changelog/v0.40.4/env-priority.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
changelog:
2+
- type: NON_USER_FACING
3+
description: >
4+
Reorder the priority of the environment variables to be loaded in the following order:
5+
1. Templated environment variables
6+
2. Environment variables
7+
3. Extra environment variables
8+
skipCI: "false"

codegen/cmd_test.go

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,66 @@ var _ = Describe("Cmd", func() {
4141
skv2Imports.External["github.com/solo-io/cue"] = []string{
4242
"encoding/protobuf/cue/cue.proto",
4343
}
44+
It("env variable priority", func() {
45+
cmd := &Command{
46+
Chart: &Chart{
47+
Data: Data{
48+
ApiVersion: "v1",
49+
Description: "",
50+
Name: "Painting Operator",
51+
Version: "v0.0.1",
52+
Home: "https://docs.solo.io/skv2/latest",
53+
Sources: []string{
54+
"https://github.com/solo-io/skv2",
55+
},
56+
},
57+
Operators: []Operator{{
58+
Name: "painter",
59+
Deployment: Deployment{
60+
Container: Container{
61+
Image: Image{Repository: "painter", Tag: "v0.0.1"},
62+
Env: []v1.EnvVar{{Name: "ENV_VAR", Value: "default"}},
63+
TemplateEnvVars: []TemplateEnvVar{
64+
{
65+
Condition: "$.Values.secret",
66+
Name: "ENV_VAR",
67+
Value: "templated",
68+
},
69+
},
70+
},
71+
},
72+
}},
73+
},
74+
ManifestRoot: "codegen/test/chart/env-priority",
75+
}
76+
Expect(cmd.Execute()).NotTo(HaveOccurred(), "failed to execute command")
77+
78+
manifests := helmTemplate("./test/chart/env-priority", map[string]any{"painter": map[string]any{"enabled": true}, "secret": true})
79+
var renderedDeployment *appsv1.Deployment
80+
decoder := kubeyaml.NewYAMLOrJSONDecoder(bytes.NewBuffer(manifests), 4096)
81+
for {
82+
obj := &unstructured.Unstructured{}
83+
err := decoder.Decode(obj)
84+
if err != nil {
85+
break
86+
}
87+
if obj.GetName() != "painter" || obj.GetKind() != "Deployment" {
88+
continue
89+
}
90+
91+
bytes, err := obj.MarshalJSON()
92+
Expect(err).NotTo(HaveOccurred())
93+
renderedDeployment = &appsv1.Deployment{}
94+
err = json.Unmarshal(bytes, renderedDeployment)
95+
Expect(err).NotTo(HaveOccurred())
96+
}
97+
Expect(renderedDeployment).NotTo(BeNil())
98+
99+
Expect(renderedDeployment.Spec.Template.Spec.Containers[0].Env).To(HaveLen(2))
100+
Expect(renderedDeployment.Spec.Template.Spec.Containers[0].Env[0]).To(Equal(v1.EnvVar{Name: "ENV_VAR", Value: "templated"}))
101+
Expect(renderedDeployment.Spec.Template.Spec.Containers[0].Env[1]).To(Equal(v1.EnvVar{Name: "ENV_VAR", Value: "default"}))
102+
})
103+
44104
It("install conditional sidecars", func() {
45105
agentConditional := "and ($.Values.glooAgent.enabled) ($.Values.glooAgent.runAsSidecar)"
46106

@@ -2255,7 +2315,9 @@ roleRef:
22552315
Value: "{{ $.Values.featureGates.Foo | quote }}",
22562316
},
22572317
},
2258-
nil),
2318+
[]v1.EnvVar{
2319+
{Name: "FEATURE_ENABLE_FOO", Value: "true"},
2320+
}),
22592321
Entry("when Env and TemplateEnvVar are specified, true value",
22602322
map[string]string{"Foo": "true"},
22612323
[]v1.EnvVar{

codegen/templates/chart/operator-deployment.yamltmpl

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -140,30 +140,34 @@ spec:
140140
containerPort: [[ $port.Port ]]
141141
[[- end ]]
142142
[[- end ]]
143-
{{- if [[ $containerVar ]].env }}
143+
[[- if or $container.Env $container.TemplateEnvVars ]]
144+
env:
145+
[[- else ]]
146+
{{- if or [[ $containerVar ]].env [[ $containerVar ]].extraEnvs }}
144147
env:
145-
{{ toYaml [[ $containerVar ]].env | indent 10 }}
148+
{{- end }}
149+
[[- end ]]
146150
[[- range $f := $container.TemplateEnvVars ]]
147-
[[- if $f.Condition ]]
148-
{{- if [[ $f.Condition ]] }}
149-
[[- end]]
150-
[[- if $f.Value ]]
151+
[[- if $f.Condition ]]
152+
{{- if [[ $f.Condition ]] }}
153+
[[- end ]]
154+
[[- if $f.Value ]]
151155
- name: [[ $f.Name ]]
152156
value: [[ $f.Value ]]
153-
[[- else if $f.ValueFrom ]]
157+
[[- else if $f.ValueFrom ]]
154158
- name: [[ $f.Name ]]
155159
valueFrom: [[ $f.ValueFrom | toYaml | nindent 14 ]]
156-
[[- end ]]
157-
[[- if $f.Condition ]]
158-
{{- end }}
159-
[[- end ]] [[/* end Condition */]]
160-
[[- end ]] [[/* end TemplateEnvVars */]]
161-
{{- else if [[ $containerVar ]].extraEnvs }}
162-
env:
160+
[[- end ]]
161+
[[- if $f.Condition ]]
162+
{{- end }}
163+
[[- end ]]
164+
[[- end ]]
165+
{{- if [[ $containerVar ]].env }}
166+
{{- toYaml [[ $containerVar ]].env | nindent 10 }}
163167
{{- end }}
164168
{{- range $name, $item := [[ $containerVar ]].extraEnvs }}
165169
- name: {{ $name }}
166-
{{- $item | toYaml | nindent 12 }}
170+
{{- $item | toYaml | nindent 12 }}
167171
{{- end }}
168172
[[- if $container.VolumeMounts ]]
169173
volumeMounts:

codegen/test/chart-conditional-deployment-strategy/templates/deployment.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,15 @@ spec:
4848
- name: painter
4949
image: {{ $painterImage.registry }}/{{ $painterImage.repository }}:{{ $painterImage.tag }}
5050
imagePullPolicy: {{ $painterImage.pullPolicy }}
51-
{{- if $painter.env }}
52-
env:
53-
{{ toYaml $painter.env | indent 10 }}
54-
{{- else if $painter.extraEnvs }}
51+
{{- if or $painter.env $painter.extraEnvs }}
5552
env:
53+
{{- end }}
54+
{{- if $painter.env }}
55+
{{- toYaml $painter.env | nindent 10 }}
5656
{{- end }}
5757
{{- range $name, $item := $painter.extraEnvs }}
5858
- name: {{ $name }}
59-
{{- $item | toYaml | nindent 12 }}
59+
{{- $item | toYaml | nindent 12 }}
6060
{{- end }}
6161
resources:
6262
{{- if $painter.resources }}

codegen/test/chart-deployment-strategy/templates/deployment.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,15 @@ spec:
4444
- name: painter
4545
image: {{ $painterImage.registry }}/{{ $painterImage.repository }}:{{ $painterImage.tag }}
4646
imagePullPolicy: {{ $painterImage.pullPolicy }}
47-
{{- if $painter.env }}
48-
env:
49-
{{ toYaml $painter.env | indent 10 }}
50-
{{- else if $painter.extraEnvs }}
47+
{{- if or $painter.env $painter.extraEnvs }}
5148
env:
49+
{{- end }}
50+
{{- if $painter.env }}
51+
{{- toYaml $painter.env | nindent 10 }}
5252
{{- end }}
5353
{{- range $name, $item := $painter.extraEnvs }}
5454
- name: {{ $name }}
55-
{{- $item | toYaml | nindent 12 }}
55+
{{- $item | toYaml | nindent 12 }}
5656
{{- end }}
5757
resources:
5858
{{- if $painter.resources }}

codegen/test/chart-envvars/templates/deployment.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,15 @@ spec:
4040
- name: painter
4141
image: {{ $painterImage.registry }}/{{ $painterImage.repository }}:{{ $painterImage.tag }}
4242
imagePullPolicy: {{ $painterImage.pullPolicy }}
43-
{{- if $painter.env }}
44-
env:
45-
{{ toYaml $painter.env | indent 10 }}
46-
{{- else if $painter.extraEnvs }}
43+
{{- if or $painter.env $painter.extraEnvs }}
4744
env:
45+
{{- end }}
46+
{{- if $painter.env }}
47+
{{- toYaml $painter.env | nindent 10 }}
4848
{{- end }}
4949
{{- range $name, $item := $painter.extraEnvs }}
5050
- name: {{ $name }}
51-
{{- $item | toYaml | nindent 12 }}
51+
{{- $item | toYaml | nindent 12 }}
5252
{{- end }}
5353
resources:
5454
{{- if $painter.resources }}

codegen/test/chart-no-desc/templates/deployment.yaml

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,13 @@ spec:
5050
imagePullPolicy: {{ $painterImage.pullPolicy }}
5151
args:
5252
- foo
53-
{{- if $painter.env }}
54-
env:
55-
{{ toYaml $painter.env | indent 10 }}
56-
{{- else if $painter.extraEnvs }}
5753
env:
54+
{{- if $painter.env }}
55+
{{- toYaml $painter.env | nindent 10 }}
5856
{{- end }}
5957
{{- range $name, $item := $painter.extraEnvs }}
6058
- name: {{ $name }}
61-
{{- $item | toYaml | nindent 12 }}
59+
{{- $item | toYaml | nindent 12 }}
6260
{{- end }}
6361
resources:
6462
{{- if $painter.resources }}
@@ -105,15 +103,15 @@ spec:
105103
args:
106104
- bar
107105
- baz
108-
{{- if $palette.env }}
109-
env:
110-
{{ toYaml $palette.env | indent 10 }}
111-
{{- else if $palette.extraEnvs }}
106+
{{- if or $palette.env $palette.extraEnvs }}
112107
env:
108+
{{- end }}
109+
{{- if $palette.env }}
110+
{{- toYaml $palette.env | nindent 10 }}
113111
{{- end }}
114112
{{- range $name, $item := $palette.extraEnvs }}
115113
- name: {{ $name }}
116-
{{- $item | toYaml | nindent 12 }}
114+
{{- $item | toYaml | nindent 12 }}
117115
{{- end }}
118116
volumeMounts:
119117
- mountPath: /etc/paint

codegen/test/chart-pod-security-context/templates/deployment.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,15 @@ spec:
4343
- name: painter
4444
image: {{ $painterImage.registry }}/{{ $painterImage.repository }}:{{ $painterImage.tag }}
4545
imagePullPolicy: {{ $painterImage.pullPolicy }}
46-
{{- if $painter.env }}
47-
env:
48-
{{ toYaml $painter.env | indent 10 }}
49-
{{- else if $painter.extraEnvs }}
46+
{{- if or $painter.env $painter.extraEnvs }}
5047
env:
48+
{{- end }}
49+
{{- if $painter.env }}
50+
{{- toYaml $painter.env | nindent 10 }}
5151
{{- end }}
5252
{{- range $name, $item := $painter.extraEnvs }}
5353
- name: {{ $name }}
54-
{{- $item | toYaml | nindent 12 }}
54+
{{- $item | toYaml | nindent 12 }}
5555
{{- end }}
5656
resources:
5757
{{- if $painter.resources }}

codegen/test/chart-readiness/templates/deployment.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,15 @@ spec:
4040
- name: painter
4141
image: {{ $painterImage.registry }}/{{ $painterImage.repository }}:{{ $painterImage.tag }}
4242
imagePullPolicy: {{ $painterImage.pullPolicy }}
43-
{{- if $painter.env }}
44-
env:
45-
{{ toYaml $painter.env | indent 10 }}
46-
{{- else if $painter.extraEnvs }}
43+
{{- if or $painter.env $painter.extraEnvs }}
4744
env:
45+
{{- end }}
46+
{{- if $painter.env }}
47+
{{- toYaml $painter.env | nindent 10 }}
4848
{{- end }}
4949
{{- range $name, $item := $painter.extraEnvs }}
5050
- name: {{ $name }}
51-
{{- $item | toYaml | nindent 12 }}
51+
{{- $item | toYaml | nindent 12 }}
5252
{{- end }}
5353
resources:
5454
{{- if $painter.resources }}

codegen/test/chart-sidecar-svcport/templates/deployment.yaml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,15 @@ spec:
4040
- name: painter
4141
image: {{ $painterImage.registry }}/{{ $painterImage.repository }}:{{ $painterImage.tag }}
4242
imagePullPolicy: {{ $painterImage.pullPolicy }}
43-
{{- if $painter.env }}
44-
env:
45-
{{ toYaml $painter.env | indent 10 }}
46-
{{- else if $painter.extraEnvs }}
43+
{{- if or $painter.env $painter.extraEnvs }}
4744
env:
45+
{{- end }}
46+
{{- if $painter.env }}
47+
{{- toYaml $painter.env | nindent 10 }}
4848
{{- end }}
4949
{{- range $name, $item := $painter.extraEnvs }}
5050
- name: {{ $name }}
51-
{{- $item | toYaml | nindent 12 }}
51+
{{- $item | toYaml | nindent 12 }}
5252
{{- end }}
5353
resources:
5454
{{- if $painter.resources }}
@@ -86,15 +86,15 @@ spec:
8686
- name: sidecar-painter
8787
image: {{ $sidecarPainterImage.registry }}/{{ $sidecarPainterImage.repository }}:{{ $sidecarPainterImage.tag }}
8888
imagePullPolicy: {{ $sidecarPainterImage.pullPolicy }}
89-
{{- if $sidecarPainter.env }}
90-
env:
91-
{{ toYaml $sidecarPainter.env | indent 10 }}
92-
{{- else if $sidecarPainter.extraEnvs }}
89+
{{- if or $sidecarPainter.env $sidecarPainter.extraEnvs }}
9390
env:
91+
{{- end }}
92+
{{- if $sidecarPainter.env }}
93+
{{- toYaml $sidecarPainter.env | nindent 10 }}
9494
{{- end }}
9595
{{- range $name, $item := $sidecarPainter.extraEnvs }}
9696
- name: {{ $name }}
97-
{{- $item | toYaml | nindent 12 }}
97+
{{- $item | toYaml | nindent 12 }}
9898
{{- end }}
9999
resources:
100100
{{- if $sidecarPainter.resources }}

0 commit comments

Comments
 (0)