blob: 8b34093dbba6f04cf0eeac218d3d8aa09f1e501e [file] [log] [blame]
{
"$schema": "http://json-schema.org/draft-07/schema",
"description": "Default values for airflow. Declare variables to be passed into your templates.",
"type": "object",
"x-docsSectionOrder": [
"Common",
"Airflow",
"Images",
"Ports",
"Database",
"PgBouncer",
"Scheduler",
"Webserver",
"Workers",
"Flower",
"Redis",
"Statsd",
"Jobs",
"Kubernetes",
"Ingress",
"Kerberos"
],
"properties": {
"fullnameOverride": {
"description": "Provide a name to substitute for the full names of resources",
"type": "string",
"default": "",
"x-docsSection": null
},
"nameOverride": {
"description": "Override the name of the chart",
"type": "string",
"default": "",
"x-docsSection": null
},
"uid": {
"description": "User of airflow user.",
"type": "integer",
"default": 50000,
"x-docsSection": "Airflow"
},
"gid": {
"description": "Group of airflow user.",
"type": "integer",
"default": 0,
"x-docsSection": "Airflow"
},
"airflowHome": {
"description": "Airflow home directory. Used for mount paths.",
"type": "string",
"default": "/opt/airflow",
"x-docsSection": "Airflow"
},
"defaultAirflowRepository": {
"description": "Default airflow repository. Overrides all the specific images below.",
"type": "string",
"default": "apache/airflow",
"x-docsSection": "Common"
},
"defaultAirflowTag": {
"description": "Default airflow tag to deploy.",
"type": "string",
"default": "2.0.2",
"x-docsSection": "Common"
},
"airflowVersion": {
"description": "Airflow version (Used to make some decisions based on Airflow Version being deployed).",
"type": "string",
"default": "2.0.2",
"x-docsSection": "Common"
},
"nodeSelector": {
"description": "Select certain nodes for all pods.",
"type": "object",
"default": {},
"x-docsSection": "Kubernetes",
"additionalProperties": {
"type": "string"
}
},
"affinity": {
"description": "Specify scheduling constraints for all pods.",
"type": "object",
"default": {},
"x-docsSection": "Kubernetes"
},
"tolerations": {
"description": "Specify Tolerations for all pods.",
"type": "array",
"default": [],
"x-docsSection": "Kubernetes"
},
"labels": {
"description": "Add common labels to all objects and pods defined in this chart.",
"type": "object",
"default": {},
"x-docsSection": "Kubernetes",
"additionalProperties": {
"type": "string"
}
},
"ingress": {
"description": "Ingress configuration.",
"type": "object",
"x-docsSection": "Ingress",
"properties": {
"enabled": {
"description": "Enable ingress resource.",
"type": "boolean",
"default": false
},
"web": {
"description": "Configuration for the Ingress of the web Service.",
"type": "object",
"additionalProperties": false,
"properties": {
"annotations": {
"description": "Annotations for the web Ingress.",
"type": "object",
"default": {}
},
"path": {
"description": "The path for the web Ingress.",
"type": "string",
"default": ""
},
"host": {
"description": "The hostname for the web Ingress.",
"type": "string",
"default": ""
},
"tls": {
"description": "Configuration for web Ingress TLS.",
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable TLS termination for the web Ingress.",
"type": "boolean",
"default": false
},
"secretName": {
"description": "The name of a pre-created Secret containing a TLS private key and certificate.",
"type": "string",
"default": ""
}
}
},
"precedingPaths": {
"description": "HTTP paths to add to the web Ingress before the default path.",
"type": "array",
"default": []
},
"succeedingPaths": {
"description": "HTTP paths to add to the web Ingress after the default path.",
"type": "array",
"default": []
}
}
},
"flower": {
"description": "Configuration for the Ingress of the flower Service.",
"type": "object",
"additionalProperties": false,
"properties": {
"annotations": {
"description": "Annotations for the flower Ingress.",
"type": "object",
"default": {}
},
"path": {
"description": "The path for the flower Ingress.",
"type": "string",
"default": ""
},
"host": {
"description": "The hostname for the flower Ingress.",
"type": "string",
"default": ""
},
"tls": {
"description": "Configuration for flower Ingress TLS.",
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable TLS termination for the flower Ingress.",
"type": "boolean",
"default": false
},
"secretName": {
"description": "The name of a pre-created Secret containing a TLS private key and certificate.",
"type": "string",
"default": ""
}
}
},
"precedingPaths": {
"description": "HTTP paths to add to the flower Ingress before the default path.",
"type": "array",
"default": []
},
"succeedingPaths": {
"description": "HTTP paths to add to the flower Ingress after the default path.",
"type": "array",
"default": []
}
}
}
}
},
"networkPolicies": {
"description": "Network policy configuration.",
"type": "object",
"x-docsSection": "Kubernetes",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enabled network policies.",
"type": "boolean",
"default": false
}
}
},
"airflowPodAnnotations": {
"description": "Extra annotations to apply to all Airflow pods.",
"type": "object",
"default": {},
"x-docsSection": "Kubernetes"
},
"airflowConfigAnnotations": {
"description": "Extra annotations to apply to the main Airflow configmap.",
"type": "object",
"default": {},
"x-docsSection": "Kubernetes"
},
"airflowLocalSettings": {
"description": "`airflow_local_settings` file as a string.",
"type": [
"string",
"null"
],
"x-docsSection": "Common",
"default": null
},
"rbac": {
"description": "Enable RBAC (default on most clusters these days).",
"type": "object",
"x-docsSection": "Kubernetes",
"properties": {
"create": {
"description": "Specifies whether RBAC resources should be created.",
"type": "boolean",
"default": true
}
}
},
"executor": {
"description": "Airflow executor.",
"type": "string",
"x-docsSection": "Common",
"default": "CeleryExecutor",
"enum": [
"LocalExecutor",
"CeleryExecutor",
"KubernetesExecutor",
"CeleryKubernetesExecutor"
]
},
"allowPodLaunching": {
"description": "Whether various Airflow components launch pods.",
"type": "boolean",
"x-docsSection": "Airflow",
"default": true
},
"images": {
"description": "Images.",
"type": "object",
"x-docsSection": "Images",
"additionalProperties": false,
"properties": {
"airflow": {
"description": "Configuration of the airflow image.",
"type": "object",
"properties": {
"repository": {
"description": "The airflow image repository.",
"type": [
"string",
"null"
],
"default": null
},
"tag": {
"description": "The airflow image tag.",
"type": [
"string",
"null"
],
"default": null
},
"pullPolicy": {
"description": "The airflow image pull policy.",
"type": "string",
"enum": [
"Always",
"Never",
"IfNotPresent"
],
"default": "IfNotPresent"
}
}
},
"pod_template": {
"description": "Configuration of the pod_template image.",
"type": "object",
"properties": {
"repository": {
"description": "The pod_template image repository.",
"type": [
"string",
"null"
],
"default": null
},
"tag": {
"description": "The pod_template image tag.",
"type": [
"string",
"null"
],
"default": null
},
"pullPolicy": {
"description": "The pod_template image pull policy.",
"type": "string",
"enum": [
"Always",
"Never",
"IfNotPresent"
],
"default": "IfNotPresent"
}
}
},
"flower": {
"description": "Configuration of the flower image.",
"type": "object",
"properties": {
"repository": {
"description": "The flower image repository.",
"type": [
"string",
"null"
],
"default": null
},
"tag": {
"description": "The flower image tag.",
"type": [
"string",
"null"
],
"default": null
},
"pullPolicy": {
"description": "The flower image pull policy.",
"type": "string",
"enum": [
"Always",
"Never",
"IfNotPresent"
],
"default": "IfNotPresent"
}
}
},
"statsd": {
"description": "Configuration of the statsd image.",
"type": "object",
"properties": {
"repository": {
"description": "The statsd image repository.",
"type": "string",
"default": "apache/airflow"
},
"tag": {
"description": "The statsd image tag.",
"type": "string",
"default": "airflow-statsd-exporter-2021.04.28-v0.17.0"
},
"pullPolicy": {
"description": "The statsd image pull policy.",
"type": "string",
"enum": [
"Always",
"Never",
"IfNotPresent"
],
"default": "IfNotPresent"
}
}
},
"redis": {
"description": "Configuration of the redis image.",
"type": "object",
"properties": {
"repository": {
"description": "The redis image repository.",
"type": "string",
"default": "redis"
},
"tag": {
"description": "The redis image tag.",
"type": "string",
"default": "6-buster"
},
"pullPolicy": {
"description": "The redis image pull policy.",
"type": "string",
"enum": [
"Always",
"Never",
"IfNotPresent"
],
"default": "IfNotPresent"
}
}
},
"pgbouncer": {
"description": "Configuration of the PgBouncer image.",
"type": "object",
"properties": {
"repository": {
"description": "The PgBouncer image repository.",
"type": "string",
"default": "apache/airflow"
},
"tag": {
"description": "The PgBouncer image tag.",
"type": "string",
"default": "airflow-pgbouncer-2021.04.28-1.14.0"
},
"pullPolicy": {
"description": "The PgBouncer image pull policy.",
"type": "string",
"enum": [
"Always",
"Never",
"IfNotPresent"
],
"default": "IfNotPresent"
}
}
},
"pgbouncerExporter": {
"description": "Configuration of the PgBouncer exporter image.",
"type": "object",
"properties": {
"repository": {
"description": "The PgBouncer exporter image repository.",
"type": "string",
"default": "apache/airflow"
},
"tag": {
"description": "The PgBouncer exporter image tag.",
"type": "string",
"default": "airflow-pgbouncer-exporter-2021.04.28-0.5.0"
},
"pullPolicy": {
"description": "The PgBouncer exporter image pull policy.",
"type": "string",
"enum": [
"Always",
"Never",
"IfNotPresent"
],
"default": "IfNotPresent"
}
}
},
"gitSync": {
"description": "Configuration of the gitSync image.",
"type": "object",
"properties": {
"repository": {
"description": "The gitSync image repository.",
"type": "string",
"default": "k8s.gcr.io/git-sync/git-sync"
},
"tag": {
"description": "The gitSync image tag.",
"type": "string",
"default": "v3.3.0"
},
"pullPolicy": {
"description": "The gitSync image pull policy.",
"type": "string",
"enum": [
"Always",
"Never",
"IfNotPresent"
],
"default": "IfNotPresent"
}
}
}
}
},
"env": {
"description": "Environment variables for all Airflow containers.",
"type": "array",
"x-docsSection": "Airflow",
"default": [],
"examples": [
{
"name": "MYENVVAR",
"value": "something_fun"
}
]
},
"secret": {
"description": "Secrets for all Airflow containers.",
"type": "array",
"x-docsSection": "Airflow",
"default": [],
"examples": [
{
"envName": "SecretEnvVar",
"secretName": "somesecret",
"secretKey": "somekey"
}
]
},
"extraEnv": {
"description": "Extra env 'items' that will be added to the definition of Airflow containers; a string is expected (can be templated).",
"type": [
"null",
"string"
],
"x-docsSection": "Airflow",
"default": null,
"examples": [
"- name: AIRFLOW__CORE__LOAD_EXAMPLES\n value: True"
]
},
"extraEnvFrom": {
"description": "Extra envFrom 'items' that will be added to the definition of Airflow containers; a string is expected (can be templated).",
"type": [
"null",
"string"
],
"x-docsSection": "Airflow",
"default": null,
"examples": [
"- secretRef:\n name: '{{ .Release.Name }}-airflow-connections'",
"- configMapRef:\n name: '{{ .Release.Name }}-airflow-variables'"
]
},
"extraSecrets": {
"description": "Extra secrets that will be managed by the chart.",
"type": "object",
"x-docsSection": "Kubernetes",
"default": {},
"additionalProperties": {
"description": "Name of the secret (can be templated).",
"type": "object",
"minProperties": 1,
"additionalProperties": false,
"properties": {
"data": {
"description": "Content **as string** for the 'data' item of the secret (can be templated)",
"type": "string"
},
"stringData": {
"description": "Content **as string** for the 'stringData' item of the secret (can be templated)",
"type": "string"
}
}
},
"examples": [
{
"{{ .Release.Name }}-airflow-connections": {
"data": "AIRFLOW_CONN_GCP: 'base64_encoded_gcp_conn_string'\nAIRFLOW_CONN_AWS: 'base64_encoded_aws_conn_string'",
"stringData": "AIRFLOW_CONN_OTHER: 'other_conn'"
}
}
]
},
"extraConfigMaps": {
"description": "Extra ConfigMaps that will be managed by the chart.",
"type": "object",
"x-docsSection": "Kubernetes",
"default": {},
"additionalProperties": {
"description": "Name of the configMap (can be templated).",
"type": "object",
"minProperties": 1,
"additionalProperties": false,
"properties": {
"data": {
"description": "Content **as string** for the 'data' item of the secret (can be templated)",
"type": "string"
}
}
},
"examples": [
{
"{{ .Release.Name }}-airflow-variables": {
"data": "AIRFLOW_VAR_HELLO_MESSAGE: 'Hi!'\nAIRFLOW_VAR_KUBERNETES_NAMESPACE: '{{ .Release.Namespace }}'"
}
}
]
},
"data": {
"description": "Airflow database & redis configuration.",
"type": "object",
"x-docsSection": "Database",
"additionalProperties": false,
"properties": {
"metadataSecretName": {
"description": "Metadata connection string secret.",
"type": [
"string",
"null"
],
"default": null
},
"resultBackendSecretName": {
"description": "Result backend connection string secret.",
"type": [
"string",
"null"
],
"default": null
},
"brokerUrlSecretName": {
"description": "Redis broker URL secret.",
"type": [
"string",
"null"
],
"x-docsSection": "Redis",
"default": null
},
"metadataConnection": {
"description": "Metadata connection configuration.",
"type": "object",
"additionalProperties": false,
"properties": {
"user": {
"description": "The database user.",
"type": "string",
"default": "postgres"
},
"pass": {
"description": "The user's password.",
"type": "string",
"default": "postgres"
},
"protocol": {
"description": "The database protocol.",
"type": "string",
"default": "postgresql"
},
"host": {
"description": "The database host.",
"type": [
"string",
"null"
],
"default": null
},
"port": {
"description": "The database port.",
"type": "integer",
"default": 5432
},
"db": {
"description": "The name of the database.",
"type": "string",
"default": "postgres"
},
"sslmode": {
"description": "The database SSL parameter.",
"type": "string",
"default": "disable"
}
}
},
"resultBackendConnection": {
"description": "Result backend connection configuration.",
"type": [
"object",
"null"
],
"default": null,
"additionalProperties": false,
"properties": {
"user": {
"description": "The database user.",
"type": "string",
"default": null
},
"pass": {
"description": "The database password.",
"type": "string",
"default": null
},
"protocol": {
"description": "The database protocol.",
"type": "string",
"default": null
},
"host": {
"description": "The database host.",
"type": [
"string",
"null"
],
"default": null
},
"port": {
"description": "The database port.",
"type": "integer",
"default": null
},
"db": {
"description": "The name of the database.",
"type": "string",
"default": null
},
"sslmode": {
"description": "The database SSL parameter.",
"type": "string",
"default": null
}
},
"required": [
"user",
"pass",
"protocol",
"host",
"port",
"db",
"sslmode"
]
},
"brokerUrl": {
"description": "Direct url to the redis broker (when using an external redis instance).",
"type": [
"string",
"null"
],
"x-docsSection": "Redis",
"default": null
}
}
},
"fernetKey": {
"description": "The Fernet key used to encrypt passwords.",
"type": [
"string",
"null"
],
"x-docsSection": "Common",
"default": null
},
"fernetKeySecretName": {
"description": "The Fernet key secret name.",
"type": [
"string",
"null"
],
"x-docsSection": "Airflow",
"default": null
},
"kerberos": {
"description": "Kerberos configurations for airflow",
"type": "object",
"x-docsSection": "Kerberos",
"properties": {
"enabled": {
"description": "Enable kerberos.",
"type": "boolean",
"default": false
},
"ccacheMountPath": {
"description": "Path to mount shared volume for kerberos credentials cache.",
"type": "string",
"default": "/var/kerberos-ccache"
},
"ccacheFileName": {
"description": "Name for kerberos credentials cache file.",
"type": "string",
"default": "cache"
},
"configPath": {
"description": "Path to mount krb5.conf kerberos configuration file.",
"type": "string",
"default": "/etc/krb5.conf"
},
"keytabPath": {
"description": "Path to mount the keytab for refreshing credentials in the kerberos sidecar.",
"type": "string",
"default": "/etc/airflow.keytab"
},
"principal": {
"description": "Principal to use when refreshing kerberos credentials.",
"type": "string",
"default": "airflow@FOO.COM"
},
"reinitFrequency": {
"description": "How often (in seconds) airflow kerberos will reinitialize the credentials cache.",
"type": "integer",
"default": 3600
},
"config": {
"description": "Contents of krb5.conf.",
"type": "string",
"default": "See values.yaml"
}
}
},
"workers": {
"description": "Airflow Worker configuration.",
"type": "object",
"x-docsSection": "Workers",
"additionalProperties": false,
"properties": {
"replicas": {
"description": "Number of Airflow Celery workers in StatefulSet.",
"type": "integer",
"default": 1
},
"updateStrategy": {
"description": "Specifies the strategy used to replace old Pods by new ones when deployed as a StatefulSet.",
"type": [
"null",
"object"
],
"default": null
},
"strategy": {
"description": "Specifies the strategy used to replace old Pods by new ones when deployed as a Deployment.",
"type": [
"null",
"object"
],
"default": {
"rollingUpdate": {
"maxSurge": "100%",
"maxUnavailable": "50%"
}
}
},
"serviceAccount": {
"description": "Create ServiceAccount.",
"type": "object",
"properties": {
"create": {
"description": "Specifies whether a ServiceAccount should be created.",
"type": "boolean",
"default": true
},
"name": {
"description": "The name of the ServiceAccount to use. If not set and create is true, a name is generated using the release name.",
"type": [
"string",
"null"
],
"default": null
},
"annotations": {
"description": "Annotations to add to the worker Kubernetes ServiceAccount.",
"type": "object",
"default": {}
}
}
},
"keda": {
"description": "KEDA configuration.",
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Allow KEDA autoscaling. `Persistence.enabled` must be set to false to use KEDA.",
"type": "boolean",
"default": false
},
"namespaceLabels": {
"description": "Labels used in `matchLabels` for namespace in the PgBouncer NetworkPolicy.",
"type": "object",
"default": {}
},
"pollingInterval": {
"description": "How often KEDA polls the airflow DB to report new scale requests to the HPA.",
"type": "integer",
"default": 5
},
"cooldownPeriod": {
"description": "How many seconds KEDA will wait before scaling to zero.",
"type": "integer",
"default": 30
},
"maxReplicaCount": {
"description": "Maximum number of workers created by KEDA.",
"type": "integer",
"default": 10
}
}
},
"persistence": {
"description": "Persistence configuration.",
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable persistent volumes.",
"type": "boolean",
"default": true
},
"size": {
"description": "Volume size for worker StatefulSet.",
"type": "string",
"default": "100Gi"
},
"storageClassName": {
"description": "If using a custom StorageClass, pass name ref to all StatefulSets here.",
"type": [
"string",
"null"
],
"default": null
},
"fixPermissions": {
"description": "Execute init container to chown log directory. This is currently only needed in kind, due to usage of local-path provisioner.",
"type": "boolean",
"default": false
}
}
},
"kerberosSidecar": {
"description": "Kerberos sidecar for Airflow workers.",
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable Kerberos sidecar for the worker.",
"type": "boolean",
"default": false
},
"resources": {
"description": "Resources on workers kerberos sidecar",
"type": "object",
"default": {},
"examples": [
{
"limits": {
"cpu": "100m",
"memory": "128Mi"
},
"requests": {
"cpu": "100m",
"memory": "128Mi"
}
}
]
}
}
},
"resources": {
"description": "Resources on workers",
"type": "object",
"default": {},
"examples": [
{
"limits": {
"cpu": "100m",
"memory": "128Mi"
},
"requests": {
"cpu": "100m",
"memory": "128Mi"
}
}
]
},
"terminationGracePeriodSeconds": {
"description": "Grace period for tasks to finish after SIGTERM is sent from Kubernetes.",
"type": "integer",
"default": 600
},
"safeToEvict": {
"description": "This setting tells Kubernetes that it's ok to evict when it wants to scale a node down.",
"type": "boolean",
"default": true
},
"extraContainers": {
"description": "Launch additional containers into workers.",
"type": "array",
"default": []
},
"extraVolumes": {
"description": "Mount additional volumes into workers.",
"type": "array",
"default": []
},
"extraVolumeMounts": {
"description": "Mount additional volumes into workers.",
"type": "array",
"default": []
},
"nodeSelector": {
"description": "Select certain nodes for worker pods.",
"type": "object",
"default": {},
"additionalProperties": {
"type": "string"
}
},
"affinity": {
"description": "Specify scheduling constraints for worker pods.",
"type": "object",
"default": {}
},
"tolerations": {
"description": "Specify Tolerations for worker pods.",
"type": "array",
"default": []
},
"hostAliases": {
"description": "Specify HostAliases for workers.",
"type": "array",
"default": [],
"examples": [
{
"ip": "127.0.0.2",
"hostnames": [
"test.hostname.one"
]
},
{
"ip": "127.0.0.3",
"hostnames": [
"test.hostname.two"
]
}
]
}
}
},
"scheduler": {
"description": "Airflow scheduler settings.",
"type": "object",
"x-docsSection": "Scheduler",
"additionalProperties": false,
"properties": {
"livenessProbe": {
"description": "Liveness probe configuration.",
"type": "object",
"additionalProperties": false,
"properties": {
"initialDelaySeconds": {
"description": "Scheduler Liveness probe initial delay.",
"type": "integer",
"default": 10
},
"timeoutSeconds": {
"description": "Scheduler Liveness probe timeout seconds.",
"type": "integer",
"default": 5
},
"failureThreshold": {
"description": "Scheduler Liveness probe failure threshold.",
"type": "integer",
"default": 10
},
"periodSeconds": {
"description": "Webserver Liveness probe period seconds.",
"type": "integer",
"default": 30
}
}
},
"replicas": {
"description": "Airflow 2.0 allows users to run multiple schedulers. This feature is only recommended for MySQL 8+ and PostgreSQL",
"type": "integer",
"default": 1
},
"serviceAccount": {
"description": "Create ServiceAccount.",
"type": "object",
"properties": {
"create": {
"description": "Specifies whether a ServiceAccount should be created.",
"type": "boolean",
"default": true
},
"name": {
"description": "The name of the ServiceAccount to use. If not set and create is true, a name is generated using the release name.",
"type": [
"string",
"null"
],
"default": null
},
"annotations": {
"description": "Annotations to add to the scheduler Kubernetes ServiceAccount.",
"type": "object",
"default": {}
}
}
},
"podDisruptionBudget": {
"description": "Scheduler pod disruption budget.",
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable pod disruption budget.",
"type": "boolean",
"default": false
},
"config": {
"description": "Disruption budget configuration.",
"type": "object",
"additionalProperties": false,
"properties": {
"maxUnavailable": {
"description": "Max unavailable pods for scheduler.",
"type": "integer",
"default": 1
}
}
}
}
},
"resources": {
"description": "Resources for scheduler pods.",
"type": "object",
"default": {},
"examples": [
{
"limits": {
"cpu": "100m",
"memory": "128Mi"
},
"requests": {
"cpu": "100m",
"memory": "128Mi"
}
}
]
},
"safeToEvict": {
"description": "This setting tells Kubernetes that its ok to evict when it wants to scale a node down.",
"type": "boolean",
"default": true
},
"extraContainers": {
"description": "Launch additional containers into scheduler.",
"type": "array",
"default": []
},
"extraVolumes": {
"description": "Mount additional volumes into scheduler.",
"type": "array",
"default": []
},
"extraVolumeMounts": {
"description": "Mount additional volumes into scheduler.",
"type": "array",
"default": []
},
"nodeSelector": {
"description": "Select certain nodes for scheduler pods.",
"type": "object",
"default": {},
"additionalProperties": {
"type": "string"
}
},
"affinity": {
"description": "Specify scheduling constraints for scheduler pods.",
"type": "object",
"default": {}
},
"tolerations": {
"description": "Specify Tolerations for scheduler pods.",
"type": "array",
"default": []
}
}
},
"createUserJob": {
"description": "Airflow job to create a user settings.",
"type": "object",
"x-docsSection": "Jobs",
"additionalProperties": false,
"properties": {
"serviceAccount": {
"description": "Create ServiceAccount.",
"type": "object",
"properties": {
"create": {
"description": "Specifies whether a ServiceAccount should be created.",
"type": "boolean",
"default": true
},
"name": {
"description": "The name of the ServiceAccount to use. If not set and create is true, a name is generated using the release name.",
"type": [
"string",
"null"
],
"default": null
},
"annotations": {
"description": "Annotations to add to the create user job Kubernetes ServiceAccount.",
"type": "object",
"default": {}
}
}
}
}
},
"migrateDatabaseJob": {
"description": "Airflow job to migrate databases settings.",
"type": "object",
"x-docsSection": "Jobs",
"additionalProperties": false,
"properties": {
"serviceAccount": {
"description": "Create ServiceAccount.",
"type": "object",
"properties": {
"create": {
"description": "Specifies whether a ServiceAccount should be created.",
"type": "boolean",
"default": true
},
"name": {
"description": "The name of the ServiceAccount to use. If not set and create is true, a name is generated using the release name.",
"type": [
"string",
"null"
],
"default": null
},
"annotations": {
"description": "Annotations to add to the migrate database job Kubernetes ServiceAccount.",
"type": "object",
"default": {}
}
}
}
}
},
"webserver": {
"description": "Airflow webserver settings.",
"type": "object",
"x-docsSection": "Webserver",
"additionalProperties": false,
"properties": {
"allowPodLogReading": {
"description": "Allow webserver to read k8s pod logs. Useful when you don't have an external log store.",
"type": "boolean",
"default": true
},
"livenessProbe": {
"description": "Liveness probe configuration.",
"type": "object",
"additionalProperties": false,
"properties": {
"initialDelaySeconds": {
"description": "Webserver Liveness probe initial delay.",
"type": "integer",
"default": 15
},
"timeoutSeconds": {
"description": "Webserver Liveness probe timeout seconds.",
"type": "integer",
"default": 30
},
"failureThreshold": {
"description": "Webserver Liveness probe failure threshold.",
"type": "integer",
"default": 20
},
"periodSeconds": {
"description": "Webserver Liveness probe period seconds.",
"type": "integer",
"default": 5
}
}
},
"readinessProbe": {
"description": "Readiness probe configuration.",
"type": "object",
"additionalProperties": false,
"properties": {
"initialDelaySeconds": {
"description": "Webserver Readiness probe initial delay.",
"type": "integer",
"default": 15
},
"timeoutSeconds": {
"description": "Webserver Readiness probe timeout seconds.",
"type": "integer",
"default": 30
},
"failureThreshold": {
"description": "Webserver Readiness probe failure threshold.",
"type": "integer",
"default": 20
},
"periodSeconds": {
"description": "Webserver Readiness probe period seconds.",
"type": "integer",
"default": 5
}
}
},
"replicas": {
"description": "How many Airflow webserver replicas should run.",
"type": "integer",
"default": 1
},
"strategy": {
"description": "Specifies the strategy used to replace old Pods by new ones.",
"type": [
"null",
"object"
],
"default": null
},
"serviceAccount": {
"description": "Create ServiceAccount.",
"type": "object",
"properties": {
"create": {
"description": "Specifies whether a ServiceAccount should be created.",
"type": "boolean",
"default": true
},
"name": {
"description": "The name of the ServiceAccount to use. If not set and create is true, a name is generated using the release name.",
"type": [
"string",
"null"
],
"default": null
},
"annotations": {
"description": "Annotations to add to the webserver Kubernetes ServiceAccount.",
"type": "object",
"default": {}
}
}
},
"extraNetworkPolicies": {
"description": "Additional NetworkPolicies as needed.",
"type": "array",
"default": []
},
"resources": {
"description": "Resources for webserver pods.",
"type": "object",
"default": {},
"examples": [
{
"limits": {
"cpu": "100m",
"memory": "128Mi"
},
"requests": {
"cpu": "100m",
"memory": "128Mi"
}
}
]
},
"defaultUser": {
"description": "Optional default Airflow user information",
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable default user creation.",
"type": "boolean",
"x-docsSection": "Common",
"default": true
},
"role": {
"description": "Default user role.",
"type": "string",
"default": "Admin"
},
"username": {
"description": "Default user username.",
"type": "string",
"default": "admin"
},
"email": {
"description": "Default user email address.",
"type": "string",
"default": "admin@example.com"
},
"firstName": {
"description": "Default user firstname.",
"type": "string",
"default": "admin"
},
"lastName": {
"description": "Default user lastname.",
"type": "string",
"default": "user"
},
"password": {
"description": "Default user password.",
"type": "string",
"default": "admin"
}
}
},
"extraContainers": {
"description": "Launch additional containers into webserver.",
"type": "array",
"default": []
},
"extraVolumes": {
"description": "Mount additional volumes into webserver.",
"type": "array",
"default": []
},
"extraVolumeMounts": {
"description": "Mount additional volumes into webserver.",
"type": "array",
"default": []
},
"webserverConfig": {
"description": "This will be mounted into the Airflow webserver as a custom `webserver_config.py`. You can bake a `webserver_config.py` in to your image instead.",
"type": [
"string",
"null"
],
"x-docsSection": "Common",
"default": null,
"examples": [
"from airflow import configuration as conf\n\n# The SQLAlchemy connection string.\nSQLALCHEMY_DATABASE_URI = conf.get('core', 'SQL_ALCHEMY_CONN')\n\n# Flask-WTF flag for CSRF\nCSRF_ENABLED = True"
]
},
"service": {
"description": "Webserver Service configuration.",
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"description": "Webserver Service type.",
"type": "string",
"default": "ClusterIP"
},
"annotations": {
"description": "Annotations for the webserver Service.",
"type": "object",
"default": {}
},
"loadBalancerIP": {
"description": "Webserver Service loadBalancerIP.",
"type": [
"string",
"null"
],
"default": null
}
}
},
"nodeSelector": {
"description": "Select certain nodes for webserver pods.",
"type": "object",
"default": {},
"additionalProperties": {
"type": "string"
}
},
"affinity": {
"description": "Specify scheduling constraints for webserver pods.",
"type": "object",
"default": {}
},
"tolerations": {
"description": "Specify Tolerations for webserver pods.",
"type": "array",
"default": []
}
}
},
"flower": {
"description": "Flower settings.",
"type": "object",
"x-docsSection": "Flower",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable Flower.",
"type": "boolean",
"default": true
},
"extraNetworkPolicies": {
"description": "Additional NetworkPolicies as needed.",
"type": "array",
"default": []
},
"resources": {
"description": "Resources for Flower pods.",
"type": "object",
"default": {},
"examples": [
{
"limits": {
"cpu": "100m",
"memory": "128Mi"
},
"requests": {
"cpu": "100m",
"memory": "128Mi"
}
}
]
},
"secretName": {
"description": "A secret containing the user and password pair.",
"type": [
"string",
"null"
],
"default": null
},
"username": {
"description": "Username use to access Flower.",
"type": [
"string",
"null"
],
"default": null
},
"password": {
"description": "Password use to access Flower.",
"type": [
"string",
"null"
],
"default": null
},
"service": {
"description": "Flower Service configuration.",
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"description": "Flower Service type.",
"type": "string",
"default": "ClusterIP"
},
"annotations": {
"description": "Annotations for the flower Service.",
"type": "object",
"default": {}
},
"loadBalancerIP": {
"description": "Flower Service loadBalancerIP.",
"type": [
"string",
"null"
],
"default": null
}
}
},
"serviceAccount": {
"description": "Create ServiceAccount.",
"type": "object",
"properties": {
"create": {
"description": "Specifies whether a ServiceAccount should be created.",
"type": "boolean",
"default": true
},
"name": {
"description": "The name of the ServiceAccount to use. If not set and create is true, a name is generated using the release name.",
"type": [
"string",
"null"
],
"default": null
},
"annotations": {
"description": "Annotations to add to the worker Kubernetes ServiceAccount.",
"type": "object",
"default": {}
}
}
},
"nodeSelector": {
"description": "Select certain nodes for Flower pods.",
"type": "object",
"default": {},
"additionalProperties": {
"type": "string"
}
},
"affinity": {
"description": "Specify scheduling constraints for Flower pods.",
"type": "object",
"default": {}
},
"tolerations": {
"description": "Specify Tolerations for Flower pods.",
"type": "array",
"default": []
}
}
},
"statsd": {
"description": "StatsD settings.",
"type": "object",
"x-docsSection": "Statsd",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable StatsD.",
"type": "boolean",
"default": true
},
"extraNetworkPolicies": {
"description": "Additional NetworkPolicies as needed.",
"type": "array",
"default": []
},
"resources": {
"description": "Resources for StatsD pods.",
"type": "object",
"default": {},
"examples": [
{
"limits": {
"cpu": "100m",
"memory": "128Mi"
},
"requests": {
"cpu": "100m",
"memory": "128Mi"
}
}
]
},
"service": {
"description": "StatsD Service configuration.",
"type": "object",
"additionalProperties": false,
"properties": {
"extraAnnotations": {
"description": "Extra annotations for the StatsD Service.",
"type": "object",
"default": {}
}
}
},
"serviceAccount": {
"description": "Create ServiceAccount.",
"type": "object",
"properties": {
"create": {
"description": "Specifies whether a ServiceAccount should be created.",
"type": "boolean",
"default": true
},
"name": {
"description": "The name of the ServiceAccount to use. If not set and create is true, a name is generated using the release name.",
"type": [
"string",
"null"
],
"default": null
},
"annotations": {
"description": "Annotations to add to the StatsD Kubernetes ServiceAccount.",
"type": "object",
"default": {}
}
}
},
"uid": {
"description": "StatsD run as user parameter.",
"type": "integer",
"default": 65534
},
"nodeSelector": {
"description": "Select certain nodes for StatsD pods.",
"type": "object",
"default": {},
"additionalProperties": {
"type": "string"
}
},
"affinity": {
"description": "Specify scheduling constraints for StatsD pods.",
"type": "object",
"default": {}
},
"tolerations": {
"description": "Specify Tolerations for StatsD pods.",
"type": "array",
"default": []
},
"extraMappings": {
"description": "Additional mappings for StatsD exporter.",
"type": "array",
"default": []
}
}
},
"pgbouncer": {
"description": "PgBouncer settings.",
"type": "object",
"x-docsSection": "PgBouncer",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable PgBouncer.",
"type": "boolean",
"x-docsSection": "Common",
"default": false
},
"extraNetworkPolicies": {
"description": "Additional NetworkPolicies as needed.",
"type": "array",
"default": []
},
"metadataPoolSize": {
"description": "Metadata pool size.",
"type": "integer",
"default": 10
},
"resultBackendPoolSize": {
"description": "Result backend pool size.",
"type": "integer",
"default": 5
},
"maxClientConn": {
"description": "Maximum clients that can connect to PgBouncer (higher = more file descriptors).",
"type": "integer",
"default": 100
},
"configSecretName": {
"description": "The PgBouncer config Secret name.",
"type": [
"string",
"null"
],
"default": null
},
"podDisruptionBudget": {
"description": "PgBouncer PodDisruptionBudget.",
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enabled PodDistributionBudget.",
"type": "boolean",
"default": false
},
"config": {
"description": "Pod distribution configuration.",
"type": "object",
"additionalProperties": false,
"properties": {
"maxUnavailable": {
"description": "Max unavailable pods for PgBouncer.",
"type": "integer",
"default": 1
}
}
}
}
},
"resources": {
"description": "Resources for the PgBouncer pods.",
"type": "object",
"default": {},
"examples": [
{
"limits": {
"cpu": "100m",
"memory": "128Mi"
},
"requests": {
"cpu": "100m",
"memory": "128Mi"
}
}
]
},
"service": {
"description": "PgBouncer Service configuration.",
"type": "object",
"additionalProperties": false,
"properties": {
"extraAnnotations": {
"description": "Extra annotations for the PgBouncer Service.",
"type": "object",
"default": {}
}
}
},
"verbose": {
"description": "Increase PgBouncer verbosity.",
"type": "integer",
"default": 0
},
"logDisconnections": {
"description": "Log disconnections with reasons.",
"type": "integer",
"default": 0
},
"logConnections": {
"description": "Log successful logins.",
"type": "integer",
"default": 0
},
"sslmode": {
"description": "SSL mode for PgBouncer.",
"type": "string",
"enum": [
"disable",
"allow",
"prefer",
"require",
"verify-ca",
"verify-full"
],
"default": "prefer"
},
"ciphers": {
"description": "The allowed ciphers, might be 'fast', 'normal' or list ciphers separated with ':'.",
"type": "string",
"default": "normal"
},
"ssl": {
"description": "SSL certificates for PgBouncer connection.",
"type": "object",
"properties": {
"ca": {
"description": "Certificate Authority for server side",
"type": [
"string",
"null"
],
"default": null
},
"cert": {
"description": "Server Certificate for server side",
"type": [
"string",
"null"
],
"default": null
},
"key": {
"description": "Private key used to authenticate with the server",
"type": [
"string",
"null"
],
"default": null
}
}
},
"serviceAccount": {
"description": "Create ServiceAccount.",
"type": "object",
"properties": {
"create": {
"description": "Specifies whether a ServiceAccount should be created.",
"type": "boolean",
"default": true
},
"name": {
"description": "The name of the ServiceAccount to use. If not set and create is true, a name is generated using the release name.",
"type": [
"string",
"null"
],
"default": null
},
"annotations": {
"description": "Annotations to add to the worker Kubernetes ServiceAccount.",
"type": "object",
"default": {}
}
}
},
"nodeSelector": {
"description": "Select certain nodes for PgBouncer pods.",
"type": "object",
"default": {},
"additionalProperties": {
"type": "string"
}
},
"affinity": {
"description": "Specify scheduling constraints for PgBouncer pods.",
"type": "object",
"default": {}
},
"tolerations": {
"description": "Specify Tolerations for PgBouncer pods.",
"type": "array",
"default": []
},
"uid": {
"description": "PgBouncer run as user parameter.",
"type": "integer",
"default": 65534
}
}
},
"redis": {
"description": "Configuration for the Redis provisioned by the chart.",
"type": "object",
"x-docsSection": "Redis",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable the Redis provisioned by the chart (you can also use an external Redis instance with `data.brokerUrl` or `data.brokerUrlSecretName`).",
"type": "boolean",
"default": true
},
"terminationGracePeriodSeconds": {
"description": "Grace period for Redis to exit after SIGTERM is sent from Kubernetes.",
"type": "integer",
"default": 600
},
"persistence": {
"description": "Persistence configuration.",
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable persistent volumes.",
"type": "boolean",
"default": true
},
"size": {
"description": "Volume size for Redis StatefulSet.",
"type": "string",
"default": "1Gi"
},
"storageClassName": {
"description": "If using a custom StorageClass, pass name ref to all StatefulSets here.",
"type": [
"string",
"null"
],
"default": null
}
}
},
"resources": {
"description": "Resources for the Redis pods",
"type": "object",
"default": {},
"examples": [
{
"limits": {
"cpu": "100m",
"memory": "128Mi"
},
"requests": {
"cpu": "100m",
"memory": "128Mi"
}
}
]
},
"passwordSecretName": {
"description": "Redis password secret.",
"type": [
"string",
"null"
],
"default": null
},
"password": {
"description": "If password is set, create secret with it, else generate a new one on install.",
"type": [
"string",
"null"
],
"default": null
},
"safeToEvict": {
"description": "This setting tells Kubernetes that its ok to evict when it wants to scale a node down.",
"type": "boolean",
"default": true
},
"nodeSelector": {
"description": "Select certain nodes for Redis pods.",
"type": "object",
"default": {},
"additionalProperties": {
"type": "string"
}
},
"affinity": {
"description": "Specify scheduling constraints for Redis pods.",
"type": "object",
"default": {}
},
"tolerations": {
"description": "Specify Tolerations for Redis pods.",
"type": "array",
"default": []
},
"serviceAccount": {
"description": "Create ServiceAccount.",
"type": "object",
"properties": {
"create": {
"description": "Specifies whether a ServiceAccount should be created.",
"type": "boolean",
"default": true
},
"name": {
"description": "The name of the ServiceAccount to use. If not set and create is true, a name is generated using the release name.",
"type": [
"string",
"null"
],
"default": null
},
"annotations": {
"description": "Annotations to add to the worker Kubernetes ServiceAccount.",
"type": "object",
"default": {}
}
}
}
}
},
"registry": {
"description": "Auth secret for a private registry. This is used if pulling Airflow images from a private registry.",
"type": "object",
"x-docsSection": "Kubernetes",
"additionalProperties": false,
"properties": {
"secretName": {
"description": "Registry connection string secret.",
"type": [
"string",
"null"
],
"default": null
},
"connection": {
"description": "Registry connection configuration.",
"type": "object",
"default": {},
"examples": [
{
"user": "...",
"pass": "...",
"host": "...",
"email": "..."
}
]
}
}
},
"elasticsearch": {
"description": "Elasticsearch logging configuration.",
"type": "object",
"x-docsSection": "Airflow",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable Elasticsearch task logging.",
"type": "boolean",
"default": false
},
"secretName": {
"description": "A secret containing the connection string.",
"type": [
"string",
"null"
],
"default": null
},
"connection": {
"description": "Elasticsearch connection configuration.",
"type": "object",
"default": {},
"examples": [
{
"user": "...",
"pass": "...",
"host": "...",
"email": "..."
}
]
}
}
},
"ports": {
"description": "All ports used by chart.",
"type": "object",
"x-docsSection": "Ports",
"additionalProperties": false,
"properties": {
"flowerUI": {
"description": "Flower UI port.",
"type": "integer",
"default": 5555
},
"airflowUI": {
"description": "Airflow UI port.",
"type": "integer",
"default": 8080
},
"workerLogs": {
"description": "Worker logs port.",
"type": "integer",
"default": 8793
},
"redisDB": {
"description": "Redis port.",
"type": "integer",
"default": 6379
},
"statsdIngest": {
"description": "StatsD ingest port.",
"type": "integer",
"default": 9125
},
"statsdScrape": {
"description": "StatsD scrape port.",
"type": "integer",
"default": 9102
},
"pgbouncer": {
"description": "PgBouncer port.",
"type": "integer",
"default": 6543
},
"pgbouncerScrape": {
"description": "PgBouncer scrape port.",
"type": "integer",
"default": 9127
}
}
},
"quotas": {
"description": "Define any ResourceQuotas for namespace.",
"type": "object",
"x-docsSection": "Kubernetes",
"default": {}
},
"limits": {
"description": "Define default/max/min values for pods and containers in namespace.",
"type": "array",
"x-docsSection": "Kubernetes",
"default": []
},
"cleanup": {
"description": "This runs as a CronJob to cleanup old pods.",
"type": "object",
"x-docsSection": "Jobs",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable cleanup.",
"type": "boolean",
"default": false
},
"schedule": {
"description": "Cleanup schedule.",
"type": "string",
"default": "*/15 * * * *"
},
"nodeSelector": {
"description": "Select certain nodes for cleanup pods.",
"type": "object",
"default": {},
"additionalProperties": {
"type": "string"
}
},
"affinity": {
"description": "Specify scheduling constraints for cleanup pods.",
"type": "object",
"default": {}
},
"tolerations": {
"description": "Specify Tolerations for cleanup pods.",
"type": "array",
"default": []
},
"serviceAccount": {
"description": "Create ServiceAccount.",
"type": "object",
"properties": {
"create": {
"description": "Specifies whether a ServiceAccount should be created.",
"type": "boolean",
"default": true
},
"name": {
"description": "The name of the ServiceAccount to use. If not set and create is true, a name is generated using the release name.",
"type": [
"string",
"null"
],
"default": null
},
"annotations": {
"description": "Annotations to add to the cleanup CronJob Kubernetes ServiceAccount.",
"type": "object",
"default": {}
}
}
}
}
},
"postgresql": {
"description": "Configuration for PostgreSQL subchart.",
"type": "object",
"x-docsSection": "Database",
"properties": {
"enabled": {
"description": "Enable PostgreSQL subchart.",
"type": "boolean",
"default": true
},
"postgresqlPassword": {
"description": "PostgreSQL password.",
"type": "string",
"default": "postgres"
},
"postgresqlUsername": {
"description": "PostgreSQL username.",
"type": "string",
"default": "postgres"
}
}
},
"config": {
"description": "Settings to go into the mounted airflow.cfg",
"type": "object",
"x-docsSection": "Common",
"default": "See values.yaml",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": [
"boolean",
"integer",
"number",
"string"
]
}
}
},
"multiNamespaceMode": {
"description": "Whether the KubernetesExecutor can launch workers and pods in multiple namespaces",
"x-docsSection": "Airflow",
"type": "boolean",
"default": false
},
"podTemplate": {
"description": "pod_template used for KubernetesExecutor workers",
"type": [
"string",
"null"
],
"x-docsSection": "Airflow",
"default": null
},
"dags": {
"description": "DAGs settings.",
"type": "object",
"x-docsSection": "Airflow",
"additionalProperties": false,
"properties": {
"persistence": {
"description": "Persistence configuration.",
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable persistent volume for storing dags.",
"type": "boolean",
"default": false
},
"size": {
"description": "Volume size for dags.",
"type": "string",
"default": "1Gi"
},
"storageClassName": {
"description": "If using a custom StorageClass, pass name here.",
"type": [
"string",
"null"
],
"default": null
},
"accessMode": {
"description": "Access mode of the persistent volume.",
"type": "string",
"enum": [
"ReadWriteOnce",
"ReadOnlyMany",
"ReadWriteMany"
],
"default": "ReadWriteOnce"
},
"existingClaim": {
"description": "The name of an existing PVC to use.",
"type": [
"string",
"null"
],
"default": null
}
}
},
"gitSync": {
"description": "Git sync settings.",
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable Git sync.",
"type": "boolean",
"default": false
},
"excludeWebserver": {
"description": "Disable Git sync on webserver as it is not needed when DAG Serialization is enabled.",
"type": "boolean",
"default": false
},
"repo": {
"description": "Git repository.",
"type": "string",
"default": "https://github.com/apache/airflow.git"
},
"branch": {
"description": "Git branch",
"type": "string",
"default": "v2-1-stable"
},
"rev": {
"description": "Git revision.",
"type": "string",
"default": "HEAD"
},
"depth": {
"description": "Repository depth.",
"type": "integer",
"default": 1
},
"maxFailures": {
"description": "The number of consecutive failures allowed before aborting.",
"type": "integer",
"default": 0
},
"subPath": {
"description": "Subpath within the repo where dags are located.",
"type": "string",
"default": "tests/dags"
},
"wait": {
"description": "Interval between git sync attempts in seconds.",
"type": "integer",
"default": 60
},
"containerName": {
"description": "Git sync container name.",
"type": "string",
"default": "git-sync"
},
"uid": {
"description": "Git sync container run as user parameter.",
"type": "integer",
"default": 65533
},
"extraVolumeMounts": {
"description": "Mount additional volumes into git sync container.",
"type": "array",
"default": []
},
"credentialsSecret": {
"description": "Name of a Secret containing the repo `GIT_SYNC_USERNAME` and `GIT_SYNC_PASSWORD`.",
"type": [
"string",
"null"
],
"default": null
},
"sshKeySecret": {
"description": "Name of a Secret containing the repo `sshKeySecret`.",
"type": [
"string",
"null"
],
"default": null
},
"knownHosts": {
"description": "When using a ssh private key, the contents of your `known_hosts` file.",
"type": [
"string",
"null"
],
"default": null,
"examples": [
"<host1>,<ip1> <key1>\n<host2>,<ip2> <key2>",
"<host1>,<ip1> <key1>"
]
},
"env": {
"description": "Environment variables for git sync container.",
"type": "array",
"default": [],
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"name",
"value"
],
"additionalProperties": false
},
"examples": [
{
"name": "GIT_SYNC_TIMEOUT",
"value": "60"
}
]
}
}
}
}
},
"logs": {
"description": "Logs settings.",
"type": "object",
"x-docsSection": "Airflow",
"additionalProperties": false,
"properties": {
"persistence": {
"description": "Persistence configuration.",
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable persistent volume for storing logs.",
"type": "boolean",
"default": false
},
"size": {
"description": "Volume size for logs.",
"type": "string",
"default": "100Gi"
},
"storageClassName": {
"description": "If using a custom StorageClass, pass name here.",
"type": [
"string",
"null"
],
"default": null
},
"existingClaim": {
"description": "The name of an existing PVC to use.",
"type": [
"string",
"null"
],
"default": null
}
}
}
}
}
}
}