Skip to content

Conversation

@jscheffl
Copy link
Contributor

@jscheffl jscheffl commented Jan 25, 2026

As mentioned in Slack in release-management and discussed the recent changes in Helm Chart which move settings from workersection to worker.celery are breaking previous configurations for people upgrading...

This PR attempts to fix the Helm chart such that config is not a breaking change but stays backwards compatible.

It does so by reversing the order of priority and removing the defaults of the deprecated values.

FYI @jedcunningham @Miretpl

Note: I needed to disable 3 tests as it seems the implementation of "worker sets" is a bit limited. But for me fixing (short term) is not reasonable to make 1.19.0 release... as I see also a questionmark why different security settings per worker set or different configs for kerberosInit containers would be needed. This is "just a pragmatic move" and would propose the complexity to be cleaned in Helm Chart 2.0


Was generative AI tooling used to co-author this PR?
  • No (please specify the tool below)

  • Read the Pull Request Guidelines for more information. Note: commit author/co-author name and email in commits become permanently public when merged.
  • For fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
  • When adding dependency, check compliance with the ASF 3rd Party License Policy.
  • For significant user-facing changes create newsfragment: {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@boring-cyborg boring-cyborg bot added the area:helm-chart Airflow Helm Chart label Jan 25, 2026
@jscheffl jscheffl force-pushed the bugfix/ensure-backcompat-for-helm-celery-settings branch from 3b726d9 to 8c20bef Compare January 25, 2026 21:14
@jscheffl jscheffl marked this pull request as ready for review January 25, 2026 21:14
Comment on lines -25 to +26
{{- $mergedWorkers := (include "workersMergeValues" (list .Values.workers $filteredCelery "" (list "kerberosInitContainer")) | fromYaml) -}}
{{- $mergedWorkers := (include "workersMergeValues" (list $filteredCelery .Values.workers "" (list "kerberosInitContainer")) | fromYaml) -}}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer note: THis is the core change. All other adjustments are mainly fixes needed to make CI green

Comment on lines +1126 to +1141
# securityContexts is not working in worker sets, to be fixed in Helm Chart 2.0
# {
# "celery": {
# "enableDefault": False,
# "persistence": {"securityContexts": {"container": {"allowPrivilegeEscalation": True}}},
# "sets": [
# {
# "name": "set1",
# "persistence": {
# "fixPermissions": True,
# "securityContexts": {"container": {"allowPrivilegeEscalation": False}},
# },
# }
# ],
# }
# },
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't work due to a change in the logic. For the security context, the overwrite behaviour looks like:

workers.celery -> workers.celery.sets -> workers

instead of:

workers.celery.sets -> workers.celery -> workers

where overwrite logic is from left to right

Comment on lines +763 to +771
# kerberosInitContainer is not working in worker sets, to be fixed in Helm Chart 2.0
# if this actually makes sense and is needed at all. I mostly doubt.
# {
# "celery": {
# "enableDefault": False,
# "kerberosInitContainer": {"enabled": True},
# "sets": [{"name": "test", "kerberosInitContainer": {"enabled": False}}],
# }
# },
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say disabling makes sense; the other options do not (Kerberos container can be not needed e.g. in 2 worker sets out of 10, so it would be easier to specify a global setting and disable for some, but it can also be the other way around - at the end, I don't have a preference really).

It doesn't work due to the same change of logic, which I've mentioned in workers, but here also the if statement in templates has an effect.

Comment on lines 1714 to +1715
{"podManagementPolicy": "OrderedReady", "celery": {"podManagementPolicy": "Parallel"}},
"Parallel",
"OrderedReady",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

celery config, if specified, should not overwrite the workers config? 🤔 It makes the logic a little harder to follow, because in some cases we with have overwrite behaviour like (e.g. workers.command field):

workers.celery.sets -> workers.celery -> workers

and in the other cases (e.g. workers.podManagementPolicy):

workers.celery -> workers.celery.sets -> workers

@jscheffl
Copy link
Contributor Author

Closing as #61049 has been merged.

@jscheffl jscheffl closed this Jan 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:helm-chart Airflow Helm Chart

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants