Skip to content

Commit d0da0c0

Browse files
authored
Chart gitsync vars (apache#56245)
* make the variable name in .Values.dags.gitSync.credentials secret dependent on the GitSync version * update gitsync tests
1 parent 6d3e841 commit d0da0c0

4 files changed

Lines changed: 62 additions & 42 deletions

File tree

chart/templates/_helpers.yaml

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -255,27 +255,31 @@ If release name contains chart name it will be used as a full name.
255255
- name: GITSYNC_SSH_KNOWN_HOSTS
256256
value: "false"
257257
{{- end }}
258-
{{ else if .Values.dags.gitSync.credentialsSecret }}
259-
- name: GIT_SYNC_USERNAME
258+
{{- else if .Values.dags.gitSync.credentialsSecret }}
259+
{{- $tag := trimPrefix "v" .Values.images.gitSync.tag }}
260+
{{- if or (eq $tag "latest") (semverCompare ">=4.0.0" $tag) }}
261+
- name: GITSYNC_USERNAME
260262
valueFrom:
261263
secretKeyRef:
262264
name: {{ .Values.dags.gitSync.credentialsSecret | quote }}
263-
key: GIT_SYNC_USERNAME
264-
- name: GITSYNC_USERNAME
265+
key: GITSYNC_USERNAME
266+
- name: GITSYNC_PASSWORD
265267
valueFrom:
266268
secretKeyRef:
267269
name: {{ .Values.dags.gitSync.credentialsSecret | quote }}
268-
key: GITSYNC_USERNAME
269-
- name: GIT_SYNC_PASSWORD
270+
key: GITSYNC_PASSWORD
271+
{{- else }}
272+
- name: GIT_SYNC_USERNAME
270273
valueFrom:
271274
secretKeyRef:
272275
name: {{ .Values.dags.gitSync.credentialsSecret | quote }}
273-
key: GIT_SYNC_PASSWORD
274-
- name: GITSYNC_PASSWORD
276+
key: GIT_SYNC_USERNAME
277+
- name: GIT_SYNC_PASSWORD
275278
valueFrom:
276279
secretKeyRef:
277280
name: {{ .Values.dags.gitSync.credentialsSecret | quote }}
278-
key: GITSYNC_PASSWORD
281+
key: GIT_SYNC_PASSWORD
282+
{{- end }}
279283
{{- end }}
280284
- name: GIT_SYNC_REV
281285
value: {{ .Values.dags.gitSync.rev | quote }}

chart/values.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,9 @@ images:
124124
gitSync:
125125
repository: registry.k8s.io/git-sync/git-sync
126126
tag: v4.4.2
127+
# NOTE:
128+
# - If the tag is "v3.x.x" or any version < 4.0.0 - use GIT_SYNC_* env variables
129+
# - If the tag is "v4.x.x" or "latest" - use GITSYNC_* env variables
127130
pullPolicy: IfNotPresent
128131

129132
# Select certain nodes for airflow pods.

helm-tests/tests/helm_tests/airflow_aux/test_pod_template_file.py

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,15 @@ def test_validate_if_ssh_known_hosts_are_added(self):
254254
"readOnly": True,
255255
} in jmespath.search("spec.initContainers[0].volumeMounts", docs[0])
256256

257-
def test_should_set_username_and_pass_env_variables(self):
257+
@pytest.mark.parametrize(
258+
"tag,expected_prefix",
259+
[
260+
("v3.6.7", "GIT_SYNC_"),
261+
("v4.4.2", "GITSYNC_"),
262+
("latest", "GITSYNC_"),
263+
],
264+
)
265+
def test_should_set_username_and_pass_env_variables(self, tag, expected_prefix):
258266
docs = render_chart(
259267
values={
260268
"dags": {
@@ -263,30 +271,28 @@ def test_should_set_username_and_pass_env_variables(self):
263271
"credentialsSecret": "user-pass-secret",
264272
"sshKeySecret": None,
265273
}
266-
}
274+
},
275+
"images": {
276+
"gitSync": {
277+
"tag": tag,
278+
}
279+
},
267280
},
268281
show_only=["templates/pod-template-file.yaml"],
269282
chart_dir=self.temp_chart_dir,
270283
)
271284

