blob: 52bce31c0b3fbf84f6c2a90e8ed8a88f32bc2b3a [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",
"properties": {
"uid": {
"description": "User of airflow user.",
"type": "integer"
},
"gid": {
"description": "Group of airflow user.",
"type": "integer"
},
"airflowHome": {
"description": "Airflow home directory. Used for mount paths.",
"type": "string"
},
"defaultAirflowRepository": {
"description": "Default airflow repository. Overrides all the specific images below.",
"type": "string"
},
"defaultAirflowTag": {
"description": "Default airflow tag to deploy.",
"type": "string"
},
"nodeSelector": {
"description": "Select certain nodes for airflow pods.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"affinity": {
"description": "Select certain nodes for airflow pods.",
"type": "object"
},
"tolerations": {
"description": "Select certain nodes for airflow pods.",
"type": "array"
},
"labels": {
"description": "Add common labels to all objects and pods defined in this chart.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"ingress": {
"description": "Ingress configuration.",
"type": "object",
"properties": {
"enabled": {
"description": "Enable ingress resource.",
"type": "boolean"
},
"web": {
"description": "Configuration for the Ingress of the web Service.",
"type": "object",
"properties": {
"annotations": {
"description": "Annotations for the web Ingress.",
"type": "object"
},
"path": {
"description": "The path for the web Ingress.",
"type": "string"
},
"host": {
"description": "The hostname for the web Ingress.",
"type": "string"
},
"tls": {
"description": "Configuration for web Ingress TLS.",
"type": "object",
"properties": {
"enabled": {
"description": "Enable TLS termination for the web Ingress.",
"type": "boolean"
},
"secretName": {
"description": "The name of a pre-created Secret containing a TLS private key and certificate.",
"type": "string"
}
}
},
"precedingPaths": {
"description": "HTTP paths to add to the web Ingress before the default path.",
"type": "array"
},
"succeedingPaths": {
"description": "HTTP paths to add to the web Ingress after the default path.",
"type": "array"
}
}
},
"flower": {
"description": "Configuration for the Ingress of the flower Service.",
"type": "object",
"properties": {
"annotations": {
"description": "Annotations for the flower Ingress.",
"type": "object"
},
"path": {
"description": "The path for the flower Ingress.",
"type": "string"
},
"host": {
"description": "The hostname for the flower Ingress.",
"type": "string"
},
"tls": {
"description": "Configuration for flower Ingress TLS.",
"type": "object",
"properties": {
"enabled": {
"description": "Enable TLS termination for the flower Ingress.",
"type": "boolean"
},
"secretName": {
"description": "The name of a pre-created Secret containing a TLS private key and certificate.",
"type": "string"
}
}
},
"precedingPaths": {
"description": "HTTP paths to add to the flower Ingress before the default path.",
"type": "array"
},
"succeedingPaths": {
"description": "HTTP paths to add to the flower Ingress after the default path.",
"type": "array"
}
}
}
}
},
"networkPolicies": {
"description": "Network policy configuration.",
"type": "object",
"properties": {
"enabled": {
"description": "Enabled network policies.",
"type": "boolean"
}
}
},
"airflowPodAnnotations": {
"description": "Extra annotations to apply to all Airflow pods.",
"type": "object"
},
"rbacEnabled": {
"description": "Enable RBAC (default on most clusters these days).",
"type": "boolean"
},
"executor": {
"description": "Airflow executor.",
"type": "string"
},
"allowPodLaunching": {
"description": "If this is true and using LocalExecutor/SequentialExecutor/KubernetesExecutor, the scheduler's service account will have access to communicate with the api-server and launch pods. If this is true and using the CeleryExecutor, the workers will be able to launch pods.",
"type": "boolean"
},
"images": {
"description": "Images.",
"type": "object",
"properties": {
"airflow": {
"description": "Configuration of the airflow image.",
"type": "object",
"properties": {
"repository": {
"description": "The airflow image repository.",
"type": [
"string",
"null"
]
},
"tag": {
"description": "The airflow image tag.",
"type": [
"string",
"null"
]
},
"pullPolicy": {
"description": "The airflow image pull policy.",
"type": "string"
}
}
},
"flower": {
"description": "Configuration of the flower image.",
"type": "object",
"properties": {
"repository": {
"description": "The flower image repository.",
"type": [
"string",
"null"
]
},
"tag": {
"description": "The flower image tag.",
"type": [
"string",
"null"
]
},
"pullPolicy": {
"description": "The flower image pull policy.",
"type": "string"
}
}
},
"statsd": {
"description": "Configuration of the statsd image.",
"type": "object",
"properties": {
"repository": {
"description": "The statsd image repository.",
"type": "string"
},
"tag": {
"description": "The statsd image tag.",
"type": "string"
},
"pullPolicy": {
"description": "The statsd image pull policy.",
"type": "string"
}
}
},
"redis": {
"description": "Configuration of the redis image.",
"type": "object",
"properties": {
"repository": {
"description": "The redis image repository.",
"type": "string"
},
"tag": {
"description": "The redis image tag.",
"type": "string"
},
"pullPolicy": {
"description": "The redis image pull policy.",
"type": "string"
}
}
},
"pgbouncer": {
"description": "Configuration of the pgbouncer image.",
"type": "object",
"properties": {
"repository": {
"description": "The pgbouncer image repository.",
"type": "string"
},
"tag": {
"description": "The pgbouncer image tag.",
"type": "string"
},
"pullPolicy": {
"description": "The pgbouncer image pull policy.",
"type": "string"
}
}
},
"pgbouncerExporter": {
"description": "Configuration of the pgbouncerExporter image.",
"type": "object",
"properties": {
"repository": {
"description": "The pgbouncerExporter image repository.",
"type": "string"
},
"tag": {
"description": "The pgbouncerExporter image tag.",
"type": "string"
},
"pullPolicy": {
"description": "The pgbouncerExporter image pull policy.",
"type": "string"
}
}
}
}
},
"env": {
"description": "Environment variables for all airflow containers.",
"type": "array"
},
"secret": {
"description": "Secrets for all airflow containers.",
"type": "array"
},
"data": {
"description": "Airflow database configuration.",
"type": "object",
"properties": {
"metadataSecretName": {
"description": "Metadata connection string secret.",
"type": [
"string",
"null"
]
},
"resultBackendSecretName": {
"description": "Result backend connection string secret.",
"type": [
"string",
"null"
]
},
"metadataConnection": {
"description": "Metadata connection configuration.",
"type": "object",
"properties": {
"user": {
"description": "The database user.",
"type": "string"
},
"pass": {
"description": "The user's password.",
"type": "string"
},
"host": {
"description": "The database host.",
"type": [
"string",
"null"
]
},
"port": {
"description": "The database port.",
"type": "integer"
},
"db": {
"description": "The name of the database.",
"type": "string"
},
"sslmode": {
"description": "The database SSL parameter.",
"type": "string"
}
}
},
"resultBackendConnection": {
"description": "Result backend connection configuration.",
"type": "object",
"properties": {
"user": {
"description": "The database user.",
"type": "string"
},
"pass": {
"description": "The database password.",
"type": "string"
},
"host": {
"description": "The database host.",
"type": [
"string",
"null"
]
},
"port": {
"description": "The database port.",
"type": "integer"
},
"db": {
"description": "The name of the database.",
"type": "string"
},
"sslmode": {
"description": "The database SSL parameter.",
"type": "string"
}
}
}
}
},
"fernetKey": {
"description": "The Fernet key used to encrypt passwords.",
"type": [
"string",
"null"
]
},
"fernetKeySecretName": {
"description": "The Fernet key secret name.",
"type": [
"string",
"null"
]
},
"workers": {
"description": "Airflow Worker configuration.",
"type": "object",
"properties": {
"replicas": {
"description": "Number of airflow celery workers in StatefulSet.",
"type": "integer"
},
"keda": {
"description": "KEDA configuration.",
"type": "object",
"properties": {
"enabled": {
"description": "Allow KEDA autoscaling. `Persistence.enabled` must be set to false to use KEDA.",
"type": "boolean"
},
"namespaceLabels": {
"type": "object"
},
"pollingInterval": {
"description": "How often KEDA polls the airflow DB to report new scale requests to the HPA.",
"type": "integer"
},
"cooldownPeriod": {
"description": "How many seconds KEDA will wait before scaling to zero.",
"type": "integer"
},
"maxReplicaCount": {
"description": "Maximum number of workers created by KEDA.",
"type": "integer"
}
}
},
"persistence": {
"description": "Persistence configuration.",
"type": "object",
"properties": {
"enabled": {
"description": "Enable persistent volumes.",
"type": "boolean"
},
"size": {
"description": "Volume size for worker StatefulSet.",
"type": "string"
},
"storageClassName": {
"description": "If using a custom storageClass, pass name ref to all StatefulSets here.",
"type": [
"string",
"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"
}
}
},
"resources": {
"type": "object"
},
"terminationGracePeriodSeconds": {
"description": "Grace period for tasks to finish after SIGTERM is sent from Kubernetes.",
"type": "integer"
},
"safeToEvict": {
"description": "This setting tells Kubernetes that it's ok to evict when it wants to scale a node down.",
"type": "boolean"
}
}
},
"scheduler": {
"description": "Airflow scheduler settings.",
"type": "object",
"properties": {
"podDisruptionBudget": {
"description": "Scheduler pod disruption budget.",
"type": "object",
"properties": {
"enabled": {
"description": "Enable pod disruption budget.",
"type": "boolean"
},
"config": {
"description": "Disruption budget configuration.",
"type": "object",
"properties": {
"maxUnavailable": {
"description": "Max unavailable pods for scheduler.",
"type": "integer"
}
}
}
}
},
"resources": {
"type": "object"
},
"airflowLocalSettings": {
"description": "This setting can overwrite podMutation setting.",
"type": [
"string",
"null"
]
},
"safeToEvict": {
"description": "This setting tells Kubernetes that its ok to evict when it wants to scale a node down.",
"type": "boolean"
}
}
},
"webserver": {
"description": "Airflow webserver settings.",
"type": "object",
"properties": {
"livenessProbe": {
"description": "Liveness probe configuration.",
"type": "object",
"properties": {
"initialDelaySeconds": {
"description": "Webserver Liveness probe initial delay.",
"type": "integer"
},
"timeoutSeconds": {
"description": "Webserver Liveness probe timeout seconds.",
"type": "integer"
},
"failureThreshold": {
"description": "Webserver Liveness probe failure threshold.",
"type": "integer"
},
"periodSeconds": {
"description": "Webserver Liveness probe period seconds.",
"type": "integer"
}
}
},
"readinessProbe": {
"description": "Readiness probe configuration.",
"type": "object",
"properties": {
"initialDelaySeconds": {
"description": "Webserver Readiness probe initial delay.",
"type": "integer"
},
"timeoutSeconds": {
"description": "Webserver Readiness probe timeout seconds.",
"type": "integer"
},
"failureThreshold": {
"description": "Webserver Readiness probe failure threshold.",
"type": "integer"
},
"periodSeconds": {
"description": "Webserver Readiness probe period seconds.",
"type": "integer"
}
}
},
"replicas": {
"description": "How many Airflow webserver replicas should run.",
"type": "integer"
},
"extraNetworkPolicies": {
"description": "Additional network policies as needed.",
"type": "array"
},
"resources": {
"type": "object"
},
"defaultUser": {
"description": "Optional default airflow user information",
"type": "object",
"properties": {
"enabled": {
"description": "Enable default user creation.",
"type": "boolean"
},
"role": {
"description": "Default user role.",
"type": "string"
},
"username": {
"description": "Default user username.",
"type": "string"
},
"email": {
"description": "Default user email address.",
"type": "string"
},
"firstName": {
"description": "Default user firstname.",
"type": "string"
},
"lastName": {
"description": "Default user lastname.",
"type": "string"
},
"password": {
"description": "Default user password.",
"type": "string"
}
}
},
"extraVolumes": {
"description": "Mount additional volumes into webserver.",
"type": "array"
},
"extraVolumeMounts": {
"description": "Mount additional volumes into webserver.",
"type": "array"
},
"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"
]
},
"service": {
"description": "Webserver service configuration.",
"type": "object",
"properties": {
"type": {
"description": "Webserver service type.",
"type": "string"
},
"annotations": {
"description": "Annotations for the webserver service.",
"type": "object"
}
}
}
}
},
"flower": {
"description": "Flower settings.",
"type": "object",
"properties": {
"extraNetworkPolicies": {
"description": "Additional network policies as needed.",
"type": "array"
},
"resources": {
"type": "object"
},
"service": {
"description": "Flower service configuration.",
"type": "object",
"properties": {
"type": {
"description": "Flower service type.",
"type": "string"
}
}
}
}
},
"statsd": {
"description": "Statsd settings.",
"type": "object",
"properties": {
"enabled": {
"description": "Enable statsd.",
"type": "boolean"
},
"extraNetworkPolicies": {
"description": "Additional network policies as needed.",
"type": "array"
},
"resources": {
"type": "object"
},
"service": {
"description": "Statsd service configuration.",
"type": "object",
"properties": {
"extraAnnotations": {
"description": "Extra annotations for the statsd service.",
"type": "object"
}
}
}
}
},
"pgbouncer": {
"description": "Pgbouncer settings.",
"type": "object",
"properties": {
"enabled": {
"description": "Enable pgbouncer.",
"type": "boolean"
},
"extraNetworkPolicies": {
"description": "Additional network policies as needed.",
"type": "array"
},
"metadataPoolSize": {
"description": "Metadata pool size.",
"type": "integer"
},
"resultBackendPoolSize": {
"description": "Result backend pool size.",
"type": "integer"
},
"maxClientConn": {
"description": "Maximum clients that can connect to pgbouncer (higher = more file descriptors).",
"type": "integer"
},
"podDisruptionBudget": {
"description": "Pgbouner pod disruption budget.",
"type": "object",
"properties": {
"enabled": {
"description": "Enabled pod distribution budget.",
"type": "boolean"
},
"config": {
"description": "Pod distribution configuration.",
"type": "object",
"properties": {
"maxUnavailable": {
"description": "Max unavailable pods for pgbouncer.",
"type": "integer"
}
}
}
}
},
"resources": {
"type": "object"
},
"service": {
"description": "Pgbouncer service configuration.",
"type": "object",
"properties": {
"extraAnnotations": {
"description": "Extra annotations for the pgbouncer service.",
"type": "object"
}
}
},
"verbose": {
"description": "Increase pgbouncer verbosity.",
"type": "integer"
},
"logDisconnections": {
"description": "Log disconnections with reasons.",
"type": "integer"
},
"logConnections": {
"description": "Log successful logins.",
"type": "integer"
}
}
},
"redis": {
"description": "",
"type": "object",
"properties": {
"terminationGracePeriodSeconds": {
"description": "Grace period for tasks to finish after SIGTERM is sent from Kubernetes.",
"type": "integer"
},
"persistence": {
"description": "Persistence configuration.",
"type": "object",
"properties": {
"enabled": {
"description": "Enable persistent volumes.",
"type": "boolean"
},
"size": {
"description": "Volume size for worker StatefulSet.",
"type": "string"
},
"storageClassName": {
"description": "If using a custom storageClass, pass name ref to all StatefulSets here.",
"type": [
"string",
"null"
]
}
}
},
"resources": {
"type": "object"
},
"passwordSecretName": {
"description": "Redis password secret.",
"type": [
"string",
"null"
]
},
"brokerURLSecretName": {
"description": "Redis broker URL secret.",
"type": [
"string",
"null"
]
},
"password": {
"description": "If password is set, create secret with it, else generate a new one on install.",
"type": [
"string",
"null"
]
},
"safeToEvict": {
"description": "This setting tells Kubernetes that its ok to evict when it wants to scale a node down.",
"type": "boolean"
}
}
},
"registry": {
"description": "Auth secret for a private registry. This is used if pulling airflow images from a private registry.",
"type": "object",
"properties": {
"secretName": {
"description": "Registry connection string secret.",
"type": [
"string",
"null"
]
},
"connection": {
"description": "Registry connection configuration.",
"type": "object"
}
}
},
"elasticsearch": {
"description": "Elasticsearch logging configuration.",
"type": "object",
"properties": {
"enabled": {
"description": "Enable elasticsearch task logging.",
"type": "boolean"
},
"secretName": {
"description": "A secret containing the connection string.",
"type": [
"string",
"null"
]
},
"connection": {
"description": "Elasticsearch connection configuration.",
"type": "object"
}
}
},
"ports": {
"description": "All ports used by chart.",
"type": "object",
"properties": {
"flowerUI": {
"description": "Flower UI port.",
"type": "integer"
},
"airflowUI": {
"description": "Airflow UI port.",
"type": "integer"
},
"workerLogs": {
"description": "Worker logs port.",
"type": "integer"
},
"redisDB": {
"description": "Redis port.",
"type": "integer"
},
"statsdIngest": {
"description": "Statsd ingest port.",
"type": "integer"
},
"statsdScrape": {
"description": "Statsd scrape port.",
"type": "integer"
},
"pgbouncer": {
"description": "Pgbouncer port.",
"type": "integer"
},
"pgbouncerScrape": {
"description": "Pgbouncer scrape port.",
"type": "integer"
}
}
},
"quotas": {
"description": "Define any ResourceQuotas for namespace.",
"type": "object"
},
"limits": {
"description": "Define default/max/min values for pods and containers in namespace.",
"type": "array"
},
"podMutation": {
"description": "Settings for pod_mutation_hook",
"type": "object",
"properties": {
"tolerations": {
"description": "Tolerations provided here would be applied using pod_mutation_hook. So any pods spun up using KubernetesExecutor or KubernetesPodOperator will contain these tolerations.",
"type": "array"
},
"affinity": {
"description": "Pods spun up would land in the node that matches the affinity.",
"type": "object"
}
}
},
"cleanup": {
"description": "This runs as a CronJob to cleanup old pods.",
"type": "object",
"properties": {
"enabled": {
"description": "Enable cleanup.",
"type": "boolean"
},
"schedule": {
"description": "Cleanup schedule.",
"type": "string"
}
}
},
"postgresql": {
"description": "Configuration for postgresql subchart.",
"type": "object",
"properties": {
"enabled": {
"description": "Enable postgresql subchart.",
"type": "boolean"
},
"postgresqlPassword": {
"description": "Postgresql password.",
"type": "string"
},
"postgresqlUsername": {
"description": "Postgresql username.",
"type": "string"
}
}
},
"config": {
"description": "Settings to go into the mounted airflow.cfg",
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": [
"boolean",
"integer",
"number",
"string"
]
}
}
},
"dags": {
"description": "DAGs settings.",
"type": "object",
"properties": {
"persistence": {
"description": "Persistence configuration.",
"type": "object",
"properties": {
"enabled": {
"description": "Enable persistent volume for storing dags.",
"type": "boolean"
},
"size": {
"description": "Volume size for dags.",
"type": "string"
},
"storageClassName": {
"description": "If using a custom storageClass, pass name here.",
"type": [
"string",
"null"
]
},
"accessMode": {
"description": "Access mode of the persistent volume.",
"type": "string"
},
"existingClaim": {
"description": "The name of an existing PVC to use.",
"type": [
"string",
"null"
]
}
}
},
"gitSync": {
"description": "Git sync settings.",
"type": "object",
"properties": {
"enabled": {
"description": "Enable Git sync.",
"type": "boolean"
},
"repo": {
"description": "Git repository.",
"type": "string"
},
"branch": {
"description": "Git branch",
"type": "string"
},
"rev": {
"description": "Git revision.",
"type": "string"
},
"root": {
"description": "Root directory.",
"type": "string"
},
"dest": {
"description": "Destination folder.",
"type": "string"
},
"depth": {
"description": "Repository depth.",
"type": "integer"
},
"maxFailures": {
"description": "The number of consecutive failures allowed before aborting.",
"type": "integer"
},
"subPath": {
"description": "Subpath within the repo where dags are located.",
"type": "string"
},
"wait": {
"description": "Interval between git sync attempts in seconds.",
"type": "integer"
},
"containerRepository": {
"description": "Git sync image repository.",
"type": "string"
},
"containerTag": {
"description": "Git sync image tag.",
"type": "string"
},
"containerName": {
"description": "Git sync container name.",
"type": "string"
}
}
}
}
}
}
}