values.yaml 47 KB

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