272-
assert {
273-
"name": "GIT_SYNC_USERNAME",
274-
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": "GIT_SYNC_USERNAME"}},
275-
} in jmespath.search("spec.initContainers[0].env", docs[0])
276-
assert {
277-
"name": "GIT_SYNC_PASSWORD",
278-
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": "GIT_SYNC_PASSWORD"}},
279-
} in jmespath.search("spec.initContainers[0].env", docs[0])
285+
envs = jmespath.search("spec.initContainers[0].env", docs[0])
280286

281-
# Testing git-sync v4
282287
assert {
283-
"name": "GITSYNC_USERNAME",
284-
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": "GITSYNC_USERNAME"}},
285-
} in jmespath.search("spec.initContainers[0].env", docs[0])
288+
"name": f"{expected_prefix}USERNAME",
289+
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": f"{expected_prefix}USERNAME"}},
290+
} in envs
291+
286292
assert {
287-
"name": "GITSYNC_PASSWORD",
288-
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": "GITSYNC_PASSWORD"}},
289-
} in jmespath.search("spec.initContainers[0].env", docs[0])
293+
"name": f"{expected_prefix}PASSWORD",
294+
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": f"{expected_prefix}PASSWORD"}},
295+
} in envs
290296

291297
def test_should_set_the_dags_volume_claim_correctly_when_using_an_existing_claim(self):
292298
docs = render_chart(

helm-tests/tests/helm_tests/other/test_git_sync_scheduler.py

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from __future__ import annotations
1818

1919
import jmespath
20+
import pytest
2021
from chart_utils.helm_template_generator import render_chart
2122

2223

@@ -266,7 +267,15 @@ def test_validate_sshkeysecret_not_added_when_persistence_is_enabled(self):
266267
)
267268
assert "git-sync-ssh-key" not in jmespath.search("spec.template.spec.volumes[].name", docs[0])
268269

269-
def test_should_set_username_and_pass_env_variables(self):
270+
@pytest.mark.parametrize(
271+
"tag,expected_prefix",
272+
[
273+
("v3.6.7", "GIT_SYNC_"),
274+
("v4.4.2", "GITSYNC_"),
275+
("latest", "GITSYNC_"),
276+
],
277+
)
278+
def test_should_set_username_and_pass_env_variables_in_scheduler(self, tag, expected_prefix):
270279
docs = render_chart(
271280
values={
272281
"airflowVersion": "2.10.5",
@@ -277,28 +286,26 @@ def test_should_set_username_and_pass_env_variables(self):
277286
"sshKeySecret": None,
278287
}
279288
},
289+
"images": {
290+
"gitSync": {
291+
"tag": tag,
292+
}
293+
},
280294
},
281295
show_only=["templates/scheduler/scheduler-deployment.yaml"],
282296
)
283297

284-
assert {
285-
"name": "GIT_SYNC_USERNAME",
286-
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": "GIT_SYNC_USERNAME"}},
287-
} in jmespath.search("spec.template.spec.containers[1].env", docs[0])
288-
assert {
289-
"name": "GIT_SYNC_PASSWORD",
290-
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": "GIT_SYNC_PASSWORD"}},
291-
} in jmespath.search("spec.template.spec.containers[1].env", docs[0])
298+
envs = jmespath.search("spec.template.spec.containers[1].env", docs[0])
292299

293-
# Testing git-sync v4
294300
assert {
295-
"name": "GITSYNC_USERNAME",
296-
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": "GITSYNC_USERNAME"}},
297-
} in jmespath.search("spec.template.spec.containers[1].env", docs[0])
301+
"name": f"{expected_prefix}USERNAME",
302+
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": f"{expected_prefix}USERNAME"}},
303+
} in envs
304+
298305
assert {
299-
"name": "GITSYNC_PASSWORD",
300-
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": "GITSYNC_PASSWORD"}},
301-
} in jmespath.search("spec.template.spec.containers[1].env", docs[0])
306+
"name": f"{expected_prefix}PASSWORD",
307+
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": f"{expected_prefix}PASSWORD"}},
308+
} in envs
302309

303310
def test_should_set_the_volume_claim_correctly_when_using_an_existing_claim(self):
304311
docs = render_chart(

0 commit comments

Comments
 (0)