1# Licensed to the Apache Software Foundation (ASF) under one
2# or more contributor license agreements. See the NOTICE file
3# distributed with this work for additional information
4# regarding copyright ownership. The ASF licenses this file
5# to you under the Apache License, Version 2.0 (the
6# "License"); you may not use this file except in compliance
7# with the License. You may obtain a copy of the License at
9# http://www.apache.org/licenses/LICENSE-2.0
11# Unless required by applicable law or agreed to in writing,
12# software distributed under the License is distributed on an
13# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14# KIND, either express or implied. See the License for the
15# specific language governing permissions and limitations
17# Provide a name to substitute for the full names of resources
19# Default values for Airflow.
20# This is a YAML-formatted file.
21# Declare variables to be passed into your templates.
23# Provide a name to substitute for the name of the chart
25# Use standard naming for all resources using airflow.fullname template
26# Consider removing this later and default it to true
27# to make this chart follow standard naming conventions using the fullname template.
28# For now this is an opt-in switch for backwards compatibility to leverage the standard naming convention
29# and being able to use fully fullnameOverride and nameOverride in all resources
30# For new installations - it is recommended to set it to True to follow standard naming conventions
31# For existing installations, this will rename and redeploy your resources with the new names. Be aware that
32# this will recreate your Deployment/StatefulSets along with their persistent volume claims and data storage
33# migration may be needed to keep your old data
34useStandardNaming: false
35# Max number of old replicasets to retain. Can be overridden by each Deployment's revisionHistoryLimit
36revisionHistoryLimit: ~
37# User and group of Airflow user
40# Default security context for Airflow (deprecated, use `securityContexts` instead)
46# Detailed default security context for Airflow Deployments
50# Global container lifecycle hooks for Airflow containers
51containerLifecycleHooks: {}
52# Airflow home directory
54airflowHome: /opt/airflow
55# Default Airflow repository -- overridden by all the specific images below
56defaultAirflowRepository: cgr.dev/chainguard-private/airflow
57# Default Airflow tag to deploy
58defaultAirflowTag: latest
59# Default Airflow digest. If specified, it takes precedence over tag
60defaultAirflowDigest: sha256:a090cc9e04cf683f601d85769a3036ec865c8a96f9079a199dde3629c30e1420
61# Airflow version (Used to make some decisions based on Airflow Version being deployed)
62# Version 2.11.0 and above is supported.
63airflowVersion: "3.2.0"
68 # Specifying digest takes precedence over tag.
70 pullPolicy: IfNotPresent
71 # To avoid images with user code, you can turn this to 'true' and
72 # all the 'run-airflow-migrations' and 'wait-for-airflow-migrations' jobs/containers
73 # will use the images from 'defaultAirflowRepository:defaultAirflowTag' values
74 # to run and wait for DB migrations .
75 useDefaultImageForMigration: false
76 # timeout (in seconds) for airflow-migrations to complete
77 migrationsWaitTimeout: 60
79 # Note that `images.pod_template.repository` and `images.pod_template.tag` parameters can be overridden
80 # in `config.kubernetes_executor` section. So for these parameters to have effect
81 # `config.kubernetes_executor.worker_container_repository` and
82 # `config.kubernetes_executor.worker_container_tag` must be not set .
85 pullPolicy: IfNotPresent
87 repository: cgr.dev/chainguard-private/flower
88 tag: latest@sha256:5bf6d2778d9b47ea36c43ec7352d97d3a1dd486594a5e4c142bd611c9ae88130
89 pullPolicy: IfNotPresent
91 repository: cgr.dev/chainguard-private/prometheus-statsd-exporter
92 tag: latest@sha256:d0cde1ca9a2a233b0be4f7547b2fec91e8c5a7d872aa8c3e45d61e57203e770f
93 pullPolicy: IfNotPresent
95 repository: cgr.dev/chainguard-private/redis
96 # Redis is limited to 7.2-bookworm due to licencing change
97 # https://redis.io/blog/redis-adopts-dual-source-available-licensing/
98 tag: latest@sha256:574a951b1bc489c60b6bf0615e474c3f0debc9f3181692aff7e78aaf57b5a8c2
99 pullPolicy: IfNotPresent
101 repository: cgr.dev/chainguard-private/pgbouncer
102 tag: latest@sha256:91d48b18610d777603383c5264fb675f2fafaeab37d41739c8dafbb3a1a4537d
103 pullPolicy: IfNotPresent
105 repository: cgr.dev/chainguard-private/prometheus-pgbouncer-exporter
106 tag: latest@sha256:d83fc2945e42626bf0c9f8aa4e5d79f3f7a527c91519d6481a6ab87be932470e
107 pullPolicy: IfNotPresent
109 repository: cgr.dev/chainguard-private/git-sync
110 tag: latest@sha256:9d7eebc601ebb26c682e46e96d262dd7daec800c1a54645fb3dae98f7a89b054
111 pullPolicy: IfNotPresent
112# Select certain nodes for Airflow pods.
116topologySpreadConstraints: []
118# Add common labels to all objects and pods defined in this chart.
120# List of existing Kubernetes secrets containing Base64 encoded credentials to connect to private
121# registries. Items can be either strings or {name: secret} objects.
123# Ingress configuration
125 # Enable all ingress resources
127 # `ingress.web.enabled`,
128 # `ingress.apiServer.enabled` and/or
129 # `ingress.flower.enabled`
132 # Configs for the Ingress of the API Server (Airflow 3+)
134 # Enable API Server ingress resource
136 # Annotations for the API Server Ingress
138 # The path for the API Server Ingress
140 # The pathType for the above path
141 pathType: "ImplementationSpecific"
142 # The hostname for the API Server Ingress (deprecated, use `ingress.apiServer.hosts` instead)
144 # The hostnames or hosts configuration for the API Server Ingress (templated)
147 # # configs for API Server Ingress TLS
149 # # Enable TLS termination for the API Server Ingress
151 # # The name of a pre-created Secret containing a TLS private key and certificate
154 # The Ingress Class for the API Server Ingress
156 # Configs for API Server Ingress TLS (deprecated, use `ingress.apiServer.hosts[*].tls` instead)
158 # Enable TLS termination for the API Server Ingress
160 # The name of a pre-created Secret containing a TLS private key and certificate
162 # HTTP paths to add to the API Server Ingress before the default path
164 # HTTP paths to add to the API Server Ingress after the default path
166 # Configs for the Ingress of the web Service (Airflow <3.0.0)
168 # Enable web ingress resource
170 # Annotations for the web Ingress
172 # The path for the web Ingress
174 # The pathType for the above path
175 pathType: "ImplementationSpecific"
176 # The hostname for the web Ingress (deprecated, use `ingress.web.hosts` instead)
178 # The hostnames or hosts configuration for the web Ingress (templated)
181 # # Configs for web Ingress TLS
183 # # Enable TLS termination for the web Ingress
185 # # The name of a pre-created Secret containing a TLS private key and certificate
188 # The Ingress Class for the web Ingress
190 # Configs for web Ingress TLS (deprecated, use `ingress.web.hosts[*].tls` instead)
192 # Enable TLS termination for the web Ingress
194 # The name of a pre-created Secret containing a TLS private key and certificate
196 # HTTP paths to add to the web Ingress before the default path
198 # HTTP paths to add to the web Ingress after the default path
200 # Configs for the Ingress of the flower Service
202 # Enable web ingress resource
204 # Annotations for the flower Ingress
206 # The path for the flower Ingress
208 # The pathType for the above path
209 pathType: "ImplementationSpecific"
210 # The hostname for the flower Ingress (deprecated, use `ingress.flower.hosts` instead)
212 # The hostnames or hosts configuration for the flower Ingress (templated)
216 # # Enable TLS termination for the flower Ingress
218 # # The name of a pre-created Secret containing a TLS private key and certificate
221 # The Ingress Class for the flower Ingress
223 # Configs for flower Ingress TLS (deprecated, use `ingress.flower.hosts[*].tls` instead)
225 # Enable TLS termination for the flower Ingress
227 # The name of a pre-created Secret containing a TLS private key and certificate
229 # Configs for the Ingress of the StatsD Service
231 # Enable web ingress resource
233 # Annotations for the StatsD Ingress
235 # The path for the StatsD Ingress
237 # The pathType for the above path
238 pathType: "ImplementationSpecific"
239 # The hostname for the StatsD Ingress (deprecated, use `ingress.statsd.hosts` instead)
241 # The hostnames or hosts configuration for the StatsD Ingress (templated)
245 # # Enable TLS termination for the StatsD Ingress
247 # # The name of a pre-created Secret containing a TLS private key and certificate
250 # The Ingress Class for the StatsD Ingress
252 # Configs for the Ingress of the PgBouncer Service
254 # Enable web ingress resource
256 # Annotations for the PgBouncer Ingress
258 # The path for the PgBouncer Ingress
260 # The pathType for the above path
261 pathType: "ImplementationSpecific"
262 # The hostname for the PgBouncer Ingress (deprecated, use `ingress.pgbouncer.hosts` instead)
264 # The hostnames or hosts configuration for the PgBouncer Ingress (templated)
268 # # Enable TLS termination for the PgBouncer Ingress
270 # # The name of a pre-created Secret containing a TLS private key and certificate
273 # The Ingress Class for the PgBouncer Ingress
275# Network policy configuration
277 # Enabled network policies
279# Extra annotations to apply to all Airflow pods (templated)
280airflowPodAnnotations: {}
281# Extra annotations to apply to main Airflow ConfigMap
282airflowConfigAnnotations: {}
283# 'airflow_local_settings' file as a string (templated)
284airflowLocalSettings: |-
285 {{- if semverCompare "<3.0.0" .Values.airflowVersion }}
286 {{- if not (or .Values.webserverSecretKey .Values.webserverSecretKeySecretName) }}
287 from airflow.www.utils import UIAlert
289 DASHBOARD_UIALERTS = [
291 'Usage of a dynamic webserver secret key detected. We recommend a static webserver secret key instead.'
293 '"https://airflow.apache.org/docs/helm-chart/stable/production-guide.html#webserver-secret-key" '
294 'target="_blank" rel="noopener noreferrer">'
295 'Helm Chart Production Guide</a> for more details.',
303# Enable RBAC (default on most clusters these days)
305 # Specifies whether RBAC resources should be created
307 createSCCRoleBinding: false
309# One or multiple of: LocalExecutor, CeleryExecutor, KubernetesExecutor
310# For Airflow <3.0, LocalKubernetesExecutor and CeleryKubernetesExecutor are supported.
311# Specify executors in a prioritized list to leverage multiple execution environments as needed:
312# https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/executor/index.html#using-multiple-executors-concurrently
313executor: "CeleryExecutor"
314# If this is true and using LocalExecutor/KubernetesExecutor/CeleryKubernetesExecutor, the scheduler's
315# Service Account will have access to communicate with the api-server and launch pods/jobs.
316# If this is true and using CeleryExecutor/KubernetesExecutor/CeleryKubernetesExecutor, the workers
317# will be able to launch pods/jobs.
318allowPodLaunching: true
319allowJobLaunching: false
320# Environment variables for all Airflow containers
325# Volumes for all Airflow containers
327# VolumeMounts for all Airflow containers
329# Secrets for all Airflow containers
335# Enables selected built-in secrets that are set via environment variables by default.
336# Those secrets are provided by the Helm Chart secrets by default but in some cases you
337# might want to provide some of those variables with _CMD or _SECRET variable, and you should
338# in this case disable setting of those variables by setting the relevant configuration to 'false'.
339enableBuiltInSecretEnvVars:
340 AIRFLOW__CORE__FERNET_KEY: true
341 AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: true
342 AIRFLOW_CONN_AIRFLOW_DB: true
343 AIRFLOW__API__SECRET_KEY: true
344 AIRFLOW__API_AUTH__JWT_SECRET: true
345 AIRFLOW__WEBSERVER__SECRET_KEY: true
346 AIRFLOW__CELERY__RESULT_BACKEND: true
347 AIRFLOW__CELERY__BROKER_URL: true
348 AIRFLOW__ELASTICSEARCH__HOST: true
349 AIRFLOW__OPENSEARCH__HOST: true
350# Priority Classes that will be installed by charts.
351# Ideally, there should be an entry for dagProcessor, flower,
352# pgbouncer, scheduler, statsd, triggerer, webserver/api-server, worker.
353# The format for priorityClasses is an array with each element having:
354# * name is the name of the priorityClass. Ensure the same name is given to the respective section as well
355# * preemptionPolicy for the priorityClass
356# * value is the preemption value for the priorityClass
358# - name: class1 (if this is for dagProcessor, ensure overriding `dagProcessor.priorityClass` too)
359# preemptionPolicy: PreemptLowerPriority
362# preemptionPolicy: Never
365# Extra secrets that will be managed by the chart
366# (You can use them with `extraEnv` or `extraEnvFrom` or some of the `extraVolumes` values).
367# The format for secret data is "key/value" where
368# * key (templated) is the name of the secret that will be created
369# * value: an object with the standard 'data' or 'stringData' key (or both).
370# The value associated with those keys must be a string (templated)
373# '{{ .Release.Name }}-airflow-connections':
376# my.custom.label/v1: my_custom_label_value_1
378# AIRFLOW_CONN_GCP: 'base64_encoded_gcp_conn_string'
379# AIRFLOW_CONN_AWS: 'base64_encoded_aws_conn_string'
381# AIRFLOW_CONN_OTHER: 'other_conn'
382# '{{ .Release.Name }}-other-secret-name-suffix':
387# HTTP_PROXY: http://proxy_user:proxy_password@192.168.0.10:2080
388# HTTPS_PROXY: http://proxy_user:proxy_password@192.168.0.10:2080
389# NO_PROXY: "localhost,127.0.0.1,.svc.cluster.local,kubernetes.default.svc"
391# Extra ConfigMaps that will be managed by the chart
392# (You can use them with `extraEnv` or `extraEnvFrom` or some of the `extraVolumes` values).
393# The format for ConfigMap data is "key/value" where
394# * key (templated) is the name of the ConfigMap that will be created
395# * value: an object with the standard 'data' key.
396# The value associated with this keys must be a string (templated)
399# '{{ .Release.Name }}-airflow-variables':
401# my.custom.label/v2: my_custom_label_value_2
403# AIRFLOW_VAR_HELLO_MESSAGE: "Hi!"
404# AIRFLOW_VAR_KUBERNETES_NAMESPACE: "{{ .Release.Namespace }}"
406# Extra env 'items' that will be added to the definition of Airflow containers
407# a string is expected (templated).
408# TODO: difference from `env`? This is a templated string. Probably should template `env` and remove this.
411# - name: AIRFLOW__CORE__LOAD_EXAMPLES
414# Extra envFrom 'items' that will be added to the definition of Airflow containers
415# A string is expected (templated).
419# name: '{{ .Release.Name }}-airflow-connections'
421# name: '{{ .Release.Name }}-airflow-variables'
423# Airflow database & redis config
425 # If secret name is provided, secret itself has to be created manually with 'connection' key like:
430 # name: custom-airflow-metadata-secret
433 # connection: base64_encoded_connection_string
435 # The 'connection' key is base64-encoded SQLAlchemy connection string, e.g.:
436 # postgresql+psycopg2://airflow:password@postgres/airflow
437 metadataSecretName: ~
438 # If not set, falls back to metadataSecretName. The secret must contain 'connection' key which is
439 # a base64-encoded connection string, e.g.:
440 # postgresql+psycopg2://user:password@host/db
441 resultBackendSecretName: ~
442 brokerUrlSecretName: ~
443 # If `metadataSecretName` is not specified, pass connection values below
452 # Add custom annotations to the metadata connection secret
453 secretAnnotations: {}
454 # `resultBackendConnection` defaults to the same database as metadataConnection
455 resultBackendConnection: ~
456 # or, you can use a different database like:
457 # resultBackendConnection:
460 # protocol: postgresql
466 # Add custom annotations to the result backend connection secret
467 resultBackendConnectionSecretAnnotations: {}
468 # Note: `brokerUrl` can only be set during 'helm install', not 'helm upgrade' command
470 # Add custom annotations to the broker url secret
471 brokerUrlSecretAnnotations: {}
473# Note: `fernetKey` can only be set during 'helm install', not 'helm upgrade' command
475# If set, the secret must contain a 'fernet-key' key with a base64-encoded key value
476fernetKeySecretName: ~
477# Fernet key secret example:
481# name: custom-fernet-key-secret
484# fernet-key: <base64_encoded_fernet_key>
486# Add custom annotations to the fernet key secret
487fernetKeySecretAnnotations: {}
488# Flask secret key for Airflow 3+ Api: '[api] secret_key' in airflow.cfg
490# Add custom annotations to the api secret
491apiSecretAnnotations: {}
492# If set, the secret must contain a key 'api-secret-key' with a base64-encoded key value
493apiSecretKeySecretName: ~
494# API secret key example:
498# name: custom-api-secret
501# api-secret-key: <base64_encoded_api_secret_key>
503# Secret key used to encode and decode JWTs: '[api_auth] jwt_secret' in airflow.cfg
504# Note: It is not advised to use in production as during helm upgrade it will be changed
505# which can cause dag failures during component rollouts
507# Add custom annotations to the JWT secret
508jwtSecretAnnotations: {}
509# If set, the secret must contain a key 'jwt-secret' with a base64-encoded key value
515# name: custom-jwt-secret
518# jwt-secret: <base64_encoded_jwt_secret>
520# Flask secret key for Airflow <3 Webserver: '[webserver] secret_key' in airflow.cfg
521# (deprecated, use `apiSecretKey` instead (Airflow 3+))
523# Add custom annotations to the webserver secret
524# (deprecated, use `apiSecretAnnotations` instead (Airflow 3+))
525webserverSecretAnnotations: {}
526# If set, the secret must contain a key 'webserver-secret-key' with a base64-encoded key value
527# (deprecated, use `apiSecretKeySecretName` instead (Airflow 3+))
528webserverSecretKeySecretName: ~
529# Webserver secret key secret example:
533# name: custom-webserver-secret
536# webserver-secret-key: <base64_encoded_secret_key>
538# In order to use kerberos you need to create secret containing the keytab file.
539# The secret name should follow naming convention of the application where resources are
540# name '{{ .Release.Name }}-<postfix>'. In case of the keytab file, the '<postfix>' is "kerberos-keytab".
541# If your release is named "my-release" the name of the secret should be "my-release-kerberos-keytab".
543# The Keytab content should be available in the "kerberos.keytab" key of the secret.
547# kerberos.keytab: <base64_encoded keytab file content>
550# If you have keytab file you can do it with similar:
551# kubectl create secret generic {{ .Release.Name }}-kerberos-keytab --from-file=kerberos.keytab
553# Alternatively, instead of manually creating the secret, it is possible to specify
554# `kerberos.keytabBase64Content` parameter. This parameter should contain base64 encoded keytab.
557 ccacheMountPath: /var/kerberos-ccache
558 ccacheFileName: cache
559 configPath: /etc/krb5.conf
560 keytabBase64Content: ~
561 keytabPath: /etc/airflow.keytab
562 principal: airflow@FOO.COM
563 reinitFrequency: 3600
565 # This is an example config showing how you can use templating and how "example" config
566 # might look like. It works with the test kerberos server that we are using during integration
567 # testing at Apache Airflow (see 'scripts/ci/docker-compose/integration-kerberos.yml' but in
568 # order to make it production-ready you must replace it with your own configuration that
569 # Matches your kerberos deployment. Administrators of your Kerberos instance should
570 # provide the right configuration.
573 default = "FILE:{{ template "airflow_logs_no_quote" . }}/kerberos_libs.log"
574 kdc = "FILE:{{ template "airflow_logs_no_quote" . }}/kerberos_kdc.log"
575 admin_server = "FILE:{{ template "airflow_logs_no_quote" . }}/kadmind.log"
578 default_realm = FOO.COM
579 ticket_lifetime = 10h
585 kdc = kdc-server.foo.com
586 admin_server = admin_server.foo.com
588# Airflow Worker Config
590 # Number of Airflow Celery workers (deprecated, use `workers.celery.replicas` instead)
592 # Max number of old Airflow Celery workers ReplicaSets to retain
593 # (deprecated, use `workers.celery.revisionHistoryLimit` instead)
594 revisionHistoryLimit: ~
595 # Command to use when running Airflow Celery workers and using pod-template-file (templated)
596 # (deprecated, use `workers.celery.command` and/or `workers.kubernetes.command` instead)
598 # Args to use when running Airflow Celery workers (templated)
599 # (deprecated, use `workers.celery.args` instead)
603 # The format below is necessary to get `helm lint` happy
606 airflow celery worker
607 {{- if and .Values.workers.queue (ne .Values.workers.queue "default") }}
608 {{- " -q " }}{{ .Values.workers.queue }}
610 # If the Airflow Celery worker stops responding for 5 minutes (5*60s)
611 # kill the worker and let Kubernetes restart it
612 # (deprecated, use `workers.celery.livenessProbe` section instead)
614 # (deprecated, use `workers.celery.livenessProbe.enabled` instead)
616 # (deprecated, use `workers.celery.livenessProbe.initialDelaySeconds` instead)
617 initialDelaySeconds: 10
618 # (deprecated, use `workers.celery.livenessProbe.timeoutSeconds` instead)
620 # (deprecated, use `workers.celery.livenessProbe.failureThreshold` instead)
622 # (deprecated, use `workers.celery.livenessProbe.periodSeconds` instead)
624 # (deprecated, use `workers.celery.livenessProbe.command` instead)
626 # Update Strategy when Airflow Celery worker is deployed as a StatefulSet
627 # (deprecated, use `workers.celery.updateStrategy` instead)
629 # Update Strategy when Airflow Celery worker is deployed as a Deployment
630 # (deprecated, use `workers.celery.strategy` instead)
634 maxUnavailable: "50%"
635 # Allow relaxing ordering guarantees for Airflow Celery worker while preserving its uniqueness and identity
636 # (deprecated, use `workers.celery.podManagementPolicy` instead)
637 # podManagementPolicy: Parallel
639 # When not set, the values defined in the global securityContext will
640 # be used in Airflow Celery workers and pod-template-file
641 # (deprecated, use `workers.celery.securityContexts` and/or `workers.kubernetes.securityContexts` instead)
647 # Detailed default security context for the
648 # Airflow Celery workers and pod-template-file on container and pod level
649 # (deprecated, use `workers.celery.securityContexts` and/or `workers.kubernetes.securityContexts` instead)
652 # `workers.celery.securityContexts.pod` and/or
653 # `workers.kubernetes.securityContexts.pod`
657 # `workers.celery.securityContexts.container` and/or
658 # `workers.kubernetes.securityContexts.container`
661 # Container level Lifecycle Hooks definition for
662 # Airflow Celery workers and pods created with pod-template-file
664 # `workers.celery.containerLifecycleHooks` and/or
665 # `workers.kubernetes.containerLifecycleHooks`
667 containerLifecycleHooks: {}
668 # Airflow Celery workers pod disruption budget
669 # (deprecated, use `workers.celery.podDisruptionBudget` instead)
671 # (deprecated, use `workers.celery.podDisruptionBudget.enabled` instead)
673 # PDB configuration (`minAvailable` and `maxUnavailable` are mutually exclusive)
674 # (deprecated, use `workers.celery.podDisruptionBudget.config` instead)
676 # (deprecated, use `workers.celery.podDisruptionBudget.config.maxUnavailable` instead)
678 # (deprecated, use `workers.celery.podDisruptionBudget.config.minAvailable` instead)
680 # Create Service Account for Airflow Celery workers and pods created with pod-template-file
681 # (deprecated, use `workers.celery.serviceAccount` and/or `workers.kubernetes.serviceAccount` instead)
683 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
685 # `workers.celery.serviceAccount.automountServiceAccountToken` and/or
686 # `workers.kubernetes.serviceAccount.automountServiceAccountToken`
688 automountServiceAccountToken: true
689 # Specifies whether a Service Account should be created
691 # `workers.celery.serviceAccount.create` and/or
692 # `workers.kubernetes.serviceAccount.create`
695 # The name of the Service Account to use.
696 # If not set and `create` is 'true', a name is generated using the release name
698 # `workers.celery.serviceAccount.name` and/or
699 # `workers.kubernetes.serviceAccount.name`
702 # Annotations to add to worker Kubernetes Service Account.
704 # `workers.celery.serviceAccount.annotations` and/or
705 # `workers.kubernetes.serviceAccount.annotations`
708 # Allow KEDA autoscaling for Airflow Celery workers
709 # (deprecated, use `workers.celery.keda` instead)
711 # (deprecated, use `workers.celery.keda.enabled` instead)
713 # (deprecated, use `workers.celery.keda.namespaceLabels` instead)
715 # How often KEDA polls the Airflow DB to report new scale requests to the HPA
716 # (deprecated, use `workers.celery.keda.pollingInterval` instead)
718 # How many seconds KEDA will wait before scaling to zero.
719 # Note: HPA has a separate cooldown period for scale-downs
720 # (deprecated, use `workers.celery.keda.cooldownPeriod` instead)
722 # Minimum number of Airflow Celery workers created by keda
723 # (deprecated, use `workers.celery.keda.minReplicaCount` instead)
725 # Maximum number of Airflow Celery workers created by keda
726 # (deprecated, use `workers.celery.keda.maxReplicaCount` instead)
728 # Specify HPA related options
729 # (deprecated, use `workers.celery.keda.advanced` instead)
731 # horizontalPodAutoscalerConfig:
734 # stabilizationWindowSeconds: 300
740 # Query to use for KEDA autoscaling. Must return a single integer.
741 # (deprecated, use `workers.celery.keda.query` instead)
743 SELECT ceil(COUNT(*)::decimal / {{ .Values.config.celery.worker_concurrency }}) FROM task_instance WHERE (state='running' OR state='queued') AND queue IN ( {{- range $i, $q := splitList "," .Values.workers.queue -}} {{- if $i }},{{ end }}'{{ $q | trim }}' {{- end -}} ) {{- if contains "CeleryKubernetesExecutor" .Values.executor }} AND queue != '{{ .Values.config.celery_kubernetes_executor.kubernetes_queue }}' {{- else if contains "KubernetesExecutor" .Values.executor }} AND executor IS DISTINCT FROM 'KubernetesExecutor' {{- else if contains "airflow.providers.edge3.executors.EdgeExecutor" .Values.executor }} AND executor IS DISTINCT FROM 'EdgeExecutor' {{- end }}
744 # Weather to use PGBouncer to connect to the database or not when it is enabled
745 # This configuration will be ignored if PGBouncer is not enabled
746 # (deprecated, use `workers.celery.keda.usePgbouncer` instead)
748 # Allow HPA for Airflow Celery workers (KEDA must be disabled)
749 # (deprecated, use `workers.celery.hpa` instead)
751 # (deprecated, use `workers.celery.hpa.enabled` instead)
753 # Minimum number of Airflow Celery workers created by HPA
754 # (deprecated, use `workers.celery.hpa.minReplicaCount` instead)
756 # Maximum number of Airflow Celery workers created by HPA
757 # (deprecated, use `workers.celery.hpa.maxReplicaCount` instead)
759 # Specifications for which to use to calculate the desired replica count
760 # (deprecated, use `workers.celery.hpa.metrics` instead)
767 averageUtilization: 80
768 # Scaling behavior of the target in both Up and Down directions
769 # (deprecated, use `workers.celery.hpa.behavior` instead)
771 # Persistence volume configuration for Airflow Celery workers
772 # (deprecated, use `workers.celery.persistence` instead)
774 # Enable persistent volumes (deprecated, use `workers.celery.persistence.enabled` instead)
776 # This policy determines whether PVCs should be deleted when StatefulSet is scaled down or removed
777 # (deprecated, use `workers.celery.persistence.persistentVolumeClaimRetentionPolicy` instead)
778 persistentVolumeClaimRetentionPolicy: ~
779 # persistentVolumeClaimRetentionPolicy:
780 # whenDeleted: Delete
783 # Volume size for Airflow Celery worker StatefulSet
784 # (deprecated, use `workers.celery.persistence.size` instead)
786 # If using a custom storageClass, pass name ref to all StatefulSets here
787 # (deprecated, use `workers.celery.persistence.storageClassName` instead)
789 # Execute init container to chown log directory.
790 # This is currently only needed in kind, due to usage
791 # of local-path provisioner.
792 # (deprecated, use `workers.celery.persistence.fixPermissions` instead)
793 fixPermissions: false
794 # Annotations to add to Airflow Celery worker volumes
795 # (deprecated, use `workers.celery.persistence.annotations` instead)
797 # Detailed default security context for persistence on container level
798 # (deprecated, use `workers.celery.persistence.securityContexts` instead)
800 # (deprecated, use `workers.celery.persistence.securityContexts.container` instead)
802 # Kerberos sidecar configuration for Airflow Celery workers and pods created with pod-template-file
803 # (deprecated, use `workers.celery.kerberosSidecar` and/or `workers.kubernetes.kerberosSidecar` instead)
805 # Enable kerberos sidecar
807 # `workers.celery.kerberosSidecar.enabled` and/or
808 # `workers.kubernetes.kerberosSidecar.enabled`
812 # `workers.celery.kerberosSidecar.resources` and/or
813 # `workers.kubernetes.kerberosSidecar.resources`
823 # Detailed default security context for kerberos sidecar on container level
825 # `workers.celery.kerberosSidecar.securityContexts` and/or
826 # `workers.kubernetes.kerberosSidecar.securityContexts`
830 # `workers.celery.kerberosSidecar.securityContexts.container` and/or
831 # `workers.kubernetes.kerberosSidecar.securityContexts.container`
834 # Container level lifecycle hooks
836 # `workers.celery.kerberosSidecar.containerLifecycleHooks` and/or
837 # `workers.kubernetes.kerberosSidecar.containerLifecycleHooks`
839 containerLifecycleHooks: {}
840 # Kerberos init container configuration for Airflow Celery workers and pods created with pod-template-file
842 # `workers.celery.kerberosInitContainer` and/or
843 # `workers.kubernetes.kerberosInitContainer`
845 kerberosInitContainer:
846 # Enable kerberos init container
848 # `workers.celery.kerberosInitContainer.enabled` and/or
849 # `workers.kubernetes.kerberosInitContainer.enabled`
853 # `workers.celery.kerberosInitContainer.resources` and/or
854 # `workers.kubernetes.kerberosInitContainer.resources`
864 # Detailed default security context for kerberos init container
866 # `workers.celery.kerberosInitContainer.securityContexts` and/or
867 # `workers.kubernetes.kerberosInitContainer.securityContexts`
871 # `workers.celery.kerberosInitContainer.securityContexts.container` and/or
872 # `workers.kubernetes.kerberosInitContainer.securityContexts.container`
875 # Container level lifecycle hooks
877 # `workers.celery.kerberosInitContainer.containerLifecycleHooks` and/or
878 # `workers.kubernetes.kerberosInitContainer.containerLifecycleHooks`
880 containerLifecycleHooks: {}
881 # Resource configuration for Airflow Celery workers and pods created with pod-template-file
882 # (deprecated, use `workers.celery.resources` and/or `workers.kubernetes.resources` instead)
891 # Grace period for tasks to finish after SIGTERM is sent from Kubernetes.
892 # It is used by Airflow Celery workers and pod-template-file.
894 # `workers.celery.terminationGracePeriodSeconds` and/or
895 # `workers.kubernetes.terminationGracePeriodSeconds`
897 terminationGracePeriodSeconds: 600
898 # This setting tells Kubernetes that its ok to evict when it wants to scale a node down.
899 # It is used by Airflow Celery workers and pod-template-file.
901 # `workers.celery.safeToEvict` and/or
902 # `workers.kubernetes.safeToEvict`
905 # Launch additional containers into Airflow Celery worker
906 # and pods created with pod-template-file (templated).
908 # `workers.celery.extraContainers` and/or
909 # `workers.kubernetes.extraContainers`
911 # Note: If used with KubernetesExecutor, you are responsible for signaling sidecars to exit when the main
912 # container finishes so Airflow can continue the worker shutdown process!
914 # Add additional init containers into Airflow Celery workers
915 # and pods created with pod-template-file (templated).
917 # `workers.celery.extraInitContainers` and/or
918 # `workers.kubernetes.extraInitContainers`
920 extraInitContainers: []
921 # Additional volumes attached to the Airflow Celery workers
922 # and pods created with pod-template-file
923 # (deprecated, use `workers.celery.extraVolumes` and/or `workers.kubernetes.extraVolumes` instead)
925 # Mount additional volumes into workers pods. It can be templated like in the following example:
927 # - name: my-templated-extra-volume
929 # secretName: '{{ include "my_secret_template" . }}'
933 # Additional volume mounts attached to the Airflow Celery workers
934 # and pods created with pod-template-file
936 # `workers.celery.extraVolumeMounts` and/or
937 # `workers.kubernetes.extraVolumeMounts`
939 extraVolumeMounts: []
940 # Mount additional volumes into workers pods. It can be templated like in the following example:
942 # - name: my-templated-extra-volume
943 # mountPath: "{{ .Values.my_custom_path }}"
946 # Expose additional ports of Airflow Celery workers. These can be used for additional metric collection.
947 # (deprecated, use `workers.celery.extraPorts` instead)
949 # Select certain nodes for Airflow Celery worker pods and pods created with pod-template-file
950 # (deprecated, use `workers.celery.nodeSelector` and/or `workers.kubernetes.nodeSelector` instead)
952 # (deprecated, use `workers.celery.runtimeClassName` and/or `workers.kubernetes.runtimeClassName` instead)
954 # (deprecated, use `workers.celery.priorityClassName` and/or `workers.kubernetes.priorityClassName` instead)
956 # (deprecated, use `workers.celery.affinity` and/or `workers.kubernetes.affinity` instead)
958 # Default Airflow Celery worker affinity is:
960 # preferredDuringSchedulingIgnoredDuringExecution:
965 # topologyKey: kubernetes.io/hostname
968 # (deprecated, use `workers.celery.tolerations` and/or `workers.kubernetes.tolerations` instead)
971 # `workers.celery.topologySpreadConstraints` and/or
972 # `workers.kubernetes.topologySpreadConstraints`
974 topologySpreadConstraints: []
975 # hostAliases to use in Airflow Celery worker pods and pods created with pod-template-file
976 # (deprecated, use `workers.celery.hostAliases` and/or `workers.kubernetes.hostAliases` instead)
978 # https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
982 # - "test.hostname.one"
985 # - "test.hostname.two"
987 # Annotations for the Airflow Celery worker resource
988 # (deprecated, use `workers.celery.annotations` instead)
990 # Pod annotations for the Airflow Celery workers and pods created with pod-template-file (templated)
991 # (deprecated, use `workers.celery.podAnnotations` and/or `workers.kubernetes.podAnnotations` instead)
993 # Labels specific to Airflow Celery workers objects and pods created with pod-template-file
994 # (deprecated, use `workers.celery.labels` and/or `workers.kubernetes.labels` instead)
996 # Log groomer configuration for Airflow Celery workers
997 # (deprecated, use `workers.celery.logGroomerSidecar` instead)
999 # Whether to deploy the Airflow Celery worker log groomer sidecar
1000 # (deprecated, use `workers.celery.logGroomerSidecar.enabled` instead)
1002 # Command to use when running the Airflow Celery worker log groomer sidecar (templated)
1003 # (deprecated, use `workers.celery.logGroomerSidecar.command` instead)
1005 # Args to use when running the Airflow Celery worker log groomer sidecar (templated)
1006 # (deprecated, use `workers.celery.logGroomerSidecar.args` instead)
1007 args: ["bash", "/clean-logs"]
1008 # Number of days to retain logs
1009 # (deprecated, use `workers.celery.logGroomerSidecar.retentionDays` instead)
1011 # Number of minutes to retain logs.
1012 # This can be used for finer granularity than days.
1013 # Total retention is `retentionDays` + `retentionMinutes`.
1014 # (deprecated, use `workers.celery.logGroomerSidecar.retentionMinutes` instead)
1016 # Frequency to attempt to groom logs (in minutes)
1017 # (deprecated, use `workers.celery.logGroomerSidecar.frequencyMinutes` instead)
1018 frequencyMinutes: 15
1019 # Max size of logs in bytes. 0 = disabled
1020 # (deprecated, use `workers.celery.logGroomerSidecar.maxSizeBytes` instead)
1022 # Max size of logs as a percent of disk usage. 0 = disabled. Ignored if `maxSizeBytes` is set.
1023 # (deprecated, use `workers.celery.logGroomerSidecar.maxSizePercent` instead)
1025 # (deprecated, use `workers.celery.logGroomerSidecar.resources` instead)
1034 # Detailed default security context for `logGroomerSidecar` for container level
1035 # (deprecated, use `workers.celery.logGroomerSidecar.securityContexts` instead)
1037 # (deprecated, use `workers.celery.logGroomerSidecar.securityContexts.container` instead)
1039 # (deprecated, use `workers.celery.logGroomerSidecar.env` instead)
1041 # Container level lifecycle hooks
1042 # (deprecated, use `workers.celery.logGroomerSidecar.containerLifecycleHooks` instead)
1043 containerLifecycleHooks: {}
1044 # Configuration of wait-for-airflow-migration init container for Airflow Celery workers
1045 # (deprecated, use `workers.celery.waitForMigrations` instead)
1047 # Whether to create init container to wait for db migrations
1048 # (deprecated, use `workers.celery.waitForMigrations.enabled` instead)
1050 # (deprecated, use `workers.celery.waitForMigrations.env` instead)
1052 # Detailed default security context for wait-for-airflow-migrations container
1053 # (deprecated, use `workers.celery.waitForMigrations.securityContexts` instead)
1055 # (deprecated, use `workers.celery.waitForMigrations.securityContexts.container` instead)
1057 # Additional env variable configuration for Airflow Celery workers and pods created with pod-template-file
1058 # (deprecated, use `workers.celery.env` and/or `workers.kubernetes.env` instead)
1060 # Additional volume claim templates for Airflow Celery workers.
1061 # Requires mounting of specified volumes under extraVolumeMounts.
1062 # (deprecated, use `workers.celery.volumeClaimTemplates` instead)
1063 volumeClaimTemplates: []
1064 # Volume Claim Templates example:
1065 # volumeClaimTemplates:
1067 # name: data-volume-1
1069 # storageClassName: "storage-class-1"
1076 # name: data-volume-2
1078 # storageClassName: "storage-class-2"
1085 # (deprecated, use `workers.celery.schedulerName` and/or `workers.kubernetes.schedulerName` instead)
1088 # Number of Airflow Celery workers
1090 # Max number of old Airflow Celery workers ReplicaSets to retain
1091 revisionHistoryLimit: ~
1092 # Command to use when running Airflow Celery workers (templated)
1094 # Args to use when running Airflow Celery workers (templated)
1096 # If the Airflow Celery worker stops responding for 5 minutes (5*60s)
1097 # kill the worker and let Kubernetes restart it
1100 initialDelaySeconds: ~
1105 # Enable the default workers defined by the root `workers` and `workers.celery`
1106 # configurations to be created.
1107 # If false, only dedicated workers defined in 'sets' will be created.
1109 # Queue name for the default workers
1111 # List of worker sets. Each item can overwrite values from the parent `workers` and `workers.celery`
1136 # Update Strategy when Airflow Celery worker is deployed as a StatefulSet
1138 # Update Strategy when Airflow Celery worker is deployed as a Deployment
1140 # Allow relaxing ordering guarantees for Airflow Celery worker
1141 # while preserving its uniqueness and identity
1142 # podManagementPolicy: Parallel
1144 # Detailed default security context for Airflow Celery workers for container and pod level
1145 # If not set, the values from `workers.securityContexts` section will be used.
1149 # Container level Lifecycle Hooks definition for Airflow Celery workers
1150 containerLifecycleHooks: {}
1151 # Airflow Celery workers pod disruption budget
1152 podDisruptionBudget:
1154 # PDB configuration (`minAvailable` and `maxUnavailable` are mutually exclusive)
1158 # Create Service Account for Airflow Celery workers
1160 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
1161 automountServiceAccountToken: ~
1162 # Specifies whether a Service Account should be created
1164 # The name of the Service Account to use.
1165 # If not set and `create` is 'true', a name is generated using the release name
1167 # Annotations to add to worker Kubernetes Service Account.
1169 # Allow KEDA autoscaling for Airflow Celery workers
1173 # How often KEDA polls the airflow DB to report new scale requests to the HPA
1175 # How many seconds KEDA will wait before scaling to zero.
1176 # Note: HPA has a separate cooldown period for scale-downs
1178 # Minimum number of Airflow Celery workers created by KEDA
1180 # Maximum number of Airflow Celery workers created by KEDA
1182 # Specify HPA related options
1184 # horizontalPodAutoscalerConfig:
1187 # stabilizationWindowSeconds: 300
1193 # Query to use for KEDA autoscaling. Must return a single integer
1195 # Weather to use PGBouncer to connect to the database or not when it is enabled
1196 # This configuration will be ignored if PGBouncer is not enabled
1198 # Allow HPA for Airflow Celery workers (KEDA must be disabled)
1201 # Minimum number of Airflow Celery workers created by HPA
1203 # Maximum number of Airflow Celery workers created by HPA
1205 # Specifications for which to use to calculate the desired replica count
1207 # Scaling behavior of the target in both Up and Down directions
1209 # Persistence volume configuration for Airflow Celery workers
1211 # Enable persistent volumes
1213 # This policy determines whether PVCs should be deleted when StatefulSet is scaled down or removed
1214 persistentVolumeClaimRetentionPolicy: ~
1215 # persistentVolumeClaimRetentionPolicy:
1216 # whenDeleted: Delete
1217 # whenScaled: Delete
1219 # Volume size for Airflow Celery worker StatefulSet
1221 # If using a custom storageClass, pass name ref to all StatefulSets here
1223 # Execute init container to chown log directory.
1224 # This is currently only needed in kind, due to usage
1225 # of local-path provisioner.
1227 # Annotations to add to Airflow Celery worker volumes
1229 # Detailed default security context for persistence on container level
1232 # Kerberos sidecar configuration for Airflow Celery workers
1234 # Enable kerberos sidecar
1244 # Detailed default security context for kerberos sidecar on container level
1247 # Container level lifecycle hooks
1248 containerLifecycleHooks: {}
1249 # Kerberos init container configuration for Airflow Celery workers
1250 # If not set, the values from `workers.kerberosInitContainer` section will be used.
1251 kerberosInitContainer:
1252 # Enable kerberos init container
1253 # If `workers.kerberosInitContainer.enabled` is set to True, this flag has no effect
1263 # Detailed default security context for kerberos init container
1266 # Container level lifecycle hooks
1267 containerLifecycleHooks: {}
1268 # Resource configuration for Airflow Celery workers
1277 # Grace period for tasks to finish after SIGTERM is sent from Kubernetes
1278 terminationGracePeriodSeconds: ~
1279 # This setting tells Kubernetes that its ok to evict when it wants to scale a node down
1281 # Launch additional containers into Airflow Celery worker (templated)
1283 # Add additional init containers into Airflow Celery workers (templated)
1284 extraInitContainers: []
1285 # Additional volumes attached to the Airflow Celery workers
1287 # Mount additional volumes into workers pods. It can be templated like in the following example:
1289 # - name: my-templated-extra-volume
1291 # secretName: '{{ include "my_secret_template" . }}'
1295 # Additional volume mounts attached to the Airflow Celery workers
1296 extraVolumeMounts: []
1297 # Mount additional volumes into workers pods. It can be templated like in the following example:
1298 # extraVolumeMounts:
1299 # - name: my-templated-extra-volume
1300 # mountPath: "{{ .Values.my_custom_path }}"
1303 # Expose additional ports of Airflow Celery workers. These can be used for additional metric collection.
1305 # Select certain nodes for Airflow Celery worker pods
1308 priorityClassName: ~
1310 # Default Airflow Celery worker affinity is:
1312 # preferredDuringSchedulingIgnoredDuringExecution:
1313 # - podAffinityTerm:
1317 # topologyKey: kubernetes.io/hostname
1321 topologySpreadConstraints: []
1322 # hostAliases to use in Airflow Celery worker pods
1324 # https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
1328 # - "test.hostname.one"
1331 # - "test.hostname.two"
1333 # Annotations for the Airflow Celery worker resource
1335 # Pod annotations for the Airflow Celery workers (templated)
1337 # Labels specific to Airflow Celery workers objects
1339 # Log groomer configuration for Airflow Celery workers
1341 # Whether to deploy the Airflow Celery worker log groomer sidecar
1343 # Command to use when running the Airflow Celery worker log groomer sidecar (templated)
1345 # Args to use when running the Airflow Celery worker log groomer sidecar (templated)
1347 # Number of days to retain logs
1349 # Number of minutes to retain logs.
1350 # This can be used for finer granularity than days.
1351 # Total retention is `retentionDays` + `retentionMinutes`.
1353 # Frequency to attempt to groom logs (in minutes)
1355 # Max size of logs in bytes. 0 = disabled
1357 # Max size of logs as a percent of disk usage. 0 = disabled. Ignored if `maxSizeBytes` is set.
1367 # Detailed default security context for `logGroomerSidecar` for container level
1371 # Container level lifecycle hooks
1372 containerLifecycleHooks: {}
1373 # Configuration of wait-for-airflow-migration init container for Airflow Celery workers
1375 # Whether to create init container to wait for db migrations
1378 # Detailed default security context for wait-for-airflow-migrations container
1381 # Additional env variable configuration for Airflow Celery workers
1383 # Additional volume claim templates for Airflow Celery workers.
1384 # Requires mounting of specified volumes under extraVolumeMounts.
1385 volumeClaimTemplates: []
1386 # Volume Claim Templates example:
1387 # volumeClaimTemplates:
1389 # name: data-volume-1
1391 # storageClassName: "storage-class-1"
1398 # name: data-volume-2
1400 # storageClassName: "storage-class-2"
1409 # Command to use in pod-template-file (templated)
1411 # Detailed default security context for pod-template-file for container and pod level
1412 # If not set, the values from `workers.securityContexts` section will be used.
1416 # Container level Lifecycle Hooks definition for pods created with pod-template-file
1417 containerLifecycleHooks: {}
1418 # Create Service Account for pods created with pod-template-file
1419 # When this section is specified, the Service Account is created from
1420 # 'templates/workers/worker-kubernetes-serviceaccount.yaml' file
1422 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
1423 # If not specified, the `workers.serviceAccount.automountServiceAccountToken` value will be taken
1424 automountServiceAccountToken: ~
1425 # Specifies whether a Service Account should be created.
1426 # If not specified, the Service Account will be generated and used from
1427 # 'templates/workers/worker-serviceaccount.yaml' file if `workers.serviceAccount.create`
1430 # The name of the Service Account to use.
1431 # If not set and `create` is 'true', a name is generated using the release name
1432 # with Kubernetes dedicated name
1434 # Annotations to add to worker Kubernetes Service Account.
1435 # If not specified, the `workers.serviceAccount.annotations` value will be taken
1437 # Kerberos sidecar configuration for pods created with pod-template-file
1439 # Enable kerberos sidecar
1449 # Detailed default security context for kerberos sidecar on container level
1452 # Container level lifecycle hooks
1453 containerLifecycleHooks: {}
1454 # Kerberos init container configuration for pods created with pod-template-file
1455 # If not set, the values from `workers.kerberosInitContainer` section will be used.
1456 kerberosInitContainer:
1457 # Enable kerberos init container
1458 # If `workers.kerberosInitContainer.enabled` is set to True, this flag has no effect
1468 # Detailed default security context for kerberos init container
1471 # Container level lifecycle hooks
1472 containerLifecycleHooks: {}
1473 # Resource configuration for pods created with pod-template-file
1482 # Grace period for tasks to finish after SIGTERM is sent from Kubernetes
1483 terminationGracePeriodSeconds: ~
1484 # This setting tells Kubernetes that its ok to evict when it wants to scale a node down
1486 # Launch additional containers into pods created with pod-template-file (templated).
1487 # Note: You are responsible for signaling sidecars to exit when the main
1488 # container finishes so Airflow can continue the worker shutdown process!
1490 # Add additional init containers into pods created with pod-template-file (templated)
1491 extraInitContainers: []
1492 # Additional volumes attached to the pods created with pod-template-file
1494 # Mount additional volumes into workers pods. It can be templated like in the following example:
1496 # - name: my-templated-extra-volume
1498 # secretName: '{{ include "my_secret_template" . }}'
1502 # Additional volume mounts attached to the pods created with pod-template-file
1503 extraVolumeMounts: []
1504 # Mount additional volumes into workers pods. It can be templated like in the following example:
1505 # extraVolumeMounts:
1506 # - name: my-templated-extra-volume
1507 # mountPath: "{{ .Values.my_custom_path }}"
1510 # Select certain nodes for pods created with pod-template-file
1513 priorityClassName: ~
1516 topologySpreadConstraints: []
1517 # hostAliases to use in pods created with pod-template-file
1519 # https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
1523 # - "test.hostname.one"
1526 # - "test.hostname.two"
1528 # Pod annotations for the pods created with pod-template-file (templated)
1530 # Labels specific to pods created with pod-template-file
1532 # Additional env variable configuration for pods created with pod-template-file
1535# Airflow scheduler settings
1538 # hostAliases for the scheduler pod
1547 # If the scheduler stops heartbeating for 5 minutes (5*60s) kill the
1548 # scheduler and let Kubernetes restart it
1550 initialDelaySeconds: 10
1555 # Wait for at most 1 minute (6*10s) for the scheduler container to startup.
1556 # LivenessProbe kicks in after the first successful startupProbe
1558 initialDelaySeconds: 0
1563 # Amount of scheduler replicas
1565 # Max number of old replicasets to retain
1566 revisionHistoryLimit: ~
1567 # Command to use when running the Airflow scheduler (templated).
1569 # Args to use when running the Airflow scheduler (templated).
1570 args: ["bash", "-c", "exec airflow scheduler"]
1571 # Update Strategy when scheduler is deployed as a StatefulSet
1572 # (when using LocalExecutor and `workers.persistence`)
1574 # Update Strategy when scheduler is deployed as a Deployment
1575 # (when not using LocalExecutor and `workers.persistence`)
1577 # When not set, the values defined in the global `securityContext` will be used
1578 # (deprecated, use `scheduler.securityContexts` instead)
1584 # Detailed default security context for scheduler Deployments for container and pod level
1588 # Container level lifecycle hooks
1589 containerLifecycleHooks: {}
1590 # Grace period for tasks to finish after SIGTERM is sent from Kubernetes
1591 terminationGracePeriodSeconds: 10
1592 # Create Service Account
1594 # Affects all executors that launch pods
1595 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
1596 automountServiceAccountToken: true
1597 # Specifies whether a Service Account should be created
1599 # The name of the Service Account to use.
1600 # If not set and `create` is 'true', a name is generated using the release name
1602 # Annotations to add to scheduler Kubernetes Service Account.
1604 # Service Account Token Volume configuration
1605 # This is only used when `automountServiceAccountToken` is 'false'
1606 # and allows manual configuration of the Service Account token volume
1607 serviceAccountTokenVolume:
1608 # Enable manual Service Account token volume configuration
1610 # Path where the Service Account token should be mounted
1611 mountPath: /var/run/secrets/kubernetes.io/serviceaccount
1612 # Name of the volume
1613 volumeName: kube-api-access
1614 # Token expiration in seconds
1615 expirationSeconds: 3600
1616 # Audience for the token
1618 # Scheduler pod disruption budget
1619 podDisruptionBudget:
1621 # PDB configuration (`minAvailable` and `maxUnavailable` are mutually exclusive)
1633 # This setting tells Kubernetes that its ok to evict
1634 # when it wants to scale a node down.
1636 # Launch additional containers into scheduler (templated).
1638 # Add additional init containers into scheduler (templated).
1639 extraInitContainers: []
1640 # Mount additional volumes into scheduler.
1642 extraVolumeMounts: []
1643 # It can be templated like in the following example:
1645 # - name: my-templated-extra-volume
1647 # secretName: '{{ include "my_secret_template" . }}'
1651 # extraVolumeMounts:
1652 # - name: my-templated-extra-volume
1653 # mountPath: "{{ .Values.my_custom_path }}"
1656 # Select certain nodes for Airflow scheduler pods.
1659 # default scheduler affinity is:
1661 # preferredDuringSchedulingIgnoredDuringExecution:
1662 # - podAffinityTerm:
1665 # component: scheduler
1666 # topologyKey: kubernetes.io/hostname
1670 topologySpreadConstraints: []
1671 priorityClassName: ~
1672 # Annotations for scheduler Deployment
1674 # Pod annotations for scheduler pods (templated)
1676 # Labels specific to scheduler objects and pods
1679 # Whether to deploy the Airflow scheduler log groomer sidecar.
1681 # Command to use when running the Airflow scheduler log groomer sidecar (templated).
1683 # Args to use when running the Airflow scheduler log groomer sidecar (templated).
1684 args: ["bash", "/clean-logs"]
1685 # Number of days to retain logs
1687 # Number of minutes to retain logs.
1688 # This can be used for finer granularity than days.
1689 # Total retention is `retentionDays` + `retentionMinutes`.
1691 # Frequency to attempt to groom logs, in minutes
1692 frequencyMinutes: 15
1693 # Max size of logs in bytes. 0 = disabled
1695 # Max size of logs as a percent of disk usage. 0 = disabled. Ignored if `maxSizeBytes` is set.
1705 # Detailed default security context for `logGroomerSidecar` for container level
1708 # Container level lifecycle hooks
1709 containerLifecycleHooks: {}
1712 # Whether to create init container to wait for db migrations
1715 # Detailed default security context for waitForMigrations for container level
1719# Airflow create user job settings
1721 # Whether the create user job should be created
1723 # Create initial user.
1727 email: admin@example.com
1731 # Limit the lifetime of the job object after it finished execution.
1732 ttlSecondsAfterFinished: 300
1733 # Command to use when running the create user job (templated).
1735 # Args to use when running the create user job (templated).
1739 # The format below is necessary to get `helm lint` happy
1742 airflow users create "$@"
1744 # yamllint disable rule:line-length
1746 - "{{ if .Values.webserver.defaultUser }}{{ .Values.webserver.defaultUser.role }}{{ else }}{{ .Values.createUserJob.defaultUser.role }}{{ end }}"
1748 - "{{ if .Values.webserver.defaultUser }}{{ .Values.webserver.defaultUser.username }}{{ else }}{{ .Values.createUserJob.defaultUser.username }}{{ end }}"
1750 - "{{ if .Values.webserver.defaultUser }}{{ .Values.webserver.defaultUser.email }}{{ else }}{{ .Values.createUserJob.defaultUser.email }}{{ end }}"
1752 - "{{ if .Values.webserver.defaultUser }}{{ .Values.webserver.defaultUser.firstName }}{{ else }}{{ .Values.createUserJob.defaultUser.firstName }}{{ end }}"
1754 - "{{ if .Values.webserver.defaultUser }}{{ .Values.webserver.defaultUser.lastName }}{{ else }}{{ .Values.createUserJob.defaultUser.lastName }}{{ end }}"
1756 - "{{ if .Values.webserver.defaultUser }}{{ .Values.webserver.defaultUser.password }}{{ else }}{{ .Values.createUserJob.defaultUser.password }}{{ end }}"
1757 # Annotations on the create user job pod (templated)
1759 # `jobAnnotations` are annotations on the create user job
1761 restartPolicy: OnFailure
1762 # Labels specific to `createUserJob` objects and pods
1764 # When not set, the values defined in the global `securityContext` will be used
1765 # (deprecated, use `createUserJob.securityContexts` instead)
1771 # Detailed default security context for `createUserJob` for container and pod level
1775 # Container level lifecycle hooks
1776 containerLifecycleHooks: {}
1777 # Create Service Account
1779 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
1780 automountServiceAccountToken: true
1781 # Specifies whether a Service Account should be created
1783 # The name of the Service Account to use.
1784 # If not set and `create` is 'true', a name is generated using the release name
1786 # Annotations to add to create user Kubernetes Service Account.
1788 # Launch additional containers into user creation job
1790 # Add additional init containers into user creation job (templated).
1791 extraInitContainers: []
1792 # Mount additional volumes into user creation job.
1794 extraVolumeMounts: []
1795 # It can be templated like in the following example:
1797 # - name: my-templated-extra-volume
1799 # secretName: '{{ include "my_secret_template" . }}'
1803 # extraVolumeMounts:
1804 # - name: my-templated-extra-volume
1805 # mountPath: "{{ .Values.my_custom_path }}"
1811 topologySpreadConstraints: []
1812 priorityClassName: ~
1813 # In case you need to disable the helm hooks that create the jobs after install.
1814 # Disable this if you are e.g. using ArgoCD
1816 applyCustomEnv: true
1825# Airflow database migration job settings
1828 # Limit the lifetime of the job object after it finished execution.
1829 ttlSecondsAfterFinished: 300
1830 # Command to use when running the migrate database job (templated).
1832 # Args to use when running the migrate database job (templated).
1840 # Annotations on the database migration pod (templated)
1842 # `jobAnnotations` are annotations on the database migration job
1844 restartPolicy: OnFailure
1845 # Labels specific to migrate database job objects and pods
1847 # When not set, the values defined in the global `securityContext` will be used
1848 # (deprecated, use `migrateDatabaseJob.securityContexts` instead)
1854 # Detailed default security context for `migrateDatabaseJob` for container and pod level
1858 # Container level lifecycle hooks
1859 containerLifecycleHooks: {}
1860 # Create Service Account
1862 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
1863 automountServiceAccountToken: true
1864 # Specifies whether a Service Account should be created
1866 # The name of the Service Account to use.
1867 # If not set and `create` is 'true', a name is generated using the release name
1869 # Annotations to add to migrate database job Kubernetes Service Account.
1879 # Launch additional containers into database migration job
1881 # Add additional init containers into migrate database job (templated).
1882 extraInitContainers: []
1883 # Mount additional volumes into database migration job.
1885 extraVolumeMounts: []
1886 # It can be templated like in the following example:
1888 # - name: my-templated-extra-volume
1890 # secretName: '{{ include "my_secret_template" . }}'
1894 # extraVolumeMounts:
1895 # - name: my-templated-extra-volume
1896 # mountPath: "{{ .Values.my_custom_path }}"
1902 topologySpreadConstraints: []
1903 priorityClassName: ~
1904 # In case you need to disable the helm hooks that create the jobs after install.
1905 # Disable this if you are using ArgoCD for example
1907 applyCustomEnv: true
1911 # Number of Airflow API servers in the Deployment.
1912 # Omitted from the Deployment, when HPA is enabled.
1914 # Max number of old ReplicaSets to retain
1915 revisionHistoryLimit: ~
1916 # Labels specific to Airflow API server objects and pods
1918 # Command to use when running the Airflow API server (templated).
1920 # Args to use when running the Airflow API server (templated).
1921 args: ["bash", "-c", "exec airflow api-server"]
1922 # Example: To enable proxy headers support when running behind a reverse proxy:
1923 # args: ["bash", "-c", "exec airflow api-server --proxy-headers"]
1925 allowPodLogReading: true
1926 # Environment variables for the Airflow API server.
1928 # Example: To configure FORWARDED_ALLOW_IPS when running behind a reverse proxy:
1930 # - name: FORWARDED_ALLOW_IPS
1931 # value: "*" # Use "*" for trusted environments, or specify proxy IP ranges for production
1933 # Allow Horizontal Pod Autoscaler (HPA) configuration for api-server. (optional)
1934 # HPA automatically scales the number of api-server pods based on observed metrics.
1935 # HPA automatically adjusts api-server replicas between `minReplicaCount` and `maxReplicaCount` based on metrics.
1938 # Minimum number of api-servers created by HPA
1940 # Maximum number of api-servers created by HPA
1942 # Specifications for which to use to calculate the desired replica count
1949 averageUtilization: 50
1950 # Scaling behavior of the target in both Up and Down directions
1953 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
1954 automountServiceAccountToken: true
1955 # Specifies whether a Service Account should be created
1957 # The name of the Service Account to use.
1958 # If not set and `create` is 'true', a name is generated using the release name
1960 # Annotations to add to Airflow API server Kubernetes Service Account.
1964 # Service annotations
1968 port: "{{ .Values.ports.apiServer }}"
1970 # Limit load balancer source ips to list of CIDRs
1971 loadBalancerSourceRanges: []
1972 # loadBalancerSourceRanges:
1974 podDisruptionBudget:
1976 # PDB configuration (`minAvailable` and `maxUnavailable` are mutually exclusive)
1980 # Allow overriding Update Strategy for API server
1982 # Detailed default security contexts for Airflow API server Deployments for container and pod level
1986 # Container level lifecycle hooks
1987 containerLifecycleHooks: {}
1989 # Whether to create init container to wait for db migrations
1992 # Detailed default security context for waitForMigrations for container level
1995 # Launch additional containers into the Airflow API server pods.
1997 # Add additional init containers into API server (templated).
1998 extraInitContainers: []
1999 # Mount additional volumes into API server.
2001 extraVolumeMounts: []
2002 # It can be templated like in the following example:
2004 # - name: my-templated-extra-volume
2006 # secretName: '{{ include "my_secret_template" . }}'
2010 # extraVolumeMounts:
2011 # - name: my-templated-extra-volume
2012 # mountPath: "{{ .Values.my_custom_path }}"
2015 # Select certain nodes for Airflow API server pods.
2019 topologySpreadConstraints: []
2020 priorityClassName: ~
2021 # hostAliases for API server pod
2023 # Annotations for Airflow API server Deployment
2025 # Pod annotations for API server pods (templated)
2029 # Peers for Airflow API server NetworkPolicy ingress
2031 # Ports for Airflow API server NetworkPolicy ingress (if `from` is set)
2033 - port: "{{ .Values.ports.apiServer }}"
2042 # Add custom annotations to the `apiServer` ConfigMap
2043 configMapAnnotations: {}
2044 # This string (templated) will be mounted into the Airflow API Server
2045 # as a custom webserver_config.py. You can bake a webserver_config.py into
2046 # your image instead or specify a ConfigMap containing the
2047 # webserver_config.py.
2049 # apiServerConfig: |
2050 # from airflow import configuration as conf
2052 # # The SQLAlchemy connection string.
2053 # SQLALCHEMY_DATABASE_URI = conf.get('database', 'SQL_ALCHEMY_CONN')
2055 # # Flask-WTF flag for CSRF
2056 # CSRF_ENABLED = True
2057 apiServerConfigConfigMapName: ~
2059 initialDelaySeconds: 15
2065 initialDelaySeconds: 15
2071 initialDelaySeconds: 0
2076# Airflow webserver settings (only Airflow<3.0)
2079 # Add custom annotations to the webserver ConfigMap
2080 configMapAnnotations: {}
2081 # hostAliases for the webserver pod
2090 allowPodLogReading: true
2092 initialDelaySeconds: 15
2098 initialDelaySeconds: 15
2103 # Wait for at most 1 minute (6*10s) for the webserver container to startup.
2104 # LivenessProbe kicks in after the first successful startupProbe
2106 initialDelaySeconds: 0
2111 # Number of webservers
2113 # Max number of old replicasets to retain
2114 revisionHistoryLimit: ~
2115 # Command to use when running the Airflow webserver (templated).
2117 # Args to use when running the Airflow webserver (templated).
2118 args: ["bash", "-c", "exec airflow webserver"]
2119 # Grace period for webserver to finish after SIGTERM is sent from Kubernetes
2120 terminationGracePeriodSeconds: 30
2124 # Minimum number of webservers created by HPA
2126 # Maximum number of webservers created by HPA
2128 # Specifications for which to use to calculate the desired replica count
2135 averageUtilization: 80
2136 # Scaling behavior of the target in both Up and Down directions
2138 # Create Service Account
2140 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
2141 automountServiceAccountToken: true
2142 # Specifies whether a Service Account should be created
2144 # The name of the Service Account to use.
2145 # If not set and `create` is 'true', a name is generated using the release name
2147 # Annotations to add to webserver Kubernetes Service Account.
2149 # Webserver pod disruption budget
2150 podDisruptionBudget:
2152 # PDB configuration (`minAvailable` and `maxUnavailable` are mutually exclusive)
2156 # Allow overriding Update Strategy for Webserver
2158 # When not set, the values defined in the global `securityContext` will be used
2159 # (deprecated, use `webserver.securityContexts` instead)
2165 # Detailed default security contexts for webserver Deployments for container and pod level
2169 # Container level lifecycle hooks
2170 containerLifecycleHooks: {}
2171 # Additional network policies as needed (deprecated, use `webserver.networkPolicy.ingress.from` instead)
2172 extraNetworkPolicies: []
2175 # Peers for webserver NetworkPolicy ingress
2177 # Ports for webserver NetworkPolicy ingress (if `from` is set)
2179 - port: "{{ .Values.ports.airflowUI }}"
2188 # Create initial user. (deprecated, use `createUserJob` section instead)
2193 # email: admin@example.com
2198 # Launch additional containers into webserver (templated).
2200 # Add additional init containers into webserver (templated).
2201 extraInitContainers: []
2202 # Mount additional volumes into webserver.
2204 extraVolumeMounts: []
2205 # It can be templated like in the following example:
2207 # - name: my-templated-extra-volume
2209 # secretName: '{{ include "my_secret_template" . }}'
2213 # extraVolumeMounts:
2214 # - name: my-templated-extra-volume
2215 # mountPath: "{{ .Values.my_custom_path }}"
2218 # This string (templated) will be mounted into the Airflow Webserver
2219 # as a custom webserver_config.py. You can bake a webserver_config.py into
2220 # your image instead or specify a ConfigMap containing the
2221 # webserver_config.py.
2223 # webserverConfig: |
2224 # from airflow import configuration as conf
2226 # # The SQLAlchemy connection string.
2227 # SQLALCHEMY_DATABASE_URI = conf.get('database', 'SQL_ALCHEMY_CONN')
2229 # # Flask-WTF flag for CSRF
2230 # CSRF_ENABLED = True
2231 webserverConfigConfigMapName: ~
2234 # Service annotations
2238 port: "{{ .Values.ports.airflowUI }}"
2239 # To change the port used to access the webserver:
2241 # - name: airflow-ui
2243 # targetPort: airflow-ui
2244 # To only expose a sidecar, not the webserver directly:
2246 # - name: only_sidecar
2249 # If you have a public IP, set NodePort to set an external port.
2250 # Service type must be 'NodePort':
2252 # - name: airflow-ui
2258 # Limit load balancer source ips to list of CIDRs
2259 loadBalancerSourceRanges: []
2260 # loadBalancerSourceRanges:
2262 # Select certain nodes for Airflow webserver pods.
2264 priorityClassName: ~
2266 # default webserver affinity is:
2268 # preferredDuringSchedulingIgnoredDuringExecution:
2269 # - podAffinityTerm:
2272 # component: webserver
2273 # topologyKey: kubernetes.io/hostname
2277 topologySpreadConstraints: []
2278 # Annotations for webserver Deployment
2280 # Pod annotations for webserver pods (templated)
2282 # Labels specific webserver app
2285 # Whether to create init container to wait for db migrations
2288 # Detailed default security context for waitForMigrations for container level
2292# Airflow Triggerer Config
2295 # Number of Airflow triggerers in the Deployment
2297 # Max number of old replicasets to retain
2298 revisionHistoryLimit: ~
2299 # Command to use when running Airflow triggerers (templated).
2301 # Args to use when running Airflow triggerer (templated).
2302 args: ["bash", "-c", "exec airflow triggerer"]
2303 # Update Strategy when triggerer is deployed as a StatefulSet
2305 # Update Strategy when triggerer is deployed as a Deployment
2309 maxUnavailable: "50%"
2310 # If the triggerer stops heartbeating for 5 minutes (5*60s) kill the
2311 # triggerer and let Kubernetes restart it
2313 initialDelaySeconds: 10
2318 # Create Service Account
2320 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
2321 automountServiceAccountToken: true
2322 # Specifies whether a Service Account should be created
2324 # The name of the Service Account to use.
2325 # If not set and `create` is 'true', a name is generated using the release name
2327 # Annotations to add to triggerer Kubernetes Service Account.
2329 # When not set, the values defined in the global `securityContext` will be used
2330 # (deprecated, use `triggerer.securityContexts` instead)
2336 # Detailed default security context for triggerer for container and pod level
2340 # Container level lifecycle hooks
2341 containerLifecycleHooks: {}
2343 # Enable persistent volumes
2345 # This policy determines whether PVCs should be deleted when StatefulSet is scaled down or removed.
2346 persistentVolumeClaimRetentionPolicy: ~
2347 # Volume size for triggerer StatefulSet
2349 # If using a custom storageClass, pass name ref to all statefulSets here
2351 # Execute init container to chown log directory.
2352 # This is currently only needed in kind, due to usage
2353 # of local-path provisioner.
2354 fixPermissions: false
2355 # Annotations to add to triggerer volumes
2357 # Triggerer pod disruption budget
2358 podDisruptionBudget:
2360 # PDB configuration (`minAvailable` and `maxUnavailable` are mutually exclusive)
2372 # Grace period for triggerer to finish after SIGTERM is sent from Kubernetes
2373 terminationGracePeriodSeconds: 60
2374 # This setting tells Kubernetes that its ok to evict
2375 # when it wants to scale a node down.
2377 # Launch additional containers into triggerer (templated).
2379 # Add additional init containers into triggerers (templated).
2380 extraInitContainers: []
2381 # Mount additional volumes into triggerer.
2383 extraVolumeMounts: []
2384 # It can be templated like in the following example:
2386 # - name: my-templated-extra-volume
2388 # secretName: '{{ include "my_secret_template" . }}'
2392 # extraVolumeMounts:
2393 # - name: my-templated-extra-volume
2394 # mountPath: "{{ .Values.my_custom_path }}"
2397 # Select certain nodes for Airflow triggerer pods.
2400 # default triggerer affinity is:
2402 # preferredDuringSchedulingIgnoredDuringExecution:
2403 # - podAffinityTerm:
2406 # component: triggerer
2407 # topologyKey: kubernetes.io/hostname
2411 topologySpreadConstraints: []
2412 # hostAliases for the triggerer pod
2421 priorityClassName: ~
2422 # Annotations for the triggerer Deployment
2424 # Pod annotations for triggerer pods (templated)
2426 # Labels specific to triggerer objects and pods
2429 # Whether to deploy the Airflow triggerer log groomer sidecar.
2431 # Command to use when running the Airflow triggerer log groomer sidecar (templated).
2433 # Args to use when running the Airflow triggerer log groomer sidecar (templated).
2434 args: ["bash", "/clean-logs"]
2435 # Number of days to retain logs
2437 # Number of minutes to retain logs.
2438 # This can be used for finer granularity than days.
2439 # Total retention is `retentionDays` + `retentionMinutes`.
2441 # frequency to attempt to groom logs, in minutes
2442 frequencyMinutes: 15
2443 # Max size of logs in bytes. 0 = disabled
2445 # Max size of logs as a percent of disk usage. 0 = disabled. Ignored if `maxSizeBytes` is set.
2455 # Detailed default security context for `logGroomerSidecar` for container level
2458 # Container level lifecycle hooks
2459 containerLifecycleHooks: {}
2462 # Whether to create init container to wait for db migrations
2465 # Detailed default security context for waitForMigrations for container level
2469 # Allow KEDA autoscaling.
2473 # How often KEDA polls the Airflow DB to report new scale requests to the HPA
2475 # How many seconds KEDA will wait before scaling to zero.
2476 # Note that HPA has a separate cooldown period for scale-downs
2478 # Minimum number of triggerers created by keda
2480 # Maximum number of triggerers created by keda
2482 # Specify HPA related options
2484 # horizontalPodAutoscalerConfig:
2487 # stabilizationWindowSeconds: 300
2493 # Query to use for KEDA autoscaling. Must return a single integer.
2495 SELECT ceil(COUNT(*)::decimal / {{ include "triggerer.capacity" . }}) FROM trigger
2496 # Whether to use PGBouncer to connect to the database or not when it is enabled
2497 # This configuration will be ignored if PGBouncer is not enabled
2499# Airflow Dag Processor Config
2502 # Dag Bundle Configuration
2503 # Define Dag bundles in a structured YAML format. This will be automatically
2504 # converted to JSON string format for `config.dag_processor.dag_bundle_config_list`.
2505 dagBundleConfigList:
2507 classpath: "airflow.dag_processing.bundles.local.LocalDagBundle"
2510 # dagBundleConfigList:
2512 # classpath: "airflow.providers.git.bundles.git.GitDagBundle"
2514 # git_conn_id: "GITHUB__repo1"
2516 # tracking_ref: "main"
2517 # refresh_interval: 60
2519 # classpath: "airflow.providers.git.bundles.git.GitDagBundle"
2521 # git_conn_id: "GITHUB__repo2"
2523 # tracking_ref: "develop"
2524 # refresh_interval: 120
2525 # - name: dags-folder
2526 # classpath: "airflow.dag_processing.bundles.local.LocalDagBundle"
2529 # Number of Airflow dag processors in the Deployment
2531 # Max number of old ReplicaSets to retain
2532 revisionHistoryLimit: ~
2533 # Command to use when running Airflow dag processors (templated).
2535 # Args to use when running Airflow dag processor (templated).
2536 args: ["bash", "-c", "exec airflow dag-processor"]
2537 # Update Strategy for dag processors
2541 maxUnavailable: "50%"
2542 # If the dag processor stops heartbeating for 5 minutes (5*60s) kill the
2543 # dag processor and let Kubernetes restart it
2545 initialDelaySeconds: 10
2550 # Create Service Account
2552 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
2553 automountServiceAccountToken: true
2554 # Specifies whether a Service Account should be created
2556 # The name of the Service Account to use.
2557 # If not set and `create` is 'true', a name is generated using the release name
2559 # Annotations to add to dag processor Kubernetes Service Account.
2561 # Dag processor pod disruption budget
2562 podDisruptionBudget:
2564 # PDB configuration (`minAvailable` and `maxUnavailable` are mutually exclusive)
2568 # When not set, the values defined in the global `securityContext` will be used
2569 # (deprecated, use `dagProcessor.securityContexts` instead)
2575 # Detailed default security context for dagProcessor for container and pod level
2579 # Container level lifecycle hooks
2580 containerLifecycleHooks: {}
2589 # Grace period for dag processor to finish after SIGTERM is sent from Kubernetes
2590 terminationGracePeriodSeconds: 60
2591 # This setting tells Kubernetes that its ok to evict
2592 # when it wants to scale a node down.
2594 # Launch additional containers into dag processor (templated).
2596 # Add additional init containers into dag processors (templated).
2597 extraInitContainers: []
2598 # Mount additional volumes into dag processor.
2600 extraVolumeMounts: []
2601 # It can be templated like in the following example:
2603 # - name: my-templated-extra-volume
2605 # secretName: '{{ include "my_secret_template" . }}'
2609 # extraVolumeMounts:
2610 # - name: my-templated-extra-volume
2611 # mountPath: "{{ .Values.my_custom_path }}"
2614 # Select certain nodes for Airflow dag processor pods.
2617 # Default dag processor affinity is:
2619 # preferredDuringSchedulingIgnoredDuringExecution:
2620 # - podAffinityTerm:
2623 # component: dag-processor
2624 # topologyKey: kubernetes.io/hostname
2628 topologySpreadConstraints: []
2629 priorityClassName: ~
2630 # Annotations for the dag processor Deployment
2632 # Pod annotations for dag processor pods (templated)
2635 # Whether to deploy the Airflow dag processor log groomer sidecar.
2637 # Command to use when running the Airflow dag processor log groomer sidecar (templated).
2639 # Args to use when running the Airflow dag processor log groomer sidecar (templated).
2640 args: ["bash", "/clean-logs"]
2641 # Number of days to retain logs
2643 # Number of minutes to retain logs.
2644 # This can be used for finer granularity than days.
2645 # Total retention is `retentionDays` + `retentionMinutes`.
2647 # frequency to attempt to groom logs, in minutes
2648 frequencyMinutes: 15
2649 # Max size of logs in bytes. 0 = disabled
2651 # Max size of logs as a percent of disk usage. 0 = disabled. Ignored if `maxSizeBytes` is set.
2665 # Whether to create init container to wait for db migrations
2668 # Detailed default security context for waitForMigrations for container level
2671 # Labels specific to dag processor objects
2673 # Environment variables to add to dag processor container
2678 # If True, and using CeleryExecutor/CeleryKubernetesExecutor, will deploy flower app.
2681 initialDelaySeconds: 10
2683 failureThreshold: 10
2686 initialDelaySeconds: 10
2688 failureThreshold: 10
2690 # Wait for at most 1 minute (6*10s) for the flower container to startup.
2691 # LivenessProbe kicks in after the first successful StartupProbe
2693 initialDelaySeconds: 0
2697 # Max number of old ReplicaSets to retain
2698 revisionHistoryLimit: ~
2699 # Command to use when running flower (templated).
2701 # Args to use when running flower (templated).
2705 # The format below is necessary to get `helm lint` happy
2708 airflow celery flower
2709 # Additional network policies as needed (deprecated, use `flower.networkPolicy.ingress.from` instead)
2710 extraNetworkPolicies: []
2713 # Peers for flower NetworkPolicy ingress
2715 # Ports for flower NetworkPolicy ingress (if `from` is set)
2717 - port: "{{ .Values.ports.flowerUI }}"
2726 # When not set, the values defined in the global `securityContext` will be used
2727 # (deprecated, use `flower.securityContexts` instead)
2733 # Detailed default security context for flower for container and pod level
2737 # Container level lifecycle hooks
2738 containerLifecycleHooks: {}
2739 # Create Service Account
2741 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
2742 automountServiceAccountToken: true
2743 # Specifies whether a Service Account should be created
2745 # The name of the Service Account to use.
2746 # If not set and `create` is 'true', a name is generated using the release name
2748 # Annotations to add to worker Kubernetes Service Account.
2750 # If set, the secret must contain a base64-encoded 'connection' key with
2751 # a Flower basic auth connection string user:password.
2757 # name: custom-flower-secret
2760 # connection: <base64_encoded_user_password>
2762 # Add custom annotations to the flower secret
2763 secretAnnotations: {}
2764 # If `secretName` is not specified, set username and password (secret will be created automatically)
2769 # Service annotations
2773 port: "{{ .Values.ports.flowerUI }}"
2774 # To change the port used to access flower:
2778 # targetPort: flower-ui
2781 # Limit load balancer source ips to list of CIDRs
2782 loadBalancerSourceRanges: []
2783 # loadBalancerSourceRanges:
2785 # Launch additional containers into the flower pods.
2787 # Mount additional volumes into the flower pods.
2789 extraVolumeMounts: []
2790 # It can be templated like in the following example:
2792 # - name: my-templated-extra-volume
2794 # secretName: '{{ include "my_secret_template" . }}'
2798 # extraVolumeMounts:
2799 # - name: my-templated-extra-volume
2800 # mountPath: "{{ .Values.my_custom_path }}"
2803 # Select certain nodes for Airflow flower pods.
2807 topologySpreadConstraints: []
2808 priorityClassName: ~
2809 # Annotations for the flower Deployment
2811 # Pod annotations for flower pods (templated)
2813 # Labels specific to flower objects and pods
2818 # Add custom annotations to the StatsD ConfigMap
2819 configMapAnnotations: {}
2821 # Max number of old ReplicaSets to retain
2822 revisionHistoryLimit: ~
2823 # Arguments for StatsD exporter command.
2824 # By default contains path in the container to the mapping config file.
2825 args: ["--statsd.mapping-config=/etc/statsd-exporter/mappings.yml"]
2826 # If you ever need to fully override the entire `args` list, you can
2827 # supply your own array here; if set, all below flag-specific values
2828 # under `statsd.cache` section are ignored.
2830 # - "--statsd.cache-size=1000"
2831 # - "--statsd.cache-type=random"
2835 # Maximum number of metric‐mapping entries to keep in cache.
2836 # When you send more distinct metric names than this, older entries
2837 # will be evicted according to cacheType.
2839 # Metrics Eviction policy for the mapping cache.
2840 # - lru → Least‐Recently‐Used eviction
2841 # - random → Random eviction
2843 # Per‐metric time‐to‐live. When set to a non‐zero duration, any metric
2844 # series that hasn't received an update in this interval will be dropped
2845 # from the exported '/metrics' output.
2846 # Format: Go duration string (e.g. "30s", "5m", "1h")
2847 # Default: "0s" (disabled, never expires)
2849 # Annotations to add to the StatsD Deployment.
2851 # Grace period for StatsD to finish after SIGTERM is sent from Kubernetes
2852 terminationGracePeriodSeconds: 30
2853 # Create Service Account
2855 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
2856 automountServiceAccountToken: true
2857 # Specifies whether a Service Account should be created
2859 # The name of the Service Account to use.
2860 # If not set and `create` is 'true', a name is generated using the release name
2862 # Annotations to add to worker Kubernetes Service Account.
2865 # (deprecated, use `statsd.securityContexts` instead)
2871 # Detailed default security context for StatsD Deployments for container and pod level
2875 # Container level lifecycle hooks
2876 containerLifecycleHooks: {}
2877 # Additional network policies as needed
2878 extraNetworkPolicies: []
2888 extraAnnotations: {}
2889 # Select certain nodes for StatsD pods.
2893 topologySpreadConstraints: []
2894 priorityClassName: ~
2895 # Additional mappings for StatsD exporter.
2896 # If set, will merge default mapping and extra mappings, where default mapping has higher priority.
2897 # If you want to change some default mapping, please use `overrideMappings` setting.
2899 # Override mappings for StatsD exporter.
2900 # If set, will ignore setting item in default and `extraMappings`.
2901 # If you use it, ensure that it contains all mapping items.
2902 overrideMappings: []
2903 # Pod annotations for StatsD pods (templated)
2905 # Labels specific to StatsD objects and pods
2907 # Environment variables to add to StatsD container
2913 # Number of PgBouncer replicas to run in Deployment
2915 # Max number of old replicasets to retain
2916 revisionHistoryLimit: ~
2917 # Command to use for PgBouncer (templated).
2918 command: ["pgbouncer", "-u", "nobody", "/etc/pgbouncer/pgbouncer.ini"]
2919 # Args to use for PgBouncer (templated).
2921 auth_type: scram-sha-256
2922 auth_file: /etc/pgbouncer/users.txt
2923 # Whether to mount the config secret files at a default location (/etc/pgbouncer/*).
2924 # Can be skipped to allow for other means to get the values, e.g. secrets provider class.
2925 mountConfigSecret: true
2926 # Annotations to be added to the PgBouncer Deployment
2928 # Pod annotations for PgBouncer pods (templated)
2930 # Add custom annotations to the PgBouncer certificates secret
2931 certificatesSecretAnnotations: {}
2932 # Create Service Account
2934 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
2935 automountServiceAccountToken: true
2936 # Specifies whether a Service Account should be created
2938 # The name of the Service Account to use.
2939 # If not set and `create` is 'true', a name is generated using the release name
2941 # Annotations to add to worker Kubernetes Service Account.
2943 # Additional network policies as needed
2944 extraNetworkPolicies: []
2946 metadataPoolSize: 10
2947 resultBackendPoolSize: 5
2948 # Maximum clients that can connect to PgBouncer (higher = more file descriptors)
2950 # Supply the name of existing secret with 'pgbouncer.ini' and 'users.txt' defined
2956 # name: pgbouncer-config-secret
2958 # pgbouncer.ini: <base64_encoded pgbouncer.ini file content>
2959 # users.txt: <base64_encoded users.txt file content>
2962 # Add custom annotations to the PgBouncer config secret
2963 configSecretAnnotations: {}
2964 # PgBouncer pod disruption budget
2965 podDisruptionBudget:
2967 # PDB configuration (`minAvailable` and `maxUnavailable` are mutually exclusive)
2981 extraAnnotations: {}
2983 # https://www.pgbouncer.org/config.html
2985 logDisconnections: 0
2993 # Add extra PgBouncer ini configuration in the databases section:
2994 # https://www.pgbouncer.org/config.html#section-databases
2996 extraIniResultBackend: ~
2997 # Add extra general PgBouncer ini configuration: https://www.pgbouncer.org/config.html
2999 # Mount additional volumes into PgBouncer.
3000 # Volumes apply to all PgBouncer containers, while volume mounts apply to the PgBouncer
3001 # container itself. Metrics exporter container has its own mounts.
3003 extraVolumeMounts: []
3004 # It can be templated like in the following example:
3006 # - name: my-templated-extra-volume
3008 # secretName: '{{ include "my_secret_template" . }}'
3012 # extraVolumeMounts:
3013 # - name: my-templated-extra-volume
3014 # mountPath: "{{ .Values.my_custom_path }}"
3017 # Launch additional containers into PgBouncer pod.
3019 # Select certain nodes for PgBouncer pods.
3023 topologySpreadConstraints: []
3024 priorityClassName: ~
3026 # Detailed default security context for PgBouncer for container level
3030 # Container level lifecycle hooks
3031 containerLifecycleHooks:
3034 # Allow existing queries clients to complete within 120 seconds
3035 command: ["/bin/sh", "-c", "killall -INT pgbouncer && sleep 120"]
3036 metricsExporterSidecar:
3046 # Supply the name of existing secret with PGBouncer connection URI containing
3047 # stats user and password, where 'connection' key is base64-encoded value.
3053 # name: pgbouncer-stats-secret
3055 # connection: postgresql://<stats user>:<password>@127.0.0.1:6543/pgbouncer?<connection params>
3058 # Key containing the PGBouncer connection URI, defaults to 'connection' if not defined
3060 # Add custom annotations to the PgBouncer stats secret
3061 statsSecretAnnotations: {}
3062 # Detailed default security context for metricsExporterSidecar for container level
3065 # Container level lifecycle hooks
3066 containerLifecycleHooks: {}
3068 initialDelaySeconds: 10
3072 initialDelaySeconds: 10
3075 # Mount additional volumes into the metrics exporter.
3076 extraVolumeMounts: []
3077 # It can be templated like in the following example:
3078 # extraVolumeMounts:
3079 # - name: my-templated-extra-volume
3080 # mountPath: "{{ .Values.my_custom_path }}"
3082 # Labels specific to PgBouncer objects and pods
3084 # Environment variables to add to PgBouncer container
3086# Configuration for the redis provisioned by the chart
3089 terminationGracePeriodSeconds: 600
3090 # Annotations for Redis Statefulset
3092 # Create Service Account
3094 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
3095 automountServiceAccountToken: true
3096 # Specifies whether a Service Account should be created
3098 # The name of the Service Account to use.
3099 # If not set and `create` is 'true', a name is generated using the release name
3101 # Annotations to add to worker Kubernetes Service Account.
3106 # If using ClusterIP service type, custom IP address can be specified
3108 # If using NodePort service type, custom node port can be specified
3111 # Enable persistent volumes
3113 # Volume size for worker StatefulSet
3115 # If using a custom storageClass, pass name ref to all statefulSets here
3117 # Annotations to add to redis volumes
3119 # The name of an existing PVC to use
3121 persistentVolumeClaimRetentionPolicy: ~
3122 # persistentVolumeClaimRetentionPolicy:
3123 # whenDeleted: Delete
3124 # whenScaled: Delete
3125 # Configuration for empty dir volume (if `redis.persistence.enabled` == 'false')
3137 # If set use as redis secret. Make sure to also set `data.brokerUrlSecretName` value.
3138 passwordSecretName: ~
3139 # If `passwordSecretName` is not specified, set `password` field.
3140 # Otherwise a new password will be generated on install
3141 # Note: password can only be set during 'helm install', not 'helm upgrade'.
3143 # Add custom annotations to the redis password secret
3144 passwordSecretAnnotations: {}
3145 # This setting tells Kubernetes that its ok to evict
3146 # when it wants to scale a node down.
3148 # Select certain nodes for redis pods.
3152 topologySpreadConstraints: []
3153 priorityClassName: ~
3154 # Set to 0 for backwards-compatibility
3156 # (deprecated, use `redis.securityContexts` instead)
3161 # Detailed default security context for redis for container and pod level
3165 # Container level lifecycle hooks
3166 containerLifecycleHooks: {}
3167 # Labels specific to redis objects and pods
3169 # Pod annotations for Redis pods (templated)
3171# Auth secret for a private registry (deprecated, use `imagePullSecrets` instead)
3172# This is used if pulling Airflow images from a private registry
3174 # Name of the Kubernetes secret containing Base64 encoded credentials to connect to a private registry
3175 # (deprecated, use `imagePullSecrets` instead).
3177 # Credentials to connect to a private registry, these will get Base64 encoded and stored in a secret
3178 # (deprecated, use `imagePullSecrets` instead - requires manual secret creation).
3186# Elasticsearch logging configuration
3188 # Enable elasticsearch task logging
3190 # A secret containing the connection
3192 # Object representing the connection, if `secretName` not specified
3202 # Add custom annotations to the elasticsearch secret
3203 secretAnnotations: {}
3204# OpenSearch logging configuration
3206 # Enable opensearch task logging
3208 # A secret containing the connection
3210 # Object representing the connection, if `secretName` not specified
3219# All ports used by chart
3229 pgbouncerScrape: 9127
3231# Define any ResourceQuotas for namespace
3233# Define default/max/min values for pods and containers in namespace
3235# This runs as a CronJob to cleanup old pods spawned by the KubernetesExecutor.
3236# It is required to have KubernetesExecutor enabled.
3239 # Run every 15 minutes (templated).
3240 schedule: "*/15 * * * *"
3241 # To select a random-ish, deterministic starting minute between 3 and 12 inclusive for each release:
3242 # schedule: '{{- add 3 (regexFind ".$" (adler32sum .Release.Name)) -}}-59/15 * * * *'
3243 # To select the last digit of unix epoch time as the starting minute on each deploy:
3244 # schedule: '{{- now | unixEpoch | trunc -1 -}}-59/* * * * *'
3246 # Command to use when running the cleanup CronJob (templated).
3248 # Args to use when running the cleanup CronJob (templated).
3249 args: ["bash", "-c", "exec airflow kubernetes cleanup-pods --namespace={{ .Release.Namespace }}"]
3250 # `jobAnnotations` are annotations on the cleanup CronJob
3252 # Select certain nodes for Airflow cleanup pods.
3256 topologySpreadConstraints: []
3257 priorityClassName: ~
3258 # Pod annotations for cleanup pods (templated)
3260 # Labels specific to cleanup objects and pods
3270 # Create Service Account
3272 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
3273 automountServiceAccountToken: true
3274 # Specifies whether a Service Account should be created
3276 # The name of the Service Account to use.
3277 # If not set and `create` is 'true', a name is generated using the release name
3279 # Annotations to add to cleanup CronJob Kubernetes Service Account.
3281 # When not set, the values defined in the global `securityContext` will be used
3282 # (deprecated, use `cleanup.securityContexts` instead)
3288 # Detailed default security context for cleanup for container level
3292 # container level lifecycle hooks
3293 containerLifecycleHooks: {}
3294 # Specify history limit
3295 # When set, overwrite the default k8s number of successful and failed CronJob executions that are saved.
3296 failedJobsHistoryLimit: ~
3297 successfulJobsHistoryLimit: ~
3298# This runs as a CronJob to cleanup database for old entries.
3301 applyCustomEnv: true
3302 # Run every week on Sunday at midnight (templated).
3303 schedule: "0 0 * * 0"
3304 # Command to use when running the database cleanup CronJob (templated).
3306 # Args to use when running the database cleanup CronJob (templated).
3311 CLEAN_TS=$(date -d "-{{ .Values.databaseCleanup.retentionDays }} days" +"%Y-%m-%dT%H:%M:%S"); echo "Cleaning up metadata DB entries older than ${CLEAN_TS}"; exec airflow db clean --clean-before-timestamp "${CLEAN_TS}" --yes {{- if .Values.databaseCleanup.skipArchive }} --skip-archive{{ end }} {{- if .Values.databaseCleanup.verbose }} --verbose{{ end }} {{- with .Values.databaseCleanup.batchSize }} --batch-size {{ . }}{{ end }} {{- with .Values.databaseCleanup.tables }} --tables {{ . | join "," }}{{ end }}
3312 # Number of days to retain entries in the metadata database.
3314 # Don't preserve purged records in an archive table
3316 # Table names to perform maintenance on. Supported values in:
3317 # https://airflow.apache.org/docs/apache-airflow/stable/cli-and-env-variables-ref.html#clean
3319 # Maximum number of rows to delete or archive in a single transaction
3321 # Make logging output more verbose
3323 # `jobAnnotations` are annotations on the database cleanup CronJob
3325 # Select certain nodes for Airflow database cleanup pods.
3329 topologySpreadConstraints: []
3330 priorityClassName: ~
3331 # Pod annotations for database cleanup pods (templated)
3333 # Labels specific to database cleanup objects and pods
3343 # Create Service Account
3345 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
3346 automountServiceAccountToken: true
3347 # Specifies whether a Service Account should be created
3349 # The name of the Service Account to use.
3350 # If not set and `create` is 'true', a name is generated using the release name
3352 # Annotations to add to database cleanup CronJob Kubernetes Service Account.
3355 # Detailed default security context for database cleanup for container level
3359 # Container level lifecycle hooks
3360 containerLifecycleHooks: {}
3361 # Specify history limit
3362 # When set, overwrite the default k8s number of successful and failed CronJob executions that are saved.
3363 failedJobsHistoryLimit: 1
3364 successfulJobsHistoryLimit: 1
3365 # Time to live (in seconds) for Jobs created by this CronJob after they finish.
3366 ttlSecondsAfterFinished: ~
3367# Configuration for postgresql subchart
3368# Uses bitnamilegacy images to avoid Bitnami licensing restrictions
3369# Not recommended for production - use external database instead
3373 repository: bitnamilegacy/postgresql
3374 tag: "16.1.0-debian-11-r15"
3376 enablePostgresUser: true
3377 postgresPassword: postgres
3380# Config settings to go into the mounted airflow.cfg
3382# Please note that these values are passed through the `tpl` function, so are
3383# all subject to being rendered as go templates. If you need to include a
3384# literal `{{` in a value, it must be expressed like this:
3385# a: '{{ "{{ not a template }}" }}'
3387# Do not set config containing secrets via plain text values, use Env Var or k8s secret object
3388# yamllint disable rule:line-length
3391 dags_folder: '{{ include "airflow_dags" . }}'
3392 # This is ignored when used with the official Docker image
3393 load_examples: 'False'
3394 executor: '{{ .Values.executor }}'
3395 auth_manager: "airflow.providers.fab.auth_manager.fab_auth_manager.FabAuthManager"
3397 remote_logging: '{{- ternary "True" "False" (or .Values.elasticsearch.enabled .Values.opensearch.enabled) }}'
3398 colored_console_log: 'False'
3400 statsd_on: '{{ ternary "True" "False" .Values.statsd.enabled }}'
3402 statsd_prefix: airflow
3403 statsd_host: '{{ printf "%s-statsd" (include "airflow.fullname" .) }}'
3405 enable_proxy_fix: 'True'
3408 enable_proxy_fix: 'True'
3410 flower_url_prefix: '{{ ternary "" .Values.ingress.flower.path (eq .Values.ingress.flower.path "/") }}'
3411 worker_concurrency: 16
3412 sync_parallelism: '{{ include "cpu_count" (((.Values.scheduler).resources).limits).cpu }}'
3414 standalone_dag_processor: '{{ ternary "True" "False" (or (semverCompare ">=3.0.0" .Values.airflowVersion) (.Values.dagProcessor.enabled | default false)) }}'
3416 # This value is generated by default from `.Values.dagProcessor.dagBundleConfigList` using the `dag_bundle_config_list` helper function.
3417 # It is recommended to configure this via `dagProcessor.dagBundleConfigList` rather than overriding `config.dag_processor.dag_bundle_config_list` directly.
3418 dag_bundle_config_list: '{{ include "dag_bundle_config_list" . }}'
3421 log_id_template: "{dag_id}-{task_id}-{run_id}-{map_index}-{try_number}"
3422 elasticsearch_configs:
3425 retry_timeout: 'True'
3427 keytab: '{{ .Values.kerberos.keytabPath }}'
3428 reinit_frequency: '{{ .Values.kerberos.reinitFrequency }}'
3429 principal: '{{ .Values.kerberos.principal }}'
3430 ccache: '{{ .Values.kerberos.ccacheMountPath }}/{{ .Values.kerberos.ccacheFileName }}'
3431 celery_kubernetes_executor:
3432 kubernetes_queue: 'kubernetes'
3433 kubernetes_executor:
3434 namespace: '{{ .Release.Namespace }}'
3435 pod_template_file: '{{ include "airflow_pod_template_file" . }}/pod_template_file.yaml'
3436 worker_container_repository: '{{ .Values.images.airflow.repository | default .Values.defaultAirflowRepository }}'
3437 worker_container_tag: '{{ .Values.images.airflow.tag | default .Values.defaultAirflowTag }}'
3438 multi_namespace_mode: '{{ ternary "True" "False" .Values.multiNamespaceMode }}'
3439# yamllint enable rule:line-length
3441# Whether Airflow can launch workers and/or pods in multiple namespaces
3442# If true, it creates ClusterRole/ClusterRolebinding (with access to entire cluster)
3443multiNamespaceMode: false
3444# `podTemplate` is a templated string which overwrites the content of `pod_template_file.yaml` used by
3445# KubernetesExecutor. The default `podTemplate` will use `workers` configuration parameters
3446# (e.g. `workers.resources`). As such, you normally won't need to override this directly, however,
3447# you can still provide a completely custom `pod_template_file.yaml` if desired.
3448# If not set, a default one is created using `files/pod-template-file.kubernetes-helm-yaml`.
3450# The following example is NOT functional, but meant to be illustrative of how you can provide a custom
3451# `pod_template_file`. You're better off starting with the default in
3452# `files/pod-template-file.kubernetes-helm-yaml` and modifying from there.
3453# We will set `priorityClassName` in this example:
3458# name: placeholder-name
3462# release: {{ .Release.Name }}
3464# priorityClassName: high-priority
3470 # Where dags volume will be mounted. Works for both persistence and gitSync.
3471 # If not specified, dags mount path will be set to $AIRFLOW_HOME/dags
3474 # Annotations for dags PVC
3476 # Enable persistent volume for storing dags
3478 # Volume size for dags
3480 # If using a custom storageClass, pass name here
3482 # Access mode of the persistent volume
3483 accessMode: ReadWriteOnce
3484 # The name of an existing PVC to use
3486 # Optional subpath for dag volume mount
3490 # Git repo clone url
3491 repo: https://github.com/apache/airflow.git
3492 # SSH example: git@github.com:apache/airflow.git
3493 # HTTPS example: https://github.com/apache/airflow.git
3497 # The git revision (branch, tag, or hash) to check out, v4 only
3500 # The number of consecutive failures allowed before aborting
3502 # Subpath within the repo where dags are located.
3503 # Should be "" if dags are at repo root
3504 subPath: "tests/dags"
3505 # If your repo needs a username/password, you can load them to a k8s secret
3507 # credentialsSecret: git-credentials
3513 # name: git-credentials
3516 # GIT_SYNC_USERNAME: <base64_encoded_git_username>
3517 # GIT_SYNC_PASSWORD: <base64_encoded_git_password>
3519 # GITSYNC_USERNAME: <base64_encoded_git_username>
3520 # GITSYNC_PASSWORD: <base64_encoded_git_password>
3522 # If you are using an ssh clone url, you can load the ssh private key to a k8s secret
3524 # sshKeySecret: airflow-ssh-secret
3530 # name: airflow-ssh-secret
3532 # gitSshKey: <base64_encoded_data>
3534 # If `sshKeySecret` is not specified, you can set `sshKey`
3536 # -----BEGIN {OPENSSH PRIVATE KEY}-----
3538 # -----END {OPENSSH PRIVATE KEY}-----
3540 # If you are using an ssh private key, you can additionally
3541 # specify the content of your known_hosts file
3543 # <host1>,<ip1> <key1>
3544 # <host2>,<ip2> <key2>
3546 # Interval between git sync attempts in seconds.
3547 # High values are more likely to cause DAGs to become out of sync between different components.
3548 # Low values cause more traffic to the remote git repository.
3549 # Go-style duration string (e.g. "100ms" or "0.1s" = 100ms).
3550 # For backwards compatibility, wait will be used if it is specified.
3553 # Add variables from secret into gitSync containers, such proxy-config
3557 # name: 'proxy-config'
3559 containerName: git-sync
3561 # When not set, the values defined in the global `securityContext` will be used
3562 # (deprecated, use `dags.gitSync.securityContexts` instead)
3569 # Container level lifecycle hooks
3570 containerLifecycleHooks: {}
3571 # Git-Sync liveness service HTTP bind port
3573 # Setting this to true, will remove readinessProbe usage and configure livenessProbe to
3574 # use a dedicated Git-Sync liveness service. In future, behaviour with value true will be
3575 # default one and old one will be removed
3576 recommendedProbeSetting: false
3580 initialDelaySeconds: 0
3582 failureThreshold: 10
3583 # As Git-Sync is not service-type object, the usage of this section will be removed.
3584 # By setting `dags.gitSync.recommendedProbeSetting` to 'true', you will enable future behaviour.
3586 # The behaviour of the LivenessProbe will change with the next release of Helm Chart.
3587 # To enable future behaviour set `dags.gitSync.recommendedProbeSetting` to 'true'.
3588 # New behaviour uses the recommended liveness configuration by using Git-Sync built-in
3593 # initialDelaySeconds: 0
3595 # failureThreshold: 10
3597 # Mount additional volumes into git-sync.
3598 extraVolumeMounts: []
3599 # It can be templated like in the following example:
3600 # extraVolumeMounts:
3601 # - name: my-templated-extra-volume
3602 # mountPath: "{{ .Values.my_custom_path }}"
3605 # Supported env vars for gitsync can be found at https://github.com/kubernetes/git-sync
3610 # Configuration for empty dir volume
3622 # Configuration for empty dir volume (if `logs.persistence.enabled` == 'false')
3627 # Enable persistent volume for storing logs
3629 # Volume size for logs
3631 # Annotations for the logs PVC
3633 # If using a custom storageClass, pass name here
3635 # The name of an existing PVC to use
3637 # The subpath of the existing PVC to use