291 lines
9.9 KiB
YAML
291 lines
9.9 KiB
YAML
apiVersion: helm.toolkit.fluxcd.io/v2
|
|
kind: HelmRelease
|
|
metadata:
|
|
name: apache-airflow
|
|
namespace: dev
|
|
spec:
|
|
interval: 5m
|
|
chart:
|
|
spec:
|
|
chart: airflow
|
|
version: "8.9.0"
|
|
sourceRef:
|
|
kind: HelmRepository
|
|
name: apache-airflow-charts
|
|
namespace: flux-system
|
|
|
|
values:
|
|
airflow:
|
|
executor: KubernetesExecutor
|
|
|
|
## environment variables for airflow configs
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/configuration/airflow-configs.md
|
|
config:
|
|
AIRFLOW__CELERY__FLOWER_URL_PREFIX: &flowerUrlPrefix "/flower"
|
|
# AIRFLOW__WEBSERVER__EXPOSE_CONFIG: "False"
|
|
AIRFLOW__CORE__LOAD_EXAMPLES: "True"
|
|
|
|
extraEnv:
|
|
- name: AIRFLOW__CORE__FERNET_KEY
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: airflow
|
|
key: fernetKey
|
|
|
|
- name: AIRFLOW__WEBSERVER__SECRET_KEY
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: airflow
|
|
key: webserverSecretKey
|
|
|
|
## a list of users to create
|
|
## not creating any since openid is setup
|
|
users: []
|
|
|
|
## a list airflow connections to create
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/dags/airflow-connections.md
|
|
connections: []
|
|
|
|
## a list airflow variables to create
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/dags/airflow-variables.md
|
|
variables: []
|
|
|
|
## a list airflow pools to create
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/dags/airflow-pools.md
|
|
pools: []
|
|
|
|
## extra pip packages to install in airflow Pods
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/configuration/extra-python-packages.md
|
|
## [WARNING] this feature is not recommended for production use, see docs
|
|
extraPipPackages: []
|
|
|
|
## extra VolumeMounts for the airflow Pods
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/kubernetes/mount-persistent-volumes.md
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/kubernetes/mount-files.md
|
|
extraVolumeMounts: []
|
|
|
|
## extra Volumes for the airflow Pods
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/kubernetes/mount-persistent-volumes.md
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/kubernetes/mount-files.md
|
|
extraVolumes: []
|
|
|
|
## configs generating the `pod_template.yaml` file for `AIRFLOW__KUBERNETES__POD_TEMPLATE_FILE`
|
|
## [NOTE] the `dags.gitSync` values will create a git-sync init-container in the pod
|
|
## [NOTE] the `airflow.extraPipPackages` will NOT be installed
|
|
kubernetesPodTemplate:
|
|
|
|
## the full content of the pod-template file (as a string)
|
|
## [NOTE] all other `kubernetesPodTemplate.*` are disabled when this is set
|
|
stringOverride: ""
|
|
|
|
## resource requests/limits for the Pod template "base" container
|
|
## [SPEC] https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core
|
|
resources: {}
|
|
|
|
## extra pip packages to install in the Pod template
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/configuration/extra-python-packages.md
|
|
## [WARNING] this feature is not recommended for production use, see docs
|
|
extraPipPackages: []
|
|
|
|
## extra VolumeMounts for the Pod template
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/kubernetes/mount-persistent-volumes.md
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/kubernetes/mount-files.md
|
|
extraVolumeMounts: []
|
|
|
|
## extra Volumes for the Pod template
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/kubernetes/mount-persistent-volumes.md
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/kubernetes/mount-files.md
|
|
extraVolumes: []
|
|
|
|
###################################
|
|
## COMPONENT | Airflow Scheduler
|
|
###################################
|
|
scheduler:
|
|
## the number of scheduler Pods to run
|
|
replicas: 1
|
|
|
|
## resource requests/limits for the scheduler Pods
|
|
## [SPEC] https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core
|
|
resources: {}
|
|
|
|
## configs for the log-cleanup sidecar of the scheduler
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/monitoring/log-cleanup.md
|
|
logCleanup:
|
|
enabled: true
|
|
retentionMinutes: 21600
|
|
|
|
## configs for the scheduler Pods' liveness probe
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/monitoring/scheduler-liveness-probe.md
|
|
livenessProbe:
|
|
enabled: true
|
|
|
|
## configs for an additional check that ensures tasks are being created by the scheduler
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/monitoring/scheduler-liveness-probe.md
|
|
taskCreationCheck:
|
|
enabled: false
|
|
thresholdSeconds: 300
|
|
schedulerAgeBeforeCheck: 180
|
|
|
|
###################################
|
|
## COMPONENT | Airflow Webserver
|
|
###################################
|
|
web:
|
|
## the number of web Pods to run
|
|
replicas: 1
|
|
|
|
## resource requests/limits for the web Pods
|
|
## [SPEC] https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core
|
|
resources: {}
|
|
|
|
## configs for the Service of the web Pods
|
|
service:
|
|
type: ClusterIP
|
|
externalPort: 8080
|
|
|
|
webserverConfig:
|
|
enabled: true
|
|
|
|
## the name of a Secret containing a `webserver_config.py` key
|
|
existingSecret: "airflow"
|
|
|
|
# Airflow Workers
|
|
workers:
|
|
## if the airflow workers StatefulSet should be deployed
|
|
enabled: false
|
|
|
|
# Triggerer
|
|
triggerer:
|
|
## if the airflow triggerer should be deployed
|
|
enabled: true
|
|
|
|
## the number of triggerer Pods to run
|
|
replicas: 1
|
|
|
|
## resource requests/limits for the triggerer Pods
|
|
## [SPEC] https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core
|
|
resources: {}
|
|
|
|
## maximum number of triggers each triggerer will run at once (sets `AIRFLOW__TRIGGERER__DEFAULT_CAPACITY`)
|
|
capacity: 1000
|
|
|
|
# Flower
|
|
flower:
|
|
## if the airflow flower UI should be deployed
|
|
enabled: false
|
|
|
|
# Airflow Logs
|
|
logs:
|
|
## the airflow logs folder
|
|
path: /opt/airflow/logs
|
|
|
|
## configs for the logs PVC
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/monitoring/log-persistence.md
|
|
persistence:
|
|
enabled: false
|
|
|
|
# Airflow DAGs
|
|
dags:
|
|
## the airflow dags folder
|
|
path: /opt/airflow/dags
|
|
|
|
## configs for the dags PVC
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/dags/load-dag-definitions.md
|
|
persistence:
|
|
enabled: false
|
|
|
|
## configs for the git-sync sidecar
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/dags/load-dag-definitions.md
|
|
gitSync:
|
|
enabled: true
|
|
|
|
repo: "https://git.${SECRET_NEW_DOMAIN}/SeanOMik/airflow-dags.git"
|
|
branch: main
|
|
revision: HEAD
|
|
|
|
repoSubPath: "dags/"
|
|
|
|
syncWait: 60
|
|
|
|
httpSecret: airflow
|
|
httpSecretUsernameKey: gitSyncUsername
|
|
httpSecretPasswordKey: gitSyncToken
|
|
|
|
# Kubernetes Ingress
|
|
ingress:
|
|
## if we should deploy Ingress resources
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/kubernetes/ingress.md
|
|
enabled: true
|
|
|
|
web:
|
|
annotations: {}
|
|
host: "airflow.${SECRET_NEW_DOMAIN}"
|
|
path: ""
|
|
## WARNING: requires Kubernetes 1.18 or later, use "kubernetes.io/ingress.class" annotation for older versions
|
|
#ingressClassName: "nginx"
|
|
|
|
## flower ingress configs
|
|
# flower is currently disabled
|
|
flower:
|
|
annotations: {}
|
|
host: "airflow.${SECRET_NEW_DOMAIN}"
|
|
path: *flowerUrlPrefix
|
|
## WARNING: requires Kubernetes 1.18 or later, use "kubernetes.io/ingress.class" annotation for older versions
|
|
#ingressClassName: "nginx"
|
|
|
|
# Kubernetes ServiceAccount
|
|
serviceAccount:
|
|
## if a Kubernetes ServiceAccount is created
|
|
create: true
|
|
|
|
## the name of the ServiceAccount
|
|
name: ""
|
|
|
|
## annotations for the ServiceAccount
|
|
annotations: {}
|
|
|
|
# disable embedded postgres
|
|
postgresql:
|
|
enabled: false
|
|
|
|
pgbouncer:
|
|
enabled: true
|
|
|
|
externalDatabase:
|
|
type: postgres
|
|
|
|
host: postgresql.database
|
|
port: 5432
|
|
|
|
## the schema which will contain the airflow tables
|
|
database: airflow
|
|
|
|
## (username - option 1) a plain-text helm value
|
|
user: airflow
|
|
|
|
## (username - option 2) a Kubernetes secret in your airflow namespace
|
|
#userSecret: "airflow-cluster1-database-credentials"
|
|
#userSecretKey: "username"
|
|
|
|
## (password - option 1) a plain-text helm value
|
|
#password: my_airflow_password
|
|
|
|
## (password - option 2) a Kubernetes secret in your airflow namespace
|
|
passwordSecret: "airflow"
|
|
passwordSecretKey: "databasePassword"
|
|
|
|
## use this for any extra connection-string settings, e.g. ?sslmode=disable
|
|
properties: ""
|
|
|
|
# disable embedded redis
|
|
redis:
|
|
enabled: false
|
|
|
|
externalRedis:
|
|
## [FAQ] https://github.com/airflow-helm/charts/blob/main/charts/airflow/docs/faq/database/external-redis.md
|
|
host: redis-master.database
|
|
port: 6379
|
|
|
|
databaseNumber: 2
|
|
|
|
passwordSecret: airflow
|
|
passwordSecretKey: redisPassword |