DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
Parameter | Description | Default | Opinion Jens | Opinion Bugra | Opinion Przemek |
|---|---|---|---|---|---|
| airflow_local_settings file as a string (templated). You can bake an airflow_local_settings.py into your image instead. In that case, set this value to null. |
| keep | keep | Keep |
| Airflow version (Used to make some decisions based on Airflow Version being deployed). |
| keep | keep | Keep |
| Annotations to add to the Api secret. |
| Why is this for flask in AF3? | Description remains from v2 terms. | Move under apiServer section |
| The Flask secret key for Airflow Api to encrypt browser session. |
| Why is this for flask in AF3? | Description remains from v2 terms. | Maybe dedicated section for flask-related configs 🤔
|
| This string (templated) will be mounted into the Airflow API Server as a custom webserver_config.py. You can bake a webserver_config.py in to your image instead or specify a configmap containing the webserver_config.py. |
Examples: apiServerConfig: |- from airflow import configuration as conf # The SQLAlchemy connection string. SQLALCHEMY_DATABASE_URI = conf.get('database', 'SQL_ALCHEMY_CONN') # Flask-WTF flag for CSRF CSRF_ENABLED = True | keep Is example still relevant? | This is still relevant if the user is using providers-fab and adding more fine-grained authentication integration through fab. That also generalised to BaseAuthManager and to providers that implement 3rd-party libraries and tools. I think the description should be updated. | |
| The configmap name containing the webserver_config.py. |
Examples: apiServerConfigConfigMapName: my-api-server-configmap | keep | keep | keep |
| Settings to go into the mounted airflow.cfg |
| keep | keep | keep |
| Enable default user creation. |
| keep | keep | If I remember correctly it is only flask-related, so maybe move to flask dedicated section? |
| Default airflow digest to deploy. Overrides tag. |
| keep | keep | keep |
| Default airflow repository. Overrides all the specific images below. |
| keep | keep | keep |
| Default airflow tag to deploy. |
| keep | keep | keep |
| Airflow executor. |
|
|
| keep |
| The Fernet key used to encrypt passwords (can only be set during install, not upgrade). |
| keep | keep | Maybe Move to the new encryption section 🤔?
|
| Annotations to add to the Fernet Key secret. |
| keep | keep | |
| Secret key used to encode and decode JWTs to authenticate to public and private APIs (can only be set during install, not upgrade). |
| keep | keep | |
| Annotations to add to the JWT secret. |
| keep | keep | |
| Enable PgBouncer. |
| keep | keep | Whole section discussion under pgbouncer section |
| Whether to mount the config secret files under /etc/pgbouncer/ by default. |
| keep | keep | |
| Specify kube scheduler name for Pods. |
| Put this to Kustomize? | No disagreement with Jens. | No strong opinion |
| This string (templated) will be mounted into the Airflow webserver as a custom webserver_config.py. You can bake a webserver_config.py in to your image instead or specify a configmap containing the webserver_config.py. |
Examples: webserverConfig: |- from airflow import configuration as conf # The SQLAlchemy connection string. SQLALCHEMY_DATABASE_URI = conf.get('database', 'SQL_ALCHEMY_CONN') # Flask-WTF flag for CSRF CSRF_ENABLED = True | removed with dropping AF2 support | Drop with Airflow 2
| |
| The configmap name containing the webserver_config.py. |
Examples: webserverConfigConfigMapName: my-webserver-configmap |
| ||
| Annotations to add to the webserver secret. |
|
| ||
| The Flask secret key for Airflow Webserver to encrypt browser session. |
|
| ||
| Specify kube scheduler name for Airflow Celery workers objects and pods created with pod-template-file. |
| Put this to Kustomize? | No disagreement with Jens. | No strong opinion |
...
Parameter | Description | Default | Opinion Jens | Opinion Bugra | Opinion Przemek | |||||
|---|---|---|---|---|---|---|---|---|---|---|
| Airflow home directory. Used for mount paths. |
| keep | keep | keep | |||||
| Whether various Airflow components launch jobs. |
| Can this not implicitly be discovered if K8s executor? | It can be automated indeed. We can map to both a feature and a deprecation along with it. | I would leave it as it is. Looking at the current available Kubernetes connections, there is an in_cluster option which basically says "use Kubernetes Service Account which is set for currently running pod e.g. Celery worker". In some cases, despite used Executor, the proper permissions can be or can be not be needed, and if something is not needed, there should be a possibility of removing it (an automatic option would remove it, raising some security concerns). | |||||
| Whether various Airflow components launch pods. |
| Can this not implicitly be discovered if K8s executor? | It can be automated indeed. We can map to both a feature and a deprecation along with it. | ||||||
| The Secret name containing Flask secret_key for the Api. |
| Why is this for flask in AF3? | Description remains from v2 terms. | Maybe move to flask dedicated section 🤔? | |||||
| Git branch |
| Should we transform the gitSync into a bundle definition? | It makes sense. There are multiple ways in various systems of mounting the dags into the components. Making it bundled can help with easier additions on top of it for mounting operations. | Drop in favor of bundle and maybe seperate it to not-dag related section for sync with potential external dags dependencies
| |||||
| Git sync container name. |
|
|
| ||||||
| Name of a Secret containing the repo GIT_SYNC_USERNAME and GIT_SYNC_PASSWORD. |
|
|
| ||||||
| Repository depth. |
|
|
| ||||||
| Configuration for dags empty dir volume. |
|
|
| ||||||
| Enable Git sync. |
|
|
| ||||||
| Environment variables for git sync container. |
Examples: env: - name: GIT_SYNC_TIMEOUT value: '60' env: - name: GIT_SYNC_USERNAME valueFrom: secretKeyRef: key: username name: git-secret |
|
| ||||||
| Extra envFrom ‘items’ that will be added to the definition of Airflow gitSync containers; a string or array are expected (templated). |
Examples: envFrom: |- - secretRef: name: 'proxy-config envFrom: |- - configMapRef: name: 'proxy-config |
|
| ||||||
| Mount additional volumes into git sync container. |
|
|
| ||||||
| When using a ssh private key, the contents of your known_hosts file. |
Examples: knownHosts: |- <host1>,<ip1> <key1> <host2>,<ip2> <key2> knownHosts: <host1>,<ip1> <key1> |
|
| ||||||
| The number of consecutive failures allowed before aborting. |
|
|
| ||||||
| Interval between git sync attempts in Go-style duration string. High values are more likely to cause DAGs to become out of sync between different components. Low values cause more traffic to the remote git repository. |
|
|
| ||||||
| Git revision branch, tag, or hash. |
|
|
| ||||||
| Git repository. |
|
| |||||||
| Resources on workers git-sync sidecar |
Examples: resources: limits: cpu: 100m memory: 128Mi requests: cpu: 100m memory: 128Mi |
|
| ||||||
| Git revision. |
|
|
| ||||||
| Security context for the gitSync container (deprecated, use securityContexts instead). If not set, the values from securityContext will be used. |
Examples: securityContext: runAsGroup: 0 runAsUser: 50000 |
|
| ||||||
| SSH private key |
|
|
| ||||||
| Name of a Secret containing the repo sshKeySecret. |
|
|
| ||||||
| Subpath within the repo where dags are located. |
|
|
| ||||||
| Git sync container run as user parameter. |
|
|
| ||||||
| Interval between git sync attempts in seconds. High values are more likely to cause DAGs to become out of sync between different components. Low values cause more traffic to the remote git repository. |
|
|
| ||||||
| Where dags volume will be mounted. Works for both persistence and gitSync. If not specified, dags mount path will be set to $AIRFLOW_HOME/dags |
|
|
| keep | |||||
| Access mode of the persistent volume. |
|
| keep | keep | |||||
| Annotations for the dag PVC |
|
| keep | keep | |||||
| Enable persistent volume for storing dags. |
|
| keep | keep | |||||
| The name of an existing PVC to use. |
|
| keep | keep | |||||
| Volume size for dags. |
|
| keep | keep | |||||
| If using a custom StorageClass, pass name here (templated). |
|
| keep | keep | |||||
| Subpath within the PVC where dags are located. |
|
| keep | keep | |||||
| Elasticsearch connection configuration. |
Examples: connection: host: '...' pass: '...' port: '...' scheme: https user: '...' |
|
| Drop/move to Kustomize
| |||||
| Host |
|
|
| ||||||
| Password |
|
|
| ||||||
| Port |
|
|
| ||||||
| Scheme |
|
|
| ||||||
| Username |
|
|
| ||||||
| Enable Elasticsearch task logging. |
|
|
| ||||||
| Extra annotations to apply to the elasticsearch secret. |
|
|
| ||||||
| A secret containing the connection string. |
|
|
| ||||||
| Enable |
| What is this for? | SQLAlchemy connection string from K8s secret. Keeping with a better description and maybe renaming to reflect better. | I guess it should be the same as AIRFLOW__DATABASE__SQL_ALCHEMY_CONN so probably drop | |||||
| Enable |
| What is this for? | Enable using K8S secret in env var to pass jwt_secret config keep | keep | |||||
| Enable |
| What is this for? | Similar to above secret_key keep | keep | |||||
| Enable |
| What is this for? |
All these are the same as above, as setting some config that enables to read secret to pass to the env var. Maybe move them to Kustomize? | keep/move under workers.celery section | |||||
| Enable |
| What is this for? | Drop | ||||||
| Enable |
| What is this for? | keep/move under workers.celery section | ||||||
| Enable |
| What is this for? | keep | ||||||
| Enable |
| What is this for? | Remove with Airflow 2 drop | ||||||
| Enable |
| What is this for? | keep | ||||||
| Enable |
| What is this for? | Drop/move to Kustomize with elasticsearch section
| ||||||
| Enable |
| What is this for? | |||||||
| Enable |
| What is this for? | Drop/move to Kustomize with opensearch section | ||||||
| Enable |
| removed with dropping AF2 support |
| Drop Drop with Airflow 2 | |||||
| Environment variables for all Airflow containers. |
Examples: env: - name: MYENVVAR value: something_fun |
|
| keep | |||||
| Extra env ‘items’ that will be added to the definition of Airflow containers; a string is expected (templated). |
Examples: extraEnv: |- - name: AIRFLOW__CORE__LOAD_EXAMPLES value: True |
|
| keep | |||||
| Extra envFrom ‘items’ that will be added to the definition of Airflow containers; a string is expected (templated). |
Examples: extraEnvFrom: |- - secretRef: name: '{{ .Release.Name }}-airflow-connections' extraEnvFrom: |- - configMapRef: name: '{{ .Release.Name }}-airflow-variables' |
|
| keep | |||||
| The Fernet key secret name. |
|
|
| Maybe move to fernet/Move under the new encryption section | |||||
| Group of airflow user. |
|
|
| Probably remove and/or move to Kustomize. It is only used in volume-permissions sidecar in workers, which, looking at the comment, is only needed with the local path provisioner https://github.com/rancher/local-path-provisioner setup. | |||||
| The JWT secret name. |
|
|
| Move under the new encryption section | |||||
| Configuration for logs empty dir volume. |
|
| keep | keep | |||||
| Annotations to add to logs PVC |
|
| keep | keep | |||||
| Enable persistent volume for storing logs. |
|
| keep | keep | |||||
| The name of an existing PVC to use. |
|
| keep | keep | |||||
| Volume size for logs. |
|
| keep | keep | |||||
| If using a custom StorageClass, pass name here (templated). |
|
| keep | keep | |||||
| The subpath of the existing PVC to use. |
|
| keep | keep | |||||
| Whether Airflow can launch workers and/or pods in multiple namespaces. If true, it creates |
|
|
| ||||||
| OpenSearch connection configuration. |
Examples: connection: host: '...' pass: '...' port: '...' scheme: https user: '...' |
|
| Drop/move to Kustomize
| |||||
| Host |
|
|
| ||||||
| Password |
|
|
| ||||||
| Port |
|
|
| ||||||
| Scheme |
|
|
| ||||||
| Username |
|
|
| ||||||
| Enable OpenSearch task logging. |
|
|
| ||||||
| A secret containing the connection string. |
|
|
| ||||||
| The content of |
Examples: podTemplate: |- apiVersion: v1 kind: Pod metadata: name: placeholder-name labels: tier: airflow component: worker release: {{ .Release.Name }} spec: priorityClassName: high-priority containers: - name: base ... |
|
| Move to workers.kubernetes as it is only related to KubernetesExecutor | |||||
| Secrets for all Airflow containers. |
Examples: secret: - envName: SecretEnvVar secretKey: somekey secretName: somesecret |
|
| keep | |||||
| User of airflow user. |
|
|
|
| of airflow user. |
|
|
| Probably remove and/or move to Kustomize. It is only used in volume-permissions sidecar in workers, which, looking at the comment, is only needed with the local path provisioner https://github.com/rancher/local-path-provisioner setup. |
| VolumeMounts for all Airflow containers. |
|
|
| keep | |||||
| Volumes for all Airflow containers. |
|
|
| keep | |||||
| The Secret name containing Flask secret_key for the Webserver. |
| removed with dropping AF2 support |
| Drop with Airflow 2 |
...
Parameter | Description | Default | Opinion Jens | Opinion Przemek |
|---|---|---|---|---|
| Airflow UI port. |
| keep all | Keep |
| API server port. |
|
| Keep |
| Flower UI port. |
|
| Move with flower to Kustomize |
| PgBouncer port. |
|
| Keep |
| PgBouncer scrape port. |
|
| Keep |
| Redis port. |
|
| Keep |
| StatsD ingest port. |
|
| Maybe move with statsd to Kustomize |
| StatsD scrape port. |
|
| Maybe move with statsd to Kustomize |
| Triggerer logs port. |
|
| Keep |
| Worker logs port. |
|
| Keep |
Database
Parameter | Description | Default | Opinion Jens | Opinion Bugra | Opinion Przemek |
|---|---|---|---|---|---|
| Annotations to add to the broker url secret. |
|
|
| Move to workers.celery/redis as it is only for CeleryExecutor |
| The name of the database. |
|
|
| Move to new metastore/database section
|
| The database host. |
|
|
| |
| The user’s password. |
|
|
| |
| The database port. |
|
|
| |
| The database protocol. |
|
|
| |
| Annotations to add to the metadata connection secret. |
|
|
| |
| The database SSL parameter. |
|
|
| |
| The database user. |
|
|
| |
| Metadata connection string secret. |
|
|
| |
| Result backend connection configuration. |
|
|
| Move to workers.celery as it is only for CeleryExecutor
|
| The name of the database. |
|
|
| |
| The database host. |
|
|
| |
| The database password. |
|
|
| |
| The database port. |
|
|
| |
| The database protocol. |
|
|
| |
| The database SSL parameter. |
|
|
| |
| The database user. |
|
|
| |
| Annotations to add to the result backend connection secret. |
|
|
| |
| Result backend connection string secret. |
|
|
| |
| Assign a password to the ‘postgres’ admin user. Otherwise, remote access will be blocked for this user |
| Drop postgres inline support |
This is not even needs a discussion :D | Drop |
| Password for the custom user to create. |
|
| ||
| Password for the ‘postgres’ admin user. |
|
| ||
| Name for a custom user to create |
|
| ||
| Enable PostgreSQL subchart. |
|
| ||
| The PostgreSQL image repository. |
|
| ||
| The PostgreSQL image tag. |
|
|
...
Parameter | Description | Default | Opinion Jens | Opinion Bugra | Opinion Przemek | |
|---|---|---|---|---|---|---|
| Specify scheduling constraints for API server pods. |
|
|
| keep | |
| Allow API server to read k8s pod logs. Useful when you don’t have an external log store. |
|
|
|
| |
| Annotations to add to the API server deployment |
|
|
| keep | |
| Args to use when running the Airflow API server (templated). When running behind a reverse proxy, add –proxy-headers to enable Uvicorn to respect X-Forwarded-Proto, X-Forwarded-For, and X-Forwarded-Port headers. |
Examples: args: - bash - -c - exec airflow api-server --proxy-headers |
|
| keep | |
| Command to use when running the Airflow API server (templated). |
|
|
| keep | |
| Extra annotations to apply to the API server configmap. |
|
|
| keep | |
| Enable Airflow API server deployment. |
|
|
| keep | |
| Add additional env vars to API server. When running behind a reverse proxy, set FORWARDED_ALLOW_IPS to specify which IPs are trusted to send X-Forwarded-* headers. Use “*” for trusted environments, or specify proxy IP ranges for production. |
Examples: env: - - name: FORWARDED_ALLOW_IPS value: '*' |
|
| keep | |
| Launch additional containers into API server. |
|
|
| keep | |
| Add additional init containers into API server. |
|
|
| keep | |
| Mount additional volumes into API server. |
|
|
| keep | |
| Mount additional volumes into API server. |
|
|
| keep | |
| HostAliases for the API server pod. |
Examples: hostAliases: - hostnames: - foo.local ip: 127.0.0.1 hostAliases: - hostnames: - foo.remote ip: 10.1.2.3 |
|
| keep | |
| HorizontalPodAutoscalerBehavior configures the scaling behavior of the target. |
| Should we keep both KEDA and HPA? Or move both to a Kustomize?
| My vote would be moving Keda to Kustomize, as it is really custom if we think of core components
| Keep HPA, document Keda in Kustomize
| |
| Enable HPA autoscaling for API server |
|
|
|
| |
| Maximum number of API server replicas created by HPA if HPA is enabled. |
|
|
|
| |
| Specifications for which to use to calculate the desired replica count. |
|
|
| ||
| Minimum number of API server replicas created by HPA if HPA is enabled. |
|
|
|
| |
| Labels to add to the API server objects and pods. |
|
|
| keep | |
| API server Liveness probe failure threshold. |
|
|
| keep | |
| API server Liveness probe initial delay. |
|
|
| keep | |
| API server Liveness probe period seconds. |
|
|
| keep | |
| API server Liveness probe scheme. |
|
|
| keep | |
| API server Liveness probe timeout seconds. |
|
|
| keep | |
| Peers for API server NetworkPolicyingress. |
|
|
| keep | |
| Ports for API server NetworkPolicyingress (if from is set). |
Examples: ports: - port: 8080 |
|
| keep | |
| Select certain nodes for API server pods. |
|
|
| keep | |
| Annotations to add to the API server pods. |
|
|
| keep | |
| Max unavailable pods for API server. |
|
|
| Remove maxUnavailable and minAvailable and set config: {} | |
| Min available pods for API server. |
|
|
| ||
| Enable pod disruption budget. |
|
|
| keep | |
| Specify priority for API server pods. |
|
|
| keep | |
| API server Readiness probe failure threshold. |
|
|
| keep | |
| API server Readiness probe initial delay. |
|
|
| keep | |
| API server Readiness probe period seconds. |
|
|
| keep | |
| API server Readiness probe scheme. |
|
|
| keep | |
| API server Readiness probe timeout seconds. |
|
|
| keep | |
| How many Airflow API server replicas should run. This setting is ignored when HPA (Horizontal Pod Autoscaler) is enabled |
|
|
| keep | |
| Resources for API server pods. |
Examples: resources: limits: cpu: 100m memory: 128Mi requests: cpu: 100m memory: 128Mi |
|
| keep | |
| Annotations for the API server Service. |
|
|
| keep | |
| API server Service loadBalancerIP. |
|
|
| keep | |
| API server Service |
Examples: loadBalancerSourceRanges: - 10.123.0.0/16 |
|
| keep | |
| Ports for the API server Service. |
Examples: ports: - name: api-server port: 8080 targetPort: api-server ports: - name: only_sidecar port: 9080 targetPort: 8888 |
|
| keep | |
| API server Service type. |
|
|
| keep | |
| Annotations to add to the API server Kubernetes ServiceAccount. |
|
|
| keep | |
| Specifies if ServiceAccount’s API credentials should be mounted onto Pods. |
|
|
| keep | |
| Specifies whether a ServiceAccount should be created. |
|
|
| keep | |
The name of the ServiceAccount to use. If not set and create is true, a name is generated using the release name. |
|
|
| keep | ||
| API server Startup probe failure threshold. |
|
|
| keep | |
| API server Startup probe initial delay seconds. |
|
|
| keep | |
| API server Startup probe period seconds. |
|
|
| keep | |
| API server Startup probe scheme. |
|
|
| keep | |
| API server Startup probe timeout seconds. |
|
|
| keep | |
| Specifies the strategy used to replace old Pods by new ones. |
|
|
| keep | |
| Specify Tolerations for API server pods. |
|
|
| keep | |
| Enable wait-for-airflow-migrations init container. |
|
|
|
| |
| Add additional env vars to wait-for-airflow-migrations init container. |
|
|
| keep |
Scheduler
Parameter | Description | Default | Opinion Jens | Opinion Bugra |
|---|---|---|---|---|
| Specify scheduling constraints for scheduler pods. |
|
|
|
| Annotations to add to the scheduler deployment |
|
|
|
| Args to use when running the Airflow scheduler (templated). |
|
|
|
| Command to use when running the Airflow scheduler (templated). |
|
|
|
| Enable scheduler |
|
|
|
| Add additional env vars to scheduler. |
|
|
|
| Launch additional containers into scheduler (templated). |
|
|
|
| Add additional init containers into scheduler (templated). |
|
|
|
| Mount additional volumes into scheduler. |
|
|
|
| Mount additional volumes into scheduler. |
|
|
|
| HostAliases for the scheduler pod. |
Examples: hostAliases: - hostnames: - foo.local ip: 127.0.0.1 hostAliases: - hostnames: - foo.remote ip: 10.1.2.3 |
|
|
| Labels to add to the scheduler objects and pods. |
|
|
|
| Minimum consecutive failures for the probe to be considered failed after having succeeded. Minimum value is 1. |
|
|
|
| Number of seconds after the container has started before liveness probes are initiated. |
|
|
|
| How often (in seconds) to perform the probe. Minimum value is 1. |
|
|
|
| Number of seconds after which the probe times out. Minimum value is 1 seconds. |
|
|
|
| Select certain nodes for scheduler pods. |
|
|
|
| Annotations to add to the scheduler pods. |
|
|
|
| Max unavailable pods for scheduler. |
|
|
|
| Min available pods for scheduler. |
|
|
|
| Enable pod disruption budget. |
|
|
|
| Specify priority for scheduler pods. |
|
|
|
| Airflow 2.0 allows users to run multiple schedulers. This feature is only recommended for MySQL 8+ and PostgreSQL |
|
|
|
| Resources for scheduler pods. |
Examples: resources: limits: cpu: 100m memory: 128Mi requests: cpu: 100m memory: 128Mi |
|
|
| This setting tells Kubernetes that its ok to evict when it wants to scale a node down. |
|
|
|
| Security context for the scheduler pod (deprecated, use securityContexts instead). If not set, the values from securityContext will be used. |
Examples: securityContext: fsGroup: 0 runAsGroup: 0 runAsUser: 50000 |
|
|
| Annotations to add to the scheduler Kubernetes ServiceAccount. |
|
|
|
| Specifies if ServiceAccount’s API credentials should be mounted onto Pods. When false, you can use serviceAccountTokenVolume to manually configure service account token volume for pod-launching executors. |
|
|
|
| Specifies whether a ServiceAccount should be created. |
|
|
|
The name of the ServiceAccount to use. If not set and create is true, a name is generated using the release name. |
|
|
| |
| Intended audience of the token. Optional - defaults to the identifier of the Kubernetes API server. |
|
|
|
| Enable manual service account token volume configuration. |
|
|
|
| Token expiration time in seconds. |
|
|
|
| Path where the service account token volume will be mounted. |
|
|
|
| Name of the service account token volume. |
|
|
|
| Minimum consecutive failures for the probe to be considered failed after having succeeded. Minimum value is 1. |
|
|
|
| Number of seconds after the container has started before startup probes are initiated. |
|
|
|
| How often (in seconds) to perform the probe. Minimum value is 1. |
|
|
|
| Number of seconds after which the probe times out. Minimum value is 1 seconds. |
|
|
|
| Specifies the strategy used to replace old Pods by new ones when deployed as a Deployment (when not using LocalExecutor and workers.persistence). |
|
|
|
| Grace period for scheduler to finish after SIGTERM is sent from Kubernetes. |
|
|
|
| Specify Tolerations for scheduler pods. |
|
|
|
| Specify topology spread constraints for scheduler pods. |
|
|
|
| Specifies the strategy used to replace old Pods by new ones when deployed as a StatefulSet (when using LocalExecutor and workers.persistence). |
|
|
|
| Enable wait-for-airflow-migrations init container. |
|
|
|
| Add additional env vars to wait-for-airflow-migrations init container. |
|
|
|
...