values.yaml.bk 47 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645
  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
  8. #
  9. # http://www.apache.org/licenses/LICENSE-2.0
  10. #
  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
  16. # under the License.
  17. ---
  18. # Default values for airflow.
  19. # This is a YAML-formatted file.
  20. # Declare variables to be passed into your templates.
  21. # Provide a name to substitute for the full names of resources
  22. fullnameOverride: ""
  23. # Provide a name to substitute for the name of the chart
  24. nameOverride: ""
  25. # Provide a Kubernetes version (used for API Version selection) to override the auto-detected version
  26. kubeVersionOverride: ""
  27. # User and group of airflow user
  28. uid: 50000
  29. gid: 0
  30. # Default security context for airflow
  31. securityContext: {}
  32. # runAsUser: 50000
  33. # fsGroup: 0
  34. # runAsGroup: 0
  35. # Airflow home directory
  36. # Used for mount paths
  37. airflowHome: /opt/airflow
  38. # Default airflow repository -- overrides all the specific images below
  39. defaultAirflowRepository: apache/airflow
  40. # Default airflow tag to deploy
  41. defaultAirflowTag: "2.3.0"
  42. # Airflow version (Used to make some decisions based on Airflow Version being deployed)
  43. airflowVersion: "2.3.0"
  44. # Images
  45. images:
  46. airflow:
  47. repository: ~
  48. tag: ~
  49. pullPolicy: IfNotPresent
  50. # To avoid images with user code, you can turn this to 'true' and
  51. # all the 'run-airflow-migrations' and 'wait-for-airflow-migrations' containers/jobs
  52. # will use the images from 'defaultAirflowRepository:defaultAirflowTag' values
  53. # to run and wait for DB migrations .
  54. useDefaultImageForMigration: false
  55. # timeout (in seconds) for airflow-migrations to complete
  56. migrationsWaitTimeout: 60
  57. pod_template:
  58. repository: ~
  59. tag: ~
  60. pullPolicy: IfNotPresent
  61. flower:
  62. repository: ~
  63. tag: ~
  64. pullPolicy: IfNotPresent
  65. statsd:
  66. repository: apache/airflow
  67. tag: airflow-statsd-exporter-2021.04.28-v0.17.0
  68. pullPolicy: IfNotPresent
  69. redis:
  70. repository: redis
  71. tag: 6-bullseye
  72. pullPolicy: IfNotPresent
  73. pgbouncer:
  74. repository: apache/airflow
  75. tag: airflow-pgbouncer-2021.04.28-1.14.0
  76. pullPolicy: IfNotPresent
  77. pgbouncerExporter:
  78. repository: apache/airflow
  79. tag: airflow-pgbouncer-exporter-2021.09.22-0.12.0
  80. pullPolicy: IfNotPresent
  81. gitSync:
  82. repository: k8s.gcr.io/git-sync/git-sync
  83. tag: v3.4.0
  84. pullPolicy: IfNotPresent
  85. # Select certain nodes for airflow pods.
  86. nodeSelector: {}
  87. affinity: {}
  88. tolerations: []
  89. topologySpreadConstraints: []
  90. # Add common labels to all objects and pods defined in this chart.
  91. labels: {}
  92. # Ingress configuration
  93. ingress:
  94. # Enable all ingress resources (deprecated - use ingress.web.enabled and ingress.flower.enabled)
  95. enabled: ~
  96. # Configs for the Ingress of the web Service
  97. web:
  98. # Enable web ingress resource
  99. enabled: false
  100. # Annotations for the web Ingress
  101. annotations: {}
  102. # The path for the web Ingress
  103. path: "/"
  104. # The pathType for the above path (used only with Kubernetes v1.19 and above)
  105. pathType: "ImplementationSpecific"
  106. # The hostname for the web Ingress (Deprecated - renamed to `ingress.web.hosts`)
  107. host: ""
  108. # The hostnames or hosts configuration for the web Ingress
  109. hosts: []
  110. # - name: ""
  111. # # configs for web Ingress TLS
  112. # tls:
  113. # # Enable TLS termination for the web Ingress
  114. # enabled: false
  115. # # the name of a pre-created Secret containing a TLS private key and certificate
  116. # secretName: ""
  117. # The Ingress Class for the web Ingress (used only with Kubernetes v1.19 and above)
  118. ingressClassName: ""
  119. # configs for web Ingress TLS (Deprecated - renamed to `ingress.web.hosts[*].tls`)
  120. tls:
  121. # Enable TLS termination for the web Ingress
  122. enabled: false
  123. # the name of a pre-created Secret containing a TLS private key and certificate
  124. secretName: ""
  125. # HTTP paths to add to the web Ingress before the default path
  126. precedingPaths: []
  127. # Http paths to add to the web Ingress after the default path
  128. succeedingPaths: []
  129. # Configs for the Ingress of the flower Service
  130. flower:
  131. # Enable web ingress resource
  132. enabled: false
  133. # Annotations for the flower Ingress
  134. annotations: {}
  135. # The path for the flower Ingress
  136. path: "/"
  137. # The pathType for the above path (used only with Kubernetes v1.19 and above)
  138. pathType: "ImplementationSpecific"
  139. # The hostname for the flower Ingress (Deprecated - renamed to `ingress.flower.hosts`)
  140. host: ""
  141. # The hostnames or hosts configuration for the flower Ingress
  142. hosts: []
  143. # - name: ""
  144. # tls:
  145. # # Enable TLS termination for the flower Ingress
  146. # enabled: false
  147. # # the name of a pre-created Secret containing a TLS private key and certificate
  148. # secretName: ""
  149. # The Ingress Class for the flower Ingress (used only with Kubernetes v1.19 and above)
  150. ingressClassName: ""
  151. # configs for flower Ingress TLS (Deprecated - renamed to `ingress.flower.hosts[*].tls`)
  152. tls:
  153. # Enable TLS termination for the flower Ingress
  154. enabled: false
  155. # the name of a pre-created Secret containing a TLS private key and certificate
  156. secretName: ""
  157. # Network policy configuration
  158. networkPolicies:
  159. # Enabled network policies
  160. enabled: false
  161. # Extra annotations to apply to all
  162. # Airflow pods
  163. airflowPodAnnotations: {}
  164. # Extra annotations to apply to
  165. # main Airflow configmap
  166. airflowConfigAnnotations: {}
  167. # `airflow_local_settings` file as a string (can be templated).
  168. airflowLocalSettings: |-
  169. {{- if semverCompare ">=2.2.0" .Values.airflowVersion }}
  170. {{- if not (or .Values.webserverSecretKey .Values.webserverSecretKeySecretName) }}
  171. from airflow.www.utils import UIAlert
  172. DASHBOARD_UIALERTS = [
  173. UIAlert(
  174. 'Usage of a dynamic webserver secret key detected. We recommend a static webserver secret key instead.'
  175. ' See the <a href='
  176. '"https://airflow.apache.org/docs/helm-chart/stable/production-guide.html#webserver-secret-key">'
  177. 'Helm Chart Production Guide</a> for more details.',
  178. category="warning",
  179. roles=["Admin"],
  180. html=True,
  181. )
  182. ]
  183. {{- end }}
  184. {{- end }}
  185. # Enable RBAC (default on most clusters these days)
  186. rbac:
  187. # Specifies whether RBAC resources should be created
  188. create: true
  189. createSCCRoleBinding: false
  190. # Airflow executor
  191. # One of: LocalExecutor, LocalKubernetesExecutor, CeleryExecutor, KubernetesExecutor, CeleryKubernetesExecutor
  192. executor: "CeleryExecutor"
  193. # If this is true and using LocalExecutor/KubernetesExecutor/CeleryKubernetesExecutor, the scheduler's
  194. # service account will have access to communicate with the api-server and launch pods.
  195. # If this is true and using CeleryExecutor/KubernetesExecutor/CeleryKubernetesExecutor, the workers
  196. # will be able to launch pods.
  197. allowPodLaunching: true
  198. # Environment variables for all airflow containers
  199. env: []
  200. # - name: ""
  201. # value: ""
  202. # Secrets for all airflow containers
  203. secret: []
  204. # - envName: ""
  205. # secretName: ""
  206. # secretKey: ""
  207. # Enables selected built-in secrets that are set via environment variables by default.
  208. # Those secrets are provided by the Helm Chart secrets by default but in some cases you
  209. # might want to provide some of those variables with _CMD or _SECRET variable, and you should
  210. # in this case disable setting of those variables by setting the relevant configuration to false.
  211. enableBuiltInSecretEnvVars:
  212. AIRFLOW__CORE__FERNET_KEY: true
  213. # For Airflow <2.3, backward compatibility; moved to [database] in 2.3
  214. AIRFLOW__CORE__SQL_ALCHEMY_CONN: true
  215. AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: true
  216. AIRFLOW_CONN_AIRFLOW_DB: true
  217. AIRFLOW__WEBSERVER__SECRET_KEY: true
  218. AIRFLOW__CELERY__CELERY_RESULT_BACKEND: true
  219. AIRFLOW__CELERY__RESULT_BACKEND: true
  220. AIRFLOW__CELERY__BROKER_URL: true
  221. AIRFLOW__ELASTICSEARCH__HOST: true
  222. AIRFLOW__ELASTICSEARCH__ELASTICSEARCH_HOST: true
  223. # Extra secrets that will be managed by the chart
  224. # (You can use them with extraEnv or extraEnvFrom or some of the extraVolumes values).
  225. # The format is "key/value" where
  226. # * key (can be templated) is the name of the secret that will be created
  227. # * value: an object with the standard 'data' or 'stringData' key (or both).
  228. # The value associated with those keys must be a string (can be templated)
  229. extraSecrets: {}
  230. # eg:
  231. # extraSecrets:
  232. # '{{ .Release.Name }}-airflow-connections':
  233. # type: 'Opaque'
  234. # data: |
  235. # AIRFLOW_CONN_GCP: 'base64_encoded_gcp_conn_string'
  236. # AIRFLOW_CONN_AWS: 'base64_encoded_aws_conn_string'
  237. # stringData: |
  238. # AIRFLOW_CONN_OTHER: 'other_conn'
  239. # '{{ .Release.Name }}-other-secret-name-suffix':
  240. # data: |
  241. # ...
  242. # Extra ConfigMaps that will be managed by the chart
  243. # (You can use them with extraEnv or extraEnvFrom or some of the extraVolumes values).
  244. # The format is "key/value" where
  245. # * key (can be templated) is the name of the configmap that will be created
  246. # * value: an object with the standard 'data' key.
  247. # The value associated with this keys must be a string (can be templated)
  248. extraConfigMaps: {}
  249. # eg:
  250. # extraConfigMaps:
  251. # '{{ .Release.Name }}-airflow-variables':
  252. # data: |
  253. # AIRFLOW_VAR_HELLO_MESSAGE: "Hi!"
  254. # AIRFLOW_VAR_KUBERNETES_NAMESPACE: "{{ .Release.Namespace }}"
  255. # Extra env 'items' that will be added to the definition of airflow containers
  256. # a string is expected (can be templated).
  257. # TODO: difference from `env`? This is a templated string. Probably should template `env` and remove this.
  258. extraEnv: ~
  259. # eg:
  260. # extraEnv: |
  261. # - name: AIRFLOW__CORE__LOAD_EXAMPLES
  262. # value: 'True'
  263. # Extra envFrom 'items' that will be added to the definition of airflow containers
  264. # A string is expected (can be templated).
  265. extraEnvFrom: ~
  266. # eg:
  267. # extraEnvFrom: |
  268. # - secretRef:
  269. # name: '{{ .Release.Name }}-airflow-connections'
  270. # - configMapRef:
  271. # name: '{{ .Release.Name }}-airflow-variables'
  272. # Airflow database & redis config
  273. data:
  274. # If secret names are provided, use those secrets
  275. metadataSecretName: ~
  276. resultBackendSecretName: ~
  277. brokerUrlSecretName: ~
  278. # Otherwise pass connection values in
  279. metadataConnection:
  280. user: postgres
  281. pass: postgres
  282. protocol: postgresql
  283. host: ~
  284. port: 5432
  285. db: postgres
  286. sslmode: disable
  287. # resultBackendConnection defaults to the same database as metadataConnection
  288. resultBackendConnection: ~
  289. # or, you can use a different database
  290. # resultBackendConnection:
  291. # user: postgres
  292. # pass: postgres
  293. # protocol: postgresql
  294. # host: ~
  295. # port: 5432
  296. # db: postgres
  297. # sslmode: disable
  298. # Note: brokerUrl can only be set during install, not upgrade
  299. brokerUrl: ~
  300. # Fernet key settings
  301. # Note: fernetKey can only be set during install, not upgrade
  302. fernetKey: ~
  303. fernetKeySecretName: ~
  304. # Flask secret key for Airflow Webserver: `[webserver] secret_key` in airflow.cfg
  305. webserverSecretKey: ~
  306. webserverSecretKeySecretName: ~
  307. # In order to use kerberos you need to create secret containing the keytab file
  308. # The secret name should follow naming convention of the application where resources are
  309. # name {{ .Release-name }}-<POSTFIX>. In case of the keytab file, the postfix is "kerberos-keytab"
  310. # So if your release is named "my-release" the name of the secret should be "my-release-kerberos-keytab"
  311. #
  312. # The Keytab content should be available in the "kerberos.keytab" key of the secret.
  313. #
  314. # apiVersion: v1
  315. # kind: Secret
  316. # data:
  317. # kerberos.keytab: <base64_encoded keytab file content>
  318. # type: Opaque
  319. #
  320. #
  321. # If you have such keytab file you can do it with similar
  322. #
  323. # kubectl create secret generic {{ .Release.name }}-kerberos-keytab --from-file=kerberos.keytab
  324. #
  325. #
  326. # Alternatively, instead of manually creating the secret, it is possible to specify
  327. # kerberos.keytabBase64Content parameter. This parameter should contain base64 encoded keytab.
  328. #
  329. kerberos:
  330. enabled: false
  331. ccacheMountPath: /var/kerberos-ccache
  332. ccacheFileName: cache
  333. configPath: /etc/krb5.conf
  334. keytabBase64Content: ~
  335. keytabPath: /etc/airflow.keytab
  336. principal: airflow@FOO.COM
  337. reinitFrequency: 3600
  338. config: |
  339. # This is an example config showing how you can use templating and how "example" config
  340. # might look like. It works with the test kerberos server that we are using during integration
  341. # testing at Apache Airflow (see `scripts/ci/docker-compose/integration-kerberos.yml` but in
  342. # order to make it production-ready you must replace it with your own configuration that
  343. # Matches your kerberos deployment. Administrators of your Kerberos instance should
  344. # provide the right configuration.
  345. [logging]
  346. default = "FILE:{{ template "airflow_logs_no_quote" . }}/kerberos_libs.log"
  347. kdc = "FILE:{{ template "airflow_logs_no_quote" . }}/kerberos_kdc.log"
  348. admin_server = "FILE:{{ template "airflow_logs_no_quote" . }}/kadmind.log"
  349. [libdefaults]
  350. default_realm = FOO.COM
  351. ticket_lifetime = 10h
  352. renew_lifetime = 7d
  353. forwardable = true
  354. [realms]
  355. FOO.COM = {
  356. kdc = kdc-server.foo.com
  357. admin_server = admin_server.foo.com
  358. }
  359. # Airflow Worker Config
  360. workers:
  361. # Number of airflow celery workers in StatefulSet
  362. replicas: 1
  363. # Command to use when running Airflow workers (templated).
  364. command: ~
  365. # Args to use when running Airflow workers (templated).
  366. args:
  367. - "bash"
  368. - "-c"
  369. # The format below is necessary to get `helm lint` happy
  370. - |-
  371. exec \
  372. airflow {{ semverCompare ">=2.0.0" .Values.airflowVersion | ternary "celery worker" "worker" }}
  373. # Update Strategy when worker is deployed as a StatefulSet
  374. updateStrategy: ~
  375. # Update Strategy when worker is deployed as a Deployment
  376. strategy:
  377. rollingUpdate:
  378. maxSurge: "100%"
  379. maxUnavailable: "50%"
  380. # When not set, the values defined in the global securityContext will be used
  381. securityContext: {}
  382. # runAsUser: 50000
  383. # fsGroup: 0
  384. # runAsGroup: 0
  385. # Create ServiceAccount
  386. serviceAccount:
  387. # Specifies whether a ServiceAccount should be created
  388. create: true
  389. # The name of the ServiceAccount to use.
  390. # If not set and create is true, a name is generated using the release name
  391. name: ~
  392. # Annotations to add to worker kubernetes service account.
  393. annotations: {}
  394. # Allow KEDA autoscaling.
  395. # Persistence.enabled must be set to false to use KEDA.
  396. keda:
  397. enabled: false
  398. namespaceLabels: {}
  399. # How often KEDA polls the airflow DB to report new scale requests to the HPA
  400. pollingInterval: 5
  401. # How many seconds KEDA will wait before scaling to zero.
  402. # Note that HPA has a separate cooldown period for scale-downs
  403. cooldownPeriod: 30
  404. # Minimum number of workers created by keda
  405. minReplicaCount: 0
  406. # Maximum number of workers created by keda
  407. maxReplicaCount: 10
  408. persistence:
  409. # Enable persistent volumes
  410. enabled: true
  411. # Volume size for worker StatefulSet
  412. size: 100Gi
  413. # If using a custom storageClass, pass name ref to all statefulSets here
  414. storageClassName:
  415. # Execute init container to chown log directory.
  416. # This is currently only needed in kind, due to usage
  417. # of local-path provisioner.
  418. fixPermissions: false
  419. # Annotations to add to worker volumes
  420. annotations: {}
  421. kerberosSidecar:
  422. # Enable kerberos sidecar
  423. enabled: false
  424. resources: {}
  425. # limits:
  426. # cpu: 100m
  427. # memory: 128Mi
  428. # requests:
  429. # cpu: 100m
  430. # memory: 128Mi
  431. resources: {}
  432. # limits:
  433. # cpu: 100m
  434. # memory: 128Mi
  435. # requests:
  436. # cpu: 100m
  437. # memory: 128Mi
  438. # Grace period for tasks to finish after SIGTERM is sent from kubernetes
  439. terminationGracePeriodSeconds: 600
  440. # This setting tells kubernetes that its ok to evict
  441. # when it wants to scale a node down.
  442. safeToEvict: true
  443. # Launch additional containers into worker.
  444. # Note: If used with KubernetesExecutor, you are responsible for signaling sidecars to exit when the main
  445. # container finishes so Airflow can continue the worker shutdown process!
  446. extraContainers: []
  447. # Add additional init containers into workers.
  448. extraInitContainers: []
  449. # Mount additional volumes into worker.
  450. extraVolumes: []
  451. extraVolumeMounts: []
  452. # Select certain nodes for airflow worker pods.
  453. nodeSelector: {}
  454. priorityClassName: ~
  455. affinity: {}
  456. # default worker affinity is:
  457. # podAntiAffinity:
  458. # preferredDuringSchedulingIgnoredDuringExecution:
  459. # - podAffinityTerm:
  460. # labelSelector:
  461. # matchLabels:
  462. # component: worker
  463. # topologyKey: kubernetes.io/hostname
  464. # weight: 100
  465. tolerations: []
  466. topologySpreadConstraints: []
  467. # hostAliases to use in worker pods.
  468. # See:
  469. # https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
  470. hostAliases: []
  471. # - ip: "127.0.0.2"
  472. # hostnames:
  473. # - "test.hostname.one"
  474. # - ip: "127.0.0.3"
  475. # hostnames:
  476. # - "test.hostname.two"
  477. podAnnotations: {}
  478. logGroomerSidecar:
  479. # Command to use when running the Airflow worker log groomer sidecar (templated).
  480. command: ~
  481. # Args to use when running the Airflow worker log groomer sidecar (templated).
  482. args: ["bash", "/clean-logs"]
  483. # Number of days to retain logs
  484. retentionDays: 15
  485. resources: {}
  486. # limits:
  487. # cpu: 100m
  488. # memory: 128Mi
  489. # requests:
  490. # cpu: 100m
  491. # memory: 128Mi
  492. # Airflow scheduler settings
  493. scheduler:
  494. # If the scheduler stops heartbeating for 5 minutes (5*60s) kill the
  495. # scheduler and let Kubernetes restart it
  496. livenessProbe:
  497. initialDelaySeconds: 10
  498. timeoutSeconds: 20
  499. failureThreshold: 5
  500. periodSeconds: 60
  501. command: ~
  502. # Airflow 2.0 allows users to run multiple schedulers,
  503. # However this feature is only recommended for MySQL 8+ and Postgres
  504. replicas: 1
  505. # Command to use when running the Airflow scheduler (templated).
  506. command: ~
  507. # Args to use when running the Airflow scheduler (templated).
  508. args: ["bash", "-c", "exec airflow scheduler"]
  509. # Update Strategy when scheduler is deployed as a StatefulSet
  510. # (when using LocalExecutor and workers.persistence)
  511. updateStrategy: ~
  512. # Update Strategy when scheduler is deployed as a Deployment
  513. # (when not using LocalExecutor and workers.persistence)
  514. strategy: ~
  515. # When not set, the values defined in the global securityContext will be used
  516. securityContext: {}
  517. # runAsUser: 50000
  518. # fsGroup: 0
  519. # runAsGroup: 0
  520. # Create ServiceAccount
  521. serviceAccount:
  522. # Specifies whether a ServiceAccount should be created
  523. create: true
  524. # The name of the ServiceAccount to use.
  525. # If not set and create is true, a name is generated using the release name
  526. name: ~
  527. # Annotations to add to scheduler kubernetes service account.
  528. annotations: {}
  529. # Scheduler pod disruption budget
  530. podDisruptionBudget:
  531. enabled: false
  532. # PDB configuration
  533. config:
  534. maxUnavailable: 1
  535. resources: {}
  536. # limits:
  537. # cpu: 100m
  538. # memory: 128Mi
  539. # requests:
  540. # cpu: 100m
  541. # memory: 128Mi
  542. # This setting tells kubernetes that its ok to evict
  543. # when it wants to scale a node down.
  544. safeToEvict: true
  545. # Launch additional containers into scheduler.
  546. extraContainers: []
  547. # Add additional init containers into scheduler.
  548. extraInitContainers: []
  549. # Mount additional volumes into scheduler.
  550. extraVolumes: []
  551. extraVolumeMounts: []
  552. # Select certain nodes for airflow scheduler pods.
  553. nodeSelector: {}
  554. affinity: {}
  555. # default scheduler affinity is:
  556. # podAntiAffinity:
  557. # preferredDuringSchedulingIgnoredDuringExecution:
  558. # - podAffinityTerm:
  559. # labelSelector:
  560. # matchLabels:
  561. # component: scheduler
  562. # topologyKey: kubernetes.io/hostname
  563. # weight: 100
  564. tolerations: []
  565. topologySpreadConstraints: []
  566. priorityClassName: ~
  567. podAnnotations: {}
  568. logGroomerSidecar:
  569. # Whether to deploy the Airflow scheduler log groomer sidecar.
  570. enabled: true
  571. # Command to use when running the Airflow scheduler log groomer sidecar (templated).
  572. command: ~
  573. # Args to use when running the Airflow scheduler log groomer sidecar (templated).
  574. args: ["bash", "/clean-logs"]
  575. # Number of days to retain logs
  576. retentionDays: 15
  577. resources: {}
  578. # limits:
  579. # cpu: 100m
  580. # memory: 128Mi
  581. # requests:
  582. # cpu: 100m
  583. # memory: 128Mi
  584. waitForMigrations:
  585. # Whether to create init container to wait for db migrations
  586. enabled: true
  587. # Airflow create user job settings
  588. createUserJob:
  589. # Command to use when running the create user job (templated).
  590. command: ~
  591. # Args to use when running the create user job (templated).
  592. args:
  593. - "bash"
  594. - "-c"
  595. # The format below is necessary to get `helm lint` happy
  596. - |-
  597. exec \
  598. airflow {{ semverCompare ">=2.0.0" .Values.airflowVersion | ternary "users create" "create_user" }} "$@"
  599. - --
  600. - "-r"
  601. - "{{ .Values.webserver.defaultUser.role }}"
  602. - "-u"
  603. - "{{ .Values.webserver.defaultUser.username }}"
  604. - "-e"
  605. - "{{ .Values.webserver.defaultUser.email }}"
  606. - "-f"
  607. - "{{ .Values.webserver.defaultUser.firstName }}"
  608. - "-l"
  609. - "{{ .Values.webserver.defaultUser.lastName }}"
  610. - "-p"
  611. - "{{ .Values.webserver.defaultUser.password }}"
  612. # Annotations on the create user job pod
  613. annotations: {}
  614. # jobAnnotations are annotations on the create user job
  615. jobAnnotations: {}
  616. # When not set, the values defined in the global securityContext will be used
  617. securityContext: {}
  618. # runAsUser: 50000
  619. # fsGroup: 0
  620. # runAsGroup: 0
  621. # Create ServiceAccount
  622. serviceAccount:
  623. # Specifies whether a ServiceAccount should be created
  624. create: true
  625. # The name of the ServiceAccount to use.
  626. # If not set and create is true, a name is generated using the release name
  627. name: ~
  628. # Annotations to add to create user kubernetes service account.
  629. annotations: {}
  630. # Launch additional containers into user creation job
  631. extraContainers: []
  632. # Mount additional volumes into user creation job
  633. extraVolumes: []
  634. extraVolumeMounts: []
  635. nodeSelector: {}
  636. affinity: {}
  637. tolerations: []
  638. topologySpreadConstraints: []
  639. # In case you need to disable the helm hooks that create the jobs after install.
  640. # Disable this if you are using ArgoCD for example
  641. useHelmHooks: true
  642. resources: {}
  643. # limits:
  644. # cpu: 100m
  645. # memory: 128Mi
  646. # requests:
  647. # cpu: 100m
  648. # memory: 128Mi
  649. # Airflow database migration job settings
  650. migrateDatabaseJob:
  651. enabled: true
  652. # Command to use when running the migrate database job (templated).
  653. command: ~
  654. # Args to use when running the migrate database job (templated).
  655. args:
  656. - "bash"
  657. - "-c"
  658. # The format below is necessary to get `helm lint` happy
  659. - |-
  660. exec \
  661. airflow {{ semverCompare ">=2.0.0" .Values.airflowVersion | ternary "db upgrade" "upgradedb" }}
  662. # Annotations on the database migration pod
  663. annotations: {}
  664. # jobAnnotations are annotations on the database migration job
  665. jobAnnotations: {}
  666. # When not set, the values defined in the global securityContext will be used
  667. securityContext: {}
  668. # runAsUser: 50000
  669. # fsGroup: 0
  670. # runAsGroup: 0
  671. # Create ServiceAccount
  672. serviceAccount:
  673. # Specifies whether a ServiceAccount should be created
  674. create: true
  675. # The name of the ServiceAccount to use.
  676. # If not set and create is true, a name is generated using the release name
  677. name: ~
  678. # Annotations to add to migrate database job kubernetes service account.
  679. annotations: {}
  680. resources: {}
  681. # limits:
  682. # cpu: 100m
  683. # memory: 128Mi
  684. # requests:
  685. # cpu: 100m
  686. # memory: 128Mi
  687. # Launch additional containers into database migration job
  688. extraContainers: []
  689. # Mount additional volumes into database migration job
  690. extraVolumes: []
  691. extraVolumeMounts: []
  692. nodeSelector: {}
  693. affinity: {}
  694. tolerations: []
  695. topologySpreadConstraints: []
  696. # In case you need to disable the helm hooks that create the jobs after install.
  697. # Disable this if you are using ArgoCD for example
  698. useHelmHooks: true
  699. # Airflow webserver settings
  700. webserver:
  701. allowPodLogReading: true
  702. livenessProbe:
  703. initialDelaySeconds: 15
  704. timeoutSeconds: 30
  705. failureThreshold: 20
  706. periodSeconds: 5
  707. readinessProbe:
  708. initialDelaySeconds: 15
  709. timeoutSeconds: 30
  710. failureThreshold: 20
  711. periodSeconds: 5
  712. # Number of webservers
  713. replicas: 1
  714. # Command to use when running the Airflow webserver (templated).
  715. command: ~
  716. # Args to use when running the Airflow webserver (templated).
  717. args: ["bash", "-c", "exec airflow webserver"]
  718. # Create ServiceAccount
  719. serviceAccount:
  720. # Specifies whether a ServiceAccount should be created
  721. create: true
  722. # The name of the ServiceAccount to use.
  723. # If not set and create is true, a name is generated using the release name
  724. name: ~
  725. # Annotations to add to webserver kubernetes service account.
  726. annotations: {}
  727. # Webserver pod disruption budget
  728. podDisruptionBudget:
  729. enabled: false
  730. # PDB configuration
  731. config:
  732. maxUnavailable: 1
  733. # Allow overriding Update Strategy for Webserver
  734. strategy: ~
  735. # When not set, the values defined in the global securityContext will be used
  736. securityContext: {}
  737. # runAsUser: 50000
  738. # fsGroup: 0
  739. # runAsGroup: 0
  740. # Additional network policies as needed (Deprecated - renamed to `webserver.networkPolicy.ingress.from`)
  741. extraNetworkPolicies: []
  742. networkPolicy:
  743. ingress:
  744. # Peers for webserver NetworkPolicy ingress
  745. from: []
  746. # Ports for webserver NetworkPolicy ingress (if `from` is set)
  747. ports:
  748. - port: "{{ .Values.ports.airflowUI }}"
  749. resources: {}
  750. # limits:
  751. # cpu: 100m
  752. # memory: 128Mi
  753. # requests:
  754. # cpu: 100m
  755. # memory: 128Mi
  756. # Create initial user.
  757. defaultUser:
  758. enabled: true
  759. role: Admin
  760. username: admin
  761. email: admin@example.com
  762. firstName: admin
  763. lastName: user
  764. password: admin
  765. # Launch additional containers into webserver.
  766. extraContainers: []
  767. # Add additional init containers into webserver.
  768. extraInitContainers: []
  769. # Mount additional volumes into webserver.
  770. extraVolumes: []
  771. extraVolumeMounts: []
  772. # This string (can be templated) will be mounted into the Airflow Webserver as a custom
  773. # webserver_config.py. You can bake a webserver_config.py in to your image instead.
  774. webserverConfig: ~
  775. # webserverConfig: |
  776. # from airflow import configuration as conf
  777. # # The SQLAlchemy connection string.
  778. # SQLALCHEMY_DATABASE_URI = conf.get('database', 'SQL_ALCHEMY_CONN')
  779. # # Flask-WTF flag for CSRF
  780. # CSRF_ENABLED = True
  781. service:
  782. type: ClusterIP
  783. ## service annotations
  784. annotations: {}
  785. ports:
  786. - name: airflow-ui
  787. port: "{{ .Values.ports.airflowUI }}"
  788. # To change the port used to access the webserver:
  789. # ports:
  790. # - name: airflow-ui
  791. # port: 80
  792. # targetPort: airflow-ui
  793. # To only expose a sidecar, not the webserver directly:
  794. # ports:
  795. # - name: only_sidecar
  796. # port: 80
  797. # targetPort: 8888
  798. loadBalancerIP: ~
  799. ## Limit load balancer source ips to list of CIDRs
  800. # loadBalancerSourceRanges:
  801. # - "10.123.0.0/16"
  802. loadBalancerSourceRanges: []
  803. # Select certain nodes for airflow webserver pods.
  804. nodeSelector: {}
  805. priorityClassName: ~
  806. affinity: {}
  807. # default webserver affinity is:
  808. # podAntiAffinity:
  809. # preferredDuringSchedulingIgnoredDuringExecution:
  810. # - podAffinityTerm:
  811. # labelSelector:
  812. # matchLabels:
  813. # component: webserver
  814. # topologyKey: kubernetes.io/hostname
  815. # weight: 100
  816. tolerations: []
  817. topologySpreadConstraints: []
  818. podAnnotations: {}
  819. waitForMigrations:
  820. # Whether to create init container to wait for db migrations
  821. enabled: true
  822. # Airflow Triggerer Config
  823. triggerer:
  824. enabled: true
  825. # Number of airflow triggerers in the deployment
  826. replicas: 1
  827. # Command to use when running Airflow triggerers (templated).
  828. command: ~
  829. # Args to use when running Airflow triggerer (templated).
  830. args: ["bash", "-c", "exec airflow triggerer"]
  831. # Update Strategy for triggerers
  832. strategy:
  833. rollingUpdate:
  834. maxSurge: "100%"
  835. maxUnavailable: "50%"
  836. # If the triggerer stops heartbeating for 5 minutes (5*60s) kill the
  837. # triggerer and let Kubernetes restart it
  838. livenessProbe:
  839. initialDelaySeconds: 10
  840. timeoutSeconds: 20
  841. failureThreshold: 5
  842. periodSeconds: 60
  843. command: ~
  844. # Create ServiceAccount
  845. serviceAccount:
  846. # Specifies whether a ServiceAccount should be created
  847. create: true
  848. # The name of the ServiceAccount to use.
  849. # If not set and create is true, a name is generated using the release name
  850. name: ~
  851. # Annotations to add to triggerer kubernetes service account.
  852. annotations: {}
  853. # When not set, the values defined in the global securityContext will be used
  854. securityContext: {}
  855. # runAsUser: 50000
  856. # fsGroup: 0
  857. # runAsGroup: 0
  858. resources: {}
  859. # limits:
  860. # cpu: 100m
  861. # memory: 128Mi
  862. # requests:
  863. # cpu: 100m
  864. # memory: 128Mi
  865. # Grace period for triggerer to finish after SIGTERM is sent from kubernetes
  866. terminationGracePeriodSeconds: 60
  867. # This setting tells kubernetes that its ok to evict
  868. # when it wants to scale a node down.
  869. safeToEvict: true
  870. # Launch additional containers into triggerer.
  871. extraContainers: []
  872. # Add additional init containers into triggerers.
  873. extraInitContainers: []
  874. # Mount additional volumes into triggerer.
  875. extraVolumes: []
  876. extraVolumeMounts: []
  877. # Select certain nodes for airflow triggerer pods.
  878. nodeSelector: {}
  879. affinity: {}
  880. # default triggerer affinity is:
  881. # podAntiAffinity:
  882. # preferredDuringSchedulingIgnoredDuringExecution:
  883. # - podAffinityTerm:
  884. # labelSelector:
  885. # matchLabels:
  886. # component: triggerer
  887. # topologyKey: kubernetes.io/hostname
  888. # weight: 100
  889. tolerations: []
  890. topologySpreadConstraints: []
  891. priorityClassName: ~
  892. podAnnotations: {}
  893. waitForMigrations:
  894. # Whether to create init container to wait for db migrations
  895. enabled: true
  896. # Flower settings
  897. flower:
  898. # Enable flower.
  899. # If True, and using CeleryExecutor/CeleryKubernetesExecutor, will deploy flower app.
  900. enabled: false
  901. # Command to use when running flower (templated).
  902. command: ~
  903. # Args to use when running flower (templated).
  904. args:
  905. - "bash"
  906. - "-c"
  907. # The format below is necessary to get `helm lint` happy
  908. - |-
  909. exec \
  910. airflow {{ semverCompare ">=2.0.0" .Values.airflowVersion | ternary "celery flower" "flower" }}
  911. # Additional network policies as needed (Deprecated - renamed to `flower.networkPolicy.ingress.from`)
  912. extraNetworkPolicies: []
  913. networkPolicy:
  914. ingress:
  915. # Peers for flower NetworkPolicy ingress
  916. from: []
  917. # Ports for flower NetworkPolicy ingress (if ingressPeers is set)
  918. ports:
  919. - port: "{{ .Values.ports.flowerUI }}"
  920. resources: {}
  921. # limits:
  922. # cpu: 100m
  923. # memory: 128Mi
  924. # requests:
  925. # cpu: 100m
  926. # memory: 128Mi
  927. # When not set, the values defined in the global securityContext will be used
  928. securityContext: {}
  929. # runAsUser: 50000
  930. # fsGroup: 0
  931. # runAsGroup: 0
  932. # Create ServiceAccount
  933. serviceAccount:
  934. # Specifies whether a ServiceAccount should be created
  935. create: true
  936. # The name of the ServiceAccount to use.
  937. # If not set and create is true, a name is generated using the release name
  938. name: ~
  939. # Annotations to add to worker kubernetes service account.
  940. annotations: {}
  941. # A secret containing the connection
  942. secretName: ~
  943. # Else, if username and password are set, create secret from username and password
  944. username: ~
  945. password: ~
  946. service:
  947. type: ClusterIP
  948. ## service annotations
  949. annotations: {}
  950. ports:
  951. - name: flower-ui
  952. port: "{{ .Values.ports.flowerUI }}"
  953. # To change the port used to access flower:
  954. # ports:
  955. # - name: flower-ui
  956. # port: 8080
  957. # targetPort: flower-ui
  958. loadBalancerIP: ~
  959. ## Limit load balancer source ips to list of CIDRs
  960. # loadBalancerSourceRanges:
  961. # - "10.123.0.0/16"
  962. loadBalancerSourceRanges: []
  963. # Launch additional containers into the flower pods.
  964. extraContainers: []
  965. # Mount additional volumes into the flower pods.
  966. extraVolumes: []
  967. extraVolumeMounts: []
  968. # Select certain nodes for airflow flower pods.
  969. nodeSelector: {}
  970. affinity: {}
  971. tolerations: []
  972. topologySpreadConstraints: []
  973. priorityClassName: ~
  974. podAnnotations: {}
  975. # StatsD settings
  976. statsd:
  977. enabled: true
  978. # Create ServiceAccount
  979. serviceAccount:
  980. # Specifies whether a ServiceAccount should be created
  981. create: true
  982. # The name of the ServiceAccount to use.
  983. # If not set and create is true, a name is generated using the release name
  984. name: ~
  985. # Annotations to add to worker kubernetes service account.
  986. annotations: {}
  987. uid: 65534
  988. # When not set, `statsd.uid` will be used
  989. securityContext: {}
  990. # runAsUser: 65534
  991. # fsGroup: 0
  992. # runAsGroup: 0
  993. # Additional network policies as needed
  994. extraNetworkPolicies: []
  995. resources: {}
  996. # limits:
  997. # cpu: 100m
  998. # memory: 128Mi
  999. # requests:
  1000. # cpu: 100m
  1001. # memory: 128Mi
  1002. service:
  1003. extraAnnotations: {}
  1004. # Select certain nodes for StatsD pods.
  1005. nodeSelector: {}
  1006. affinity: {}
  1007. tolerations: []
  1008. topologySpreadConstraints: []
  1009. priorityClassName: ~
  1010. # Additional mappings for StatsD exporter.
  1011. extraMappings: []
  1012. # PgBouncer settings
  1013. pgbouncer:
  1014. # Enable PgBouncer
  1015. enabled: false
  1016. # Command to use for PgBouncer(templated).
  1017. command: ["pgbouncer", "-u", "nobody", "/etc/pgbouncer/pgbouncer.ini"]
  1018. # Args to use for PgBouncer(templated).
  1019. args: ~
  1020. auth_type: md5
  1021. auth_file: /etc/pgbouncer/users.txt
  1022. # Create ServiceAccount
  1023. serviceAccount:
  1024. # Specifies whether a ServiceAccount should be created
  1025. create: true
  1026. # The name of the ServiceAccount to use.
  1027. # If not set and create is true, a name is generated using the release name
  1028. name: ~
  1029. # Annotations to add to worker kubernetes service account.
  1030. annotations: {}
  1031. # Additional network policies as needed
  1032. extraNetworkPolicies: []
  1033. # Pool sizes
  1034. metadataPoolSize: 10
  1035. resultBackendPoolSize: 5
  1036. # Maximum clients that can connect to PgBouncer (higher = more file descriptors)
  1037. maxClientConn: 100
  1038. # supply the name of existing secret with pgbouncer.ini and users.txt defined
  1039. # you can load them to a k8s secret like the one below
  1040. # apiVersion: v1
  1041. # kind: Secret
  1042. # metadata:
  1043. # name: pgbouncer-config-secret
  1044. # data:
  1045. # pgbouncer.ini: <base64_encoded pgbouncer.ini file content>
  1046. # users.txt: <base64_encoded users.txt file content>
  1047. # type: Opaque
  1048. #
  1049. # configSecretName: pgbouncer-config-secret
  1050. #
  1051. configSecretName: ~
  1052. # PgBouncer pod disruption budget
  1053. podDisruptionBudget:
  1054. enabled: false
  1055. # PDB configuration
  1056. config:
  1057. maxUnavailable: 1
  1058. # Limit the resources to PgBouncer.
  1059. # When you specify the resource request the k8s scheduler uses this information to decide which node to
  1060. # place the Pod on. When you specify a resource limit for a Container, the kubelet enforces those limits so
  1061. # that the running container is not allowed to use more of that resource than the limit you set.
  1062. # See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
  1063. # Example:
  1064. #
  1065. # resource:
  1066. # limits:
  1067. # cpu: 100m
  1068. # memory: 128Mi
  1069. # requests:
  1070. # cpu: 100m
  1071. # memory: 128Mi
  1072. resources: {}
  1073. service:
  1074. extraAnnotations: {}
  1075. # https://www.pgbouncer.org/config.html
  1076. verbose: 0
  1077. logDisconnections: 0
  1078. logConnections: 0
  1079. sslmode: "prefer"
  1080. ciphers: "normal"
  1081. ssl:
  1082. ca: ~
  1083. cert: ~
  1084. key: ~
  1085. # Add extra PgBouncer ini configuration in the databases section:
  1086. # https://www.pgbouncer.org/config.html#section-databases
  1087. extraIniMetadata: ~
  1088. extraIniResultBackend: ~
  1089. # Add extra general PgBouncer ini configuration: https://www.pgbouncer.org/config.html
  1090. extraIni: ~
  1091. # Mount additional volumes into pgbouncer.
  1092. extraVolumes: []
  1093. extraVolumeMounts: []
  1094. # Select certain nodes for PgBouncer pods.
  1095. nodeSelector: {}
  1096. affinity: {}
  1097. tolerations: []
  1098. topologySpreadConstraints: []
  1099. priorityClassName: ~
  1100. uid: 65534
  1101. metricsExporterSidecar:
  1102. resources: {}
  1103. # limits:
  1104. # cpu: 100m
  1105. # memory: 128Mi
  1106. # requests:
  1107. # cpu: 100m
  1108. # memory: 128Mi
  1109. sslmode: "disable"
  1110. # Configuration for the redis provisioned by the chart
  1111. redis:
  1112. enabled: true
  1113. terminationGracePeriodSeconds: 600
  1114. # Create ServiceAccount
  1115. serviceAccount:
  1116. # Specifies whether a ServiceAccount should be created
  1117. create: true
  1118. # The name of the ServiceAccount to use.
  1119. # If not set and create is true, a name is generated using the release name
  1120. name: ~
  1121. # Annotations to add to worker kubernetes service account.
  1122. annotations: {}
  1123. persistence:
  1124. # Enable persistent volumes
  1125. enabled: true
  1126. # Volume size for worker StatefulSet
  1127. size: 1Gi
  1128. # If using a custom storageClass, pass name ref to all statefulSets here
  1129. storageClassName:
  1130. # Annotations to add to redis volumes
  1131. annotations: {}
  1132. resources: {}
  1133. # limits:
  1134. # cpu: 100m
  1135. # memory: 128Mi
  1136. # requests:
  1137. # cpu: 100m
  1138. # memory: 128Mi
  1139. # If set use as redis secret. Make sure to also set data.brokerUrlSecretName value.
  1140. passwordSecretName: ~
  1141. # Else, if password is set, create secret with it,
  1142. # Otherwise a new password will be generated on install
  1143. # Note: password can only be set during install, not upgrade.
  1144. password: ~
  1145. # This setting tells kubernetes that its ok to evict
  1146. # when it wants to scale a node down.
  1147. safeToEvict: true
  1148. # Select certain nodes for redis pods.
  1149. nodeSelector: {}
  1150. affinity: {}
  1151. tolerations: []
  1152. topologySpreadConstraints: []
  1153. # Set to 0 for backwards-compatiblity
  1154. uid: 0
  1155. # If not set, `redis.uid` will be used
  1156. securityContext: {}
  1157. # runAsUser: 999
  1158. # runAsGroup: 0
  1159. # Auth secret for a private registry
  1160. # This is used if pulling airflow images from a private registry
  1161. registry:
  1162. secretName: ~
  1163. # Example:
  1164. # connection:
  1165. # user: ~
  1166. # pass: ~
  1167. # host: ~
  1168. # email: ~
  1169. connection: {}
  1170. # Elasticsearch logging configuration
  1171. elasticsearch:
  1172. # Enable elasticsearch task logging
  1173. enabled: false
  1174. # A secret containing the connection
  1175. secretName: ~
  1176. # Or an object representing the connection
  1177. # Example:
  1178. # connection:
  1179. # user: ~
  1180. # pass: ~
  1181. # host: ~
  1182. # port: ~
  1183. connection: {}
  1184. # All ports used by chart
  1185. ports:
  1186. flowerUI: 5555
  1187. airflowUI: 8080
  1188. workerLogs: 8793
  1189. redisDB: 6379
  1190. statsdIngest: 9125
  1191. statsdScrape: 9102
  1192. pgbouncer: 6543
  1193. pgbouncerScrape: 9127
  1194. # Define any ResourceQuotas for namespace
  1195. quotas: {}
  1196. # Define default/max/min values for pods and containers in namespace
  1197. limits: []
  1198. # This runs as a CronJob to cleanup old pods.
  1199. cleanup:
  1200. enabled: false
  1201. # Run every 15 minutes
  1202. schedule: "*/15 * * * *"
  1203. # Command to use when running the cleanup cronjob (templated).
  1204. command: ~
  1205. # Args to use when running the cleanup cronjob (templated).
  1206. args: ["bash", "-c", "exec airflow kubernetes cleanup-pods --namespace={{ .Release.Namespace }}"]
  1207. # Select certain nodes for airflow cleanup pods.
  1208. nodeSelector: {}
  1209. affinity: {}
  1210. tolerations: []
  1211. topologySpreadConstraints: []
  1212. podAnnotations: {}
  1213. resources: {}
  1214. # limits:
  1215. # cpu: 100m
  1216. # memory: 128Mi
  1217. # requests:
  1218. # cpu: 100m
  1219. # memory: 128Mi
  1220. # Create ServiceAccount
  1221. serviceAccount:
  1222. # Specifies whether a ServiceAccount should be created
  1223. create: true
  1224. # The name of the ServiceAccount to use.
  1225. # If not set and create is true, a name is generated using the release name
  1226. name: ~
  1227. # Annotations to add to cleanup cronjob kubernetes service account.
  1228. annotations: {}
  1229. # When not set, the values defined in the global securityContext will be used
  1230. securityContext: {}
  1231. # runAsUser: 50000
  1232. # runAsGroup: 0
  1233. # Configuration for postgresql subchart
  1234. # Not recommended for production
  1235. postgresql:
  1236. enabled: true
  1237. postgresqlPassword: postgres
  1238. postgresqlUsername: postgres
  1239. # Config settings to go into the mounted airflow.cfg
  1240. #
  1241. # Please note that these values are passed through the `tpl` function, so are
  1242. # all subject to being rendered as go templates. If you need to include a
  1243. # literal `{{` in a value, it must be expressed like this:
  1244. #
  1245. # a: '{{ "{{ not a template }}" }}'
  1246. #
  1247. # Do not set config containing secrets via plain text values, use Env Var or k8s secret object
  1248. # yamllint disable rule:line-length
  1249. config:
  1250. core:
  1251. dags_folder: '{{ include "airflow_dags" . }}'
  1252. # This is ignored when used with the official Docker image
  1253. load_examples: 'False'
  1254. executor: '{{ .Values.executor }}'
  1255. # For Airflow 1.10, backward compatibility; moved to [logging] in 2.0
  1256. colored_console_log: 'False'
  1257. remote_logging: '{{- ternary "True" "False" .Values.elasticsearch.enabled }}'
  1258. logging:
  1259. remote_logging: '{{- ternary "True" "False" .Values.elasticsearch.enabled }}'
  1260. colored_console_log: 'False'
  1261. metrics:
  1262. statsd_on: '{{ ternary "True" "False" .Values.statsd.enabled }}'
  1263. statsd_port: 9125
  1264. statsd_prefix: airflow
  1265. statsd_host: '{{ printf "%s-statsd" .Release.Name }}'
  1266. webserver:
  1267. enable_proxy_fix: 'True'
  1268. # For Airflow 1.10
  1269. rbac: 'True'
  1270. celery:
  1271. worker_concurrency: 16
  1272. scheduler:
  1273. # statsd params included for Airflow 1.10 backward compatibility; moved to [metrics] in 2.0
  1274. statsd_on: '{{ ternary "True" "False" .Values.statsd.enabled }}'
  1275. statsd_port: 9125
  1276. statsd_prefix: airflow
  1277. statsd_host: '{{ printf "%s-statsd" .Release.Name }}'
  1278. # `run_duration` included for Airflow 1.10 backward compatibility; removed in 2.0.
  1279. run_duration: 41460
  1280. elasticsearch:
  1281. json_format: 'True'
  1282. log_id_template: "{dag_id}_{task_id}_{execution_date}_{try_number}"
  1283. elasticsearch_configs:
  1284. max_retries: 3
  1285. timeout: 30
  1286. retry_timeout: 'True'
  1287. kerberos:
  1288. keytab: '{{ .Values.kerberos.keytabPath }}'
  1289. reinit_frequency: '{{ .Values.kerberos.reinitFrequency }}'
  1290. principal: '{{ .Values.kerberos.principal }}'
  1291. ccache: '{{ .Values.kerberos.ccacheMountPath }}/{{ .Values.kerberos.ccacheFileName }}'
  1292. celery_kubernetes_executor:
  1293. kubernetes_queue: 'kubernetes'
  1294. kubernetes:
  1295. namespace: '{{ .Release.Namespace }}'
  1296. airflow_configmap: '{{ include "airflow_config" . }}'
  1297. airflow_local_settings_configmap: '{{ include "airflow_config" . }}'
  1298. pod_template_file: '{{ include "airflow_pod_template_file" . }}/pod_template_file.yaml'
  1299. worker_container_repository: '{{ .Values.images.airflow.repository | default .Values.defaultAirflowRepository }}'
  1300. worker_container_tag: '{{ .Values.images.airflow.tag | default .Values.defaultAirflowTag }}'
  1301. multi_namespace_mode: '{{ if .Values.multiNamespaceMode }}True{{ else }}False{{ end }}'
  1302. # yamllint enable rule:line-length
  1303. # Whether Airflow can launch workers and/or pods in multiple namespaces
  1304. # If true, it creates ClusterRole/ClusterRolebinding (with access to entire cluster)
  1305. multiNamespaceMode: false
  1306. # `podTemplate` is a templated string containing the contents of `pod_template_file.yaml` used for
  1307. # KubernetesExecutor workers. The default `podTemplate` will use normal `workers` configuration parameters
  1308. # (e.g. `workers.resources`). As such, you normally won't need to override this directly, however,
  1309. # you can still provide a completely custom `pod_template_file.yaml` if desired.
  1310. # If not set, a default one is created using `files/pod-template-file.kubernetes-helm-yaml`.
  1311. podTemplate: ~
  1312. # The following example is NOT functional, but meant to be illustrative of how you can provide a custom
  1313. # `pod_template_file`. You're better off starting with the default in
  1314. # `files/pod-template-file.kubernetes-helm-yaml` and modifying from there.
  1315. # We will set `priorityClassName` in this example:
  1316. # podTemplate: |
  1317. # apiVersion: v1
  1318. # kind: Pod
  1319. # metadata:
  1320. # name: dummy-name
  1321. # labels:
  1322. # tier: airflow
  1323. # component: worker
  1324. # release: {{ .Release.Name }}
  1325. # spec:
  1326. # priorityClassName: high-priority
  1327. # containers:
  1328. # - name: base
  1329. # ...
  1330. # Git sync
  1331. dags:
  1332. persistence:
  1333. # Enable persistent volume for storing dags
  1334. enabled: false
  1335. # Volume size for dags
  1336. size: 1Gi
  1337. # If using a custom storageClass, pass name here
  1338. storageClassName:
  1339. # access mode of the persistent volume
  1340. accessMode: ReadWriteOnce
  1341. ## the name of an existing PVC to use
  1342. existingClaim:
  1343. ## optional subpath for dag volume mount
  1344. subPath: ~
  1345. gitSync:
  1346. enabled: false
  1347. # git repo clone url
  1348. # ssh examples ssh://git@github.com/apache/airflow.git
  1349. # git@github.com:apache/airflow.git
  1350. # https example: https://github.com/apache/airflow.git
  1351. repo: https://github.com/apache/airflow.git
  1352. branch: v2-2-stable
  1353. rev: HEAD
  1354. depth: 1
  1355. # the number of consecutive failures allowed before aborting
  1356. maxFailures: 0
  1357. # subpath within the repo where dags are located
  1358. # should be "" if dags are at repo root
  1359. subPath: "tests/dags"
  1360. # if your repo needs a user name password
  1361. # you can load them to a k8s secret like the one below
  1362. # ---
  1363. # apiVersion: v1
  1364. # kind: Secret
  1365. # metadata:
  1366. # name: git-credentials
  1367. # data:
  1368. # GIT_SYNC_USERNAME: <base64_encoded_git_username>
  1369. # GIT_SYNC_PASSWORD: <base64_encoded_git_password>
  1370. # and specify the name of the secret below
  1371. #
  1372. # credentialsSecret: git-credentials
  1373. #
  1374. #
  1375. # If you are using an ssh clone url, you can load
  1376. # the ssh private key to a k8s secret like the one below
  1377. # ---
  1378. # apiVersion: v1
  1379. # kind: Secret
  1380. # metadata:
  1381. # name: airflow-ssh-secret
  1382. # data:
  1383. # # key needs to be gitSshKey
  1384. # gitSshKey: <base64_encoded_data>
  1385. # and specify the name of the secret below
  1386. # sshKeySecret: airflow-ssh-secret
  1387. #
  1388. # If you are using an ssh private key, you can additionally
  1389. # specify the content of your known_hosts file, example:
  1390. #
  1391. # knownHosts: |
  1392. # <host1>,<ip1> <key1>
  1393. # <host2>,<ip2> <key2>
  1394. # interval between git sync attempts in seconds
  1395. wait: 60
  1396. containerName: git-sync
  1397. uid: 65533
  1398. # When not set, the values defined in the global securityContext will be used
  1399. securityContext: {}
  1400. # runAsUser: 65533
  1401. # runAsGroup: 0
  1402. extraVolumeMounts: []
  1403. env: []
  1404. resources: {}
  1405. # limits:
  1406. # cpu: 100m
  1407. # memory: 128Mi
  1408. # requests:
  1409. # cpu: 100m
  1410. # memory: 128Mi
  1411. logs:
  1412. persistence:
  1413. # Enable persistent volume for storing logs
  1414. enabled: false
  1415. # Volume size for logs
  1416. size: 100Gi
  1417. # If using a custom storageClass, pass name here
  1418. storageClassName:
  1419. ## the name of an existing PVC to use
  1420. existingClaim: