Skip to content

Commit

Permalink
Add volumeClaimTemplate for worker in Helm chart (#34986)
Browse files Browse the repository at this point in the history
* Add volumeClaimTemplate for worker in Helm chart

---------

Co-authored-by: Isaac <kahhui.tee@cognixus.com>
Co-authored-by: Hussein Awala <hussein@awala.fr>
  • Loading branch information
3 people committed Oct 30, 2023
1 parent 77ae1de commit af99d5a
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 0 deletions.
3 changes: 3 additions & 0 deletions chart/templates/workers/worker-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -398,5 +398,8 @@ spec:
resources:
requests:
storage: {{ .Values.workers.persistence.size }}
{{- with .Values.workers.volumeClaimTemplates }}
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}
{{- end }}
34 changes: 34 additions & 0 deletions chart/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -2020,6 +2020,40 @@
],
"additionalProperties": false
}
},
"volumeClaimTemplates": {
"description": "Specify additional volume claim template for workers.",
"type": "array",
"default": [],
"items": {
"$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimTemplate"
},
"examples": [
{
"name": "data-volume-1",
"storageClassName": "storage-class-1",
"accessModes": [
"ReadWriteOnce"
],
"resources": {
"requests": {
"storage": "10Gi"
}
}
},
{
"name": "data-volume-2",
"storageClassName": "storage-class-2",
"accessModes": [
"ReadWriteOnce"
],
"resources": {
"requests": {
"storage": "20Gi"
}
}
}
]
}
}
},
Expand Down
25 changes: 25 additions & 0 deletions chart/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -729,6 +729,31 @@ workers:

env: []

volumeClaimTemplates: []
# Additional volumeClaimTemplates needed.
# Comment out the above and uncomment the section below to enable it.
# Add more as needed
# Make sure to mount it under extraVolumeMounts.
# volumeClaimTemplates:
# - metadata:
# name: data-volume-1
# spec:
# storageClassName: "storage-class-1"
# accessModes:
# - "ReadWriteOnce"
# resources:
# requests:
# storage: "10Gi"
# - metadata:
# name: data-volume-2
# spec:
# storageClassName: "storage-class-2"
# accessModes:
# - "ReadWriteOnce"
# resources:
# requests:
# storage: "20Gi"

# Airflow scheduler settings
scheduler:
# hostAliases for the scheduler pod
Expand Down
49 changes: 49 additions & 0 deletions helm_tests/airflow_core/test_worker.py
Original file line number Diff line number Diff line change
Expand Up @@ -667,6 +667,55 @@ def test_safetoevict_annotations(self, evictionStr, evictionBool):
== evictionStr
)

def test_should_add_extra_volume_claim_templates(self):
docs = render_chart(
values={
"executor": "CeleryExecutor",
"workers": {
"volumeClaimTemplates": [
{
"metadata": {"name": "test-volume-airflow-1"},
"spec": {
"storageClassName": "storage-class-1",
"accessModes": ["ReadWriteOnce"],
"resources": {"requests": {"storage": "10Gi"}},
},
},
{
"metadata": {"name": "test-volume-airflow-2"},
"spec": {
"storageClassName": "storage-class-2",
"accessModes": ["ReadWriteOnce"],
"resources": {"requests": {"storage": "20Gi"}},
},
},
]
},
},
show_only=["templates/workers/worker-deployment.yaml"],
)

assert "test-volume-airflow-1" == jmespath.search(
"spec.volumeClaimTemplates[1].metadata.name", docs[0]
)
assert "test-volume-airflow-2" == jmespath.search(
"spec.volumeClaimTemplates[2].metadata.name", docs[0]
)
assert "storage-class-1" == jmespath.search(
"spec.volumeClaimTemplates[1].spec.storageClassName", docs[0]
)
assert "storage-class-2" == jmespath.search(
"spec.volumeClaimTemplates[2].spec.storageClassName", docs[0]
)
assert ["ReadWriteOnce"] == jmespath.search("spec.volumeClaimTemplates[1].spec.accessModes", docs[0])
assert ["ReadWriteOnce"] == jmespath.search("spec.volumeClaimTemplates[2].spec.accessModes", docs[0])
assert "10Gi" == jmespath.search(
"spec.volumeClaimTemplates[1].spec.resources.requests.storage", docs[0]
)
assert "20Gi" == jmespath.search(
"spec.volumeClaimTemplates[2].spec.resources.requests.storage", docs[0]
)


class TestWorkerLogGroomer(LogGroomerTestBase):
"""Worker groomer."""
Expand Down

0 comments on commit af99d5a

Please sign in to comment.