This is an automated email from the ASF dual-hosted git repository.
jscheffl pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new d9b560cd2df Helm Chart Documentation Update (#66970)
d9b560cd2df is described below
commit d9b560cd2df484285b0377cbed73f2ac1267c664
Author: Przemysław Mirowski <[email protected]>
AuthorDate: Fri May 15 23:35:35 2026 +0200
Helm Chart Documentation Update (#66970)
* Finished workers sep & misc
* Parametrize helm/k8s version in doc
* Add deprecated parameters section
* Update providers versions to match Airflow support
* Parametrize settings resources doc
* Misc in upgrading airflow 3 doc
* Match min helm chart ver with CI
* Add newsfragment
* Template helm & depend k8s and helm on CI versions
---
chart/docs/conf.py | 9 ++++
chart/docs/customizing-labels.rst | 3 +-
chart/docs/customizing-workers.rst | 28 ++++++++-----
chart/docs/extending-the-chart.rst | 36 +++++++++-------
chart/docs/index.rst | 23 +++++++----
chart/docs/parameters-ref.rst | 40 +++++++++++++++++-
chart/docs/production-guide.rst | 11 +++--
chart/docs/quick-start.rst | 9 ++--
chart/docs/setting-resources-for-containers.rst | 55 ++++++++-----------------
chart/docs/upgrading-to-airflow-3.rst | 30 ++++++--------
chart/newsfragments/66970.significant.rst | 1 +
11 files changed, 146 insertions(+), 99 deletions(-)
diff --git a/chart/docs/conf.py b/chart/docs/conf.py
index 97e2c9dcfe7..03b9c014f86 100644
--- a/chart/docs/conf.py
+++ b/chart/docs/conf.py
@@ -38,6 +38,10 @@ import re
from typing import Any
import yaml
+from airflow_breeze.global_constants import (
+ ALLOWED_KUBERNETES_VERSIONS,
+ HELM_VERSION,
+)
from docs.utils.conf_constants import (
AIRFLOW_FAVICON_PATH,
AIRFLOW_REPO_ROOT_PATH,
@@ -300,6 +304,11 @@ jinja_contexts = {
"package_name": PACKAGE_NAME,
"package_version": PACKAGE_VERSION,
},
+ "global_ctx": {
+ "package_version": PACKAGE_VERSION,
+ "min_k8s_version": ALLOWED_KUBERNETES_VERSIONS[0],
+ "helm_version": HELM_VERSION,
+ },
}
diff --git a/chart/docs/customizing-labels.rst
b/chart/docs/customizing-labels.rst
index c31e6cb0893..70fe36fd1c2 100644
--- a/chart/docs/customizing-labels.rst
+++ b/chart/docs/customizing-labels.rst
@@ -21,7 +21,8 @@ Customizing Labels and Annotations for Pods
Customizing Pod Labels
----------------------
-The Helm Chart allows you to customize labels for your Airflow objects. You
can set global labels that apply to all objects and pods defined in the chart,
as well as component-specific labels for individual Airflow components.
+The Helm Chart allows you to customize labels for your Airflow objects. You
can set global labels that apply to all objects and pods defined in the chart,
+as well as component-specific labels for individual Airflow components.
Global Labels
~~~~~~~~~~~~~
diff --git a/chart/docs/customizing-workers.rst
b/chart/docs/customizing-workers.rst
index df4680d7741..9a201eb5111 100644
--- a/chart/docs/customizing-workers.rst
+++ b/chart/docs/customizing-workers.rst
@@ -19,20 +19,18 @@ Customizing Workers
===================
Both ``CeleryExecutor`` and ``KubernetesExecutor`` workers can be highly
customized with the :ref:`workers parameters <parameters:workers>`.
-For example, to set resources on workers:
+For example, to set resources on workers for CeleryExecutor:
.. code-block:: yaml
:caption: values.yaml
workers:
- resources:
- requests:
- cpu: 1
- limits:
- cpu: 1
-
-One notable exception for ``KubernetesExecutor`` is that the default
anti-affinity applied to ``CeleryExecutor`` workers to spread them across nodes
-is not applied to ``KubernetesExecutor`` workers, as there is no reason to
spread out per-task workers.
+ celery:
+ resources:
+ requests:
+ cpu: 1
+ limits:
+ cpu: 1
Custom ``pod_template_file``
----------------------------
@@ -43,8 +41,7 @@ worker types for ``KubernetesExecutor`` or if you need to
customize something no
.. note::
- Some configuration options between Celery and Kubernetes workers can be
overwritten by new ``workers.celery`` and ``workers.kubernetes`` sections.
- Implementation of ``workers.celery`` and ``workers.kubernetes`` is not yet
fully completed.
+ Configuration options between Celery and Kubernetes workers can be
overwritten by ``workers.celery`` and ``workers.kubernetes`` sections.
As an example, let's say you want to set ``priorityClassName`` on your workers:
@@ -71,3 +68,12 @@ As an example, let's say you want to set
``priorityClassName`` on your workers:
priorityClassName: high-priority
containers:
- name: base
+
+The same can be achieved with default `pod_template_file`_ by overriding the
``priorityClassName`` option for KubernetesExecutor like:
+
+.. code-block:: yaml
+ :caption: values.yaml
+
+ workers:
+ kubernetes:
+ priorityClassName: high-priority
diff --git a/chart/docs/extending-the-chart.rst
b/chart/docs/extending-the-chart.rst
index 930743bc62b..e368e019c20 100644
--- a/chart/docs/extending-the-chart.rst
+++ b/chart/docs/extending-the-chart.rst
@@ -21,7 +21,7 @@ Extending the Chart
The Airflow Helm Chart can be easily extended by creating a custom chart which
will depend on the Airflow chart.
That can be useful in cases where there is a need for custom templates
deployment (e.g. maintenance CronJobs),
which are not directly related to the Airflow Helm Chart and should not be
added to it in the source repository.
-During installation of custom chart, the Airflow chart will also be installed
too.
+During installation of custom chart, the Airflow chart will also be installed.
You can extend the official Airflow chart by applying the following steps.
@@ -55,17 +55,19 @@ This will give you the ability to add your custom templates
without the need to
In order to add the Airflow chart as a dependency (often called ``subcharts``)
to your chart,
add the following lines to your ``Chart.yaml`` file:
-.. code-block:: yaml
- :caption: Chart.yaml
+.. jinja:: global_ctx
+
+ .. code-block:: yaml
+ :caption: Chart.yaml
- dependencies:
- - name: airflow
- version: 1.11.0
- repository: https://airflow.apache.org
+ dependencies:
+ - name: airflow
+ version: {{ package_version }}
+ repository: https://airflow.apache.org
.. note::
- Make sure you have already added the Airflow repo locally by running:
``helm repo add apache-airflow https://airflow.apache.org``.
+ Make sure that you have already added the Airflow repo locally by running:
``helm repo add apache-airflow https://airflow.apache.org``.
.. tip::
@@ -76,14 +78,16 @@ Adding the Airflow chart as a dependency means that it will
be deployed together
You can disable the installation of Airflow by adding the ``condition`` field
to the ``dependencies`` section
like in the example below:
-.. code-block:: yaml
- :caption: Chart.yaml
+.. jinja:: global_ctx
+
+ .. code-block:: yaml
+ :caption: Chart.yaml
- dependencies:
- - name: airflow
- version: 1.11.0
- repository: https://airflow.apache.org
- condition: airflow.enabled
+ dependencies:
+ - name: airflow
+ version: {{ package_version }}
+ repository: https://airflow.apache.org
+ condition: airflow.enabled
This will check if the value of ``airflow.enabled`` inside your
``values.yaml`` is ``true``.
If it is, the Airflow chart will be deployed together with your custom chart.
@@ -101,7 +105,7 @@ you can download it by running the following command:
.. note::
- Make sure you are inside the directory which contains the ``Chart.yaml``
file.
+ Make sure that you are inside the directory which contains the
``Chart.yaml`` file.
The chart will be downloaded and saved inside the ``charts/`` directory.
diff --git a/chart/docs/index.rst b/chart/docs/index.rst
index bd7c6305dd3..ae8fc85a2b3 100644
--- a/chart/docs/index.rst
+++ b/chart/docs/index.rst
@@ -62,25 +62,24 @@ deployment on a `Kubernetes <http://kubernetes.io>`__
cluster using the
Requirements
------------
-- Kubernetes 1.30+ cluster
-- Helm 3.10+
-- PV provisioner support in the underlying infrastructure (optionally)
+.. jinja:: global_ctx
+
+ - Kubernetes {{ min_k8s_version }}+ cluster
+ - Helm {{ helm_version }}+
+ - PV provisioner support in the underlying infrastructure (optionally)
Features
--------
* Supported executors: ``LocalExecutor``, ``CeleryExecutor``,
``KubernetesExecutor``
* Supported multiple Executors
-* Supported AWS executors with AWS provider version ``8.21.0+``:
+* Supported AWS executors with AWS provider version ``9.18.0+``:
* ``airflow.providers.amazon.aws.executors.batch.AwsBatchExecutor``
* ``airflow.providers.amazon.aws.executors.ecs.AwsEcsExecutor``
-
-* Supported AWS executors with AWS provider version ``9.9.0+``:
-
*
``airflow.providers.amazon.aws.executors.aws_lambda.lambda_executor.AwsLambdaExecutor``
-* Supported Edge executor with edge3 provider version ``1.0.0+``:
+* Supported Edge executor with edge3 provider version ``1.6.0+``:
* ``airflow.providers.edge3.executors.EdgeExecutor``
@@ -190,6 +189,10 @@ This will run database migrations every time there is a
``Sync`` event in Argo C
If you use the ``CeleryExecutor`` with the built-in Redis, it is recommended
that you set up a static Redis password either by supplying
``redis.passwordSecretName`` and ``data.brokerUrlSecretName`` or
``redis.password``.
+.. note::
+
+ Due to security concerns, it is not advised to set sensitive values like
passwords within the ``values.yaml``.
+
.. note::
By default, Helm hooks are also enabled for ``extraSecrets`` or
``extraConfigMaps``. When using the above CI/CD tools, you might encounter
issues due to these default hooks.
@@ -224,6 +227,10 @@ It is not enabled by default as this may cause unexpected
behaviours on existing
For existing installations, all your resources will be recreated with a new
name and helm will delete previous resources.
+.. note::
+
+ In current ``useStandardNaming`` implementation, the standard name is not
affecting Kubernetes Service Accounts created by Airflow Helm Chart.
+
This won't delete existing PVCs for logs used by StatefulSets/Deployments, but
it will recreate them with brand new PVCs.
If you do want to preserve logs history you'll need to manually copy the data
of these volumes into the new volumes after
deployment. Depending on what storage backend/class you're using, this
procedure may vary. If you don't mind starting
diff --git a/chart/docs/parameters-ref.rst b/chart/docs/parameters-ref.rst
index 521bcd2abce..49fd609f839 100644
--- a/chart/docs/parameters-ref.rst
+++ b/chart/docs/parameters-ref.rst
@@ -38,19 +38,21 @@ The following tables lists the configurable parameters of
the Airflow chart and
- Default
{% for param in section["params"] %}
+ {% if "deprecated" not in param["description"] %}
+
* - ``{{ param["name"] }}``
- {{ param["description"] }}
- ``{{ param["default"] }}``
- {% if param["examples"] %}
+ {% if param["examples"] %}
.. code-block:: yaml
:caption: Examples
{{ param["examples"] | indent(width=10) }}
+ {% endif %}
{% endif %}
{% endfor %}
-
{% endfor %}
@@ -75,3 +77,37 @@ and install the chart:
.. code-block:: bash
helm install my-release apache-airflow/airflow --values override-values.yaml
+
+Deprecated Parameters
+=====================
+
+The following table contains all deprecated configuration parameters of the
Airflow chart with their default values. All values defined in below table with
be removed
+in the next Helm Chart major release.
+
+.. jinja:: params_ctx
+
+ .. list-table::
+ :widths: 15 10 30
+ :header-rows: 1
+
+ * - Parameter
+ - Description
+ - Default
+
+ {% for section in sections %}
+ {% for param in section["params"] %}
+ {% if "deprecated" in param["description"] %}
+ * - ``{{ param["name"] }}``
+ - {{ param["description"] }}
+ - ``{{ param["default"] }}``
+ {% if param["examples"] %}
+
+ .. code-block:: yaml
+ :caption: Examples
+
+ {{ param["examples"] | indent(width=10) }}
+
+ {% endif %}
+ {% endif %}
+ {% endfor %}
+ {% endfor %}
diff --git a/chart/docs/production-guide.rst b/chart/docs/production-guide.rst
index ea8bbc88353..3e5ffc51da6 100644
--- a/chart/docs/production-guide.rst
+++ b/chart/docs/production-guide.rst
@@ -280,14 +280,19 @@ This setting can be configured in the Airflow chart at
different levels:
:caption: values.yaml
workers:
- safeToEvict: true
+ celery:
+ safeToEvict: true
+ kubernetes:
+ safeToEvict: true
scheduler:
safeToEvict: true
apiServer:
safeToEvict: true
-``workers.safeToEvict`` defaults to ``false``, and when using
``KubernetesExecutor``
-``workers.safeToEvict`` shouldn't be set to ``true`` as the workers may be
removed before finishing.
+.. note::
+
+ ``workers.kubernetes.safeToEvict`` defaults to ``false`` as it shouldn't be
set to ``true``,
+ because the tasks may be removed before finishing.
Extending and customizing Airflow Image
---------------------------------------
diff --git a/chart/docs/quick-start.rst b/chart/docs/quick-start.rst
index 399e47d4900..12c038185f6 100644
--- a/chart/docs/quick-start.rst
+++ b/chart/docs/quick-start.rst
@@ -26,11 +26,14 @@ Run Airflow on Kind cluster
Install kind and create a cluster
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-We recommend testing with Kubernetes 1.30+, example:
-.. code-block:: bash
+.. jinja:: global_ctx
+
+ We recommend testing with Kubernetes {{ min_k8s_version }}+, example:
+
+ .. code-block:: bash
- kind create cluster --image kindest/node:v1.30.13
+ kind create cluster --image kindest/node:{{ min_k8s_version }}
Confirm it's up:
diff --git a/chart/docs/setting-resources-for-containers.rst
b/chart/docs/setting-resources-for-containers.rst
index 31cdbb6adf5..fae0e32fbe4 100644
--- a/chart/docs/setting-resources-for-containers.rst
+++ b/chart/docs/setting-resources-for-containers.rst
@@ -28,47 +28,26 @@ You can define different resources for various Airflow
containers. By default th
Possible containers where resources can be configured include:
-* Main Airflow containers and their sidecars. You can add the resources for
these containers through the following parameters:
+.. jinja:: params_ctx
- * ``workers.resources``
- * ``workers.celery.logGroomerSidecar.resources``
- * ``workers.kerberosSidecar.resources``
- * ``workers.kerberosInitContainer.resources``
- * ``scheduler.resources``
- * ``scheduler.logGroomerSidecar.resources``
- * ``dags.gitSync.resources``
- * ``apiServer.resources``
- * ``flower.resources``
- * ``dagProcessor.resources``
- * ``dagProcessor.logGroomerSidecar.resources``
- * ``triggerer.resources``
- * ``triggerer.logGroomerSidecar.resources``
+ {% for section in sections %}
+ {% for param in section["params"] %}
+ {% if param["name"].endswith("resources") %}
+ * ``{{ param["name"] }}``
+ {% endif %}
+ {% endfor %}
+ {% endfor %}
-* Containers used for Airflow Kubernetes jobs or cron jobs. You can add the
resources for these containers through the following parameters:
-
- * ``cleanup.resources``
- * ``createUserJob.resources``
- * ``migrateDatabaseJob.resources``
- * ``databaseCleanup.resources``
-
-* Other containers that can be deployed by the chart. You can add the
resources for these containers through the following parameters:
-
- * ``statsd.resources``
- * ``pgbouncer.resources``
- * ``pgbouncer.metricsExporterSidecar.resources``
- * ``redis.resources``
-
-For example, specifying resources for worker Kerberos sidecar:
+For example, specifying resources for scheduler container:
.. code-block:: yaml
:caption: values.yaml
- workers:
- kerberosSidecar:
- resources:
- limits:
- cpu: 200m
- memory: 256Mi
- requests:
- cpu: 100m
- memory: 128Mi
+ scheduler:
+ resources:
+ limits:
+ cpu: 1
+ memory: 1Gi
+ requests:
+ cpu: 500m
+ memory: 512Gi
diff --git a/chart/docs/upgrading-to-airflow-3.rst
b/chart/docs/upgrading-to-airflow-3.rst
index 312bceb8028..f3555da0ef3 100644
--- a/chart/docs/upgrading-to-airflow-3.rst
+++ b/chart/docs/upgrading-to-airflow-3.rst
@@ -22,22 +22,20 @@ Before reading this, make sure you have read the Airflow
Upgrade Guide for how t
:doc:`apache-airflow:installation/upgrading_to_airflow3`.
This guide describes the chart-specific tasks for upgrading a deployment of
the official Airflow Helm chart from
-Airflow 2.x to Airflow 3.x. Upgrade the chart to ``1.16.0`` or later (chart
``1.16.0`` is the first release that
-supports Airflow 3) and review your ``values.yaml`` against the items below.
Many keys have been renamed, removed,
-or replaced and the chart will fail to render or deploy unsupported components
silently if old keys remain.
+Airflow 2.x to Airflow 3.x. Upgrade the chart to at least ``1.19.0`` version
and review your ``values.yaml`` against
+the items below. Many keys have been renamed, removed, or replaced within the
chart and the chart may fail to render or
+deploy unsupported components silently if old keys remain.
Bump the Airflow image
----------------------
-Set ``defaultAirflowTag`` and ``airflowVersion`` to a 3.x release. The chart
ships with a 3.x default starting at
-chart ``1.17.0``.
+Set ``defaultAirflowTag`` and ``airflowVersion`` to a 3.x release.
Rename ``webserver`` to ``apiServer``
-------------------------------------
The Airflow 3 component that serves the UI and the public REST API is the API
server, not the webserver. All
-configuration that lived under ``webserver:`` in the chart values must move
under ``apiServer:``. The component now
-listens on port ``8080`` and is started with ``airflow api-server``. For
example:
+configuration that lived under ``webserver:`` in the chart values must move
under ``apiServer:``. For example:
.. code-block:: yaml
@@ -65,17 +63,16 @@ Add a JWT secret
----------------
Airflow 3 uses short-lived JWT tokens to authenticate workers and triggerers
against the API server. The chart
-generates a ``jwt-secret`` Secret on install. If you template Secrets
out-of-band or pin a custom name through
-``jwtSecretName``, make sure the referenced Secret exists with a
``jwt-secret`` key before workers and triggerers
-start.
+generates a ``jwt-secret`` Secret on every install/update operation. If you
template Secrets out-of-band or
+pin a custom name through ``jwtSecretName``, make sure the referenced Secret
exists with a ``jwt-secret`` key
+before Airflow components start.
-Deploy the standalone Dag processor
+Deploy the standalone Dag Processor
-----------------------------------
-In Airflow 3 the Dag file processor is no longer embedded in the scheduler.
The chart deploys it as a separate
+In Airflow 3 the Dag Processor is no longer embedded in the scheduler. The
chart deploys it as a separate
``dag-processor`` Deployment configured under ``dagProcessor:``. Review
resources, tolerations, and any RBAC
-overrides for this new component, including granting its ServiceAccount access
to your Dag bundles (git-sync,
-persistent volumes, or custom bundles).
+overrides for this component, including granting its Service Account access to
your Dags code.
Pick an auth manager
--------------------
@@ -97,8 +94,7 @@ for details.
Check the minimum Kubernetes version
------------------------------------
-Chart ``1.17.0`` raised the minimum supported Kubernetes version to ``1.30``.
Upgrade your cluster before upgrading
-the chart if needed.
+Chart ``1.19.0`` supports ``1.30+`` Kubernetes version. Upgrade your cluster
before upgrading the chart if needed.
Run database migrations as part of the upgrade
----------------------------------------------
@@ -112,7 +108,7 @@ Re-check renamed or removed values
----------------------------------
Many configuration options under ``webserver``/``apiServer``, ``workers``, and
``scheduler`` were renamed or
-removed across chart ``1.16.0``..``1.18.0``. Diff your existing
``values.yaml`` against the chart's default
+removed across chart versions. Diff your existing ``values.yaml`` against the
chart's default
``values.yaml`` and the :doc:`release_notes` for those versions before
applying.
After updating ``values.yaml``, render the chart locally with ``helm
template`` and inspect the diff against your
diff --git a/chart/newsfragments/66970.significant.rst
b/chart/newsfragments/66970.significant.rst
new file mode 100644
index 00000000000..e72b0d10220
--- /dev/null
+++ b/chart/newsfragments/66970.significant.rst
@@ -0,0 +1 @@
+Minimum Helm version was updated to ``3.19.0``