You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by GitBox <gi...@apache.org> on 2020/08/31 23:31:44 UTC

[GitHub] [airflow] mik-laj commented on a change in pull request #10664: Validate values.yaml

mik-laj commented on a change in pull request #10664:
URL: https://github.com/apache/airflow/pull/10664#discussion_r480472378



##########
File path: chart/values.schema.json
##########
@@ -0,0 +1,1250 @@
+{
+    "$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"
+        },
+        "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"
+        },
+        "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",
+            "enum": ["SequentialExecutor", "LocalExecutor", "CeleryExecutor", "KubernetesExecutor"]
+        },
+        "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",
+            "properties": {
+                "core": {
+                    "type": "object",
+                    "properties": {
+                        "dags_folder": {
+                            "type": "string"
+                        },
+                        "load_examples": {
+                            "type": "string"
+                        },
+                        "colored_console_log": {
+                            "type": "string"
+                        },
+                        "executor": {
+                            "type": "string"
+                        },
+                        "remote_logging": {
+                            "type": "string"
+                        }
+                    }
+                },
+                "api": {
+                    "type": "object",
+                    "properties": {
+                        "auth_backend": {
+                            "type": "string"
+                        }
+                    }
+                },
+                "logging": {
+                    "type": "object",
+                    "properties": {
+                        "logging_level": {
+                            "type": "string"
+                        }
+                    }
+                },
+                "webserver": {
+                    "type": "object",
+                    "properties": {
+                        "enable_proxy_fix": {
+                            "type": "string"
+                        },
+                        "expose_config": {
+                            "type": "string"
+                        },
+                        "rbac": {
+                            "type": "string"
+                        }
+                    }
+                },
+                "celery": {
+                    "type": "object",
+                    "properties": {
+                        "default_queue": {
+                            "type": "string"
+                        }
+                    }
+                },
+                "scheduler": {
+                    "type": "object",
+                    "properties": {
+                        "scheduler_heartbeat_sec": {
+                            "type": "integer"
+                        },
+                        "statsd_on": {
+                            "type": "string"
+                        },
+                        "statsd_port": {
+                            "type": "integer"
+                        },
+                        "statsd_prefix": {
+                            "type": "string"
+                        },
+                        "statsd_host": {
+                            "type": "string"
+                        },
+                        "run_duration": {
+                            "type": "integer"
+                        }
+                    }
+                },
+                "elasticsearch": {
+                    "type": "object",
+                    "properties": {
+                        "json_format": {
+                            "type": "string"
+                        },
+                        "log_id_template": {
+                            "type": "string"
+                        }
+                    }
+                },
+                "elasticsearch_configs": {
+                    "type": "object",
+                    "properties": {
+                        "max_retries": {
+                            "type": "integer"
+                        },
+                        "timeout": {
+                            "type": "integer"
+                        },
+                        "retry_timeout": {
+                            "type": "string"
+                        }
+                    }
+                },
+                "kubernetes": {
+                    "type": "object",
+                    "properties": {
+                        "namespace": {
+                            "type": "string"
+                        },
+                        "airflow_configmap": {
+                            "type": "string"
+                        },
+                        "airflow_local_settings_configmap": {
+                            "type": "string"
+                        },
+                        "worker_container_repository": {
+                            "type": "string"
+                        },
+                        "worker_container_tag": {
+                            "type": "string"
+                        },
+                        "worker_container_image_pull_policy": {
+                            "type": "string"
+                        },
+                        "worker_service_account_name": {
+                            "type": "string"
+                        },
+                        "image_pull_secrets": {
+                            "type": "string"
+                        },
+                        "dags_in_image": {
+                            "type": "string"
+                        },
+                        "delete_worker_pods": {
+                            "type": "string"
+                        },
+                        "run_as_user": {
+                            "type": "string"
+                        },
+                        "fs_group": {
+                            "type": "string"
+                        },
+                        "git_dags_folder_mount_point": {
+                            "type": "string"
+                        },
+                        "dags_volume_mount_point": {
+                            "type": "string"
+                        },
+                        "dags_volume_claim": {
+                            "type": "string"
+                        },
+                        "dags_volume_subpath": {
+                            "type": "string"
+                        },
+                        "git_repo": {
+                            "type": "string"
+                        },
+                        "git_branch": {
+                            "type": "string"
+                        },
+                        "git_sync_rev": {
+                            "type": "string"
+                        },
+                        "git_sync_depth": {
+                            "type": "string"
+                        },
+                        "git_sync_root": {
+                            "type": "string"
+                        },
+                        "git_sync_dest": {
+                            "type": "string"
+                        },
+                        "git_sync_container_repository": {
+                            "type": "string"
+                        },
+                        "git_sync_container_tag": {
+                            "type": "string"
+                        },
+                        "git_sync_init_container_name": {
+                            "type": "string"
+                        },
+                        "git_sync_run_as_user": {
+                            "type": "string"
+                        },
+                        "git_ssh_known_hosts_configmap_name": {
+                            "type": "string"
+                        },
+                        "git_ssh_key_secret_name": {
+                            "type": "string"
+                        },
+                        "git_sync_credentials_secret": {
+                            "type": "string"
+                        }
+                    }
+                },
+                "kubernetes_secrets": {
+                    "type": "object",
+                    "properties": {
+                        "AIRFLOW__CORE__SQL_ALCHEMY_CONN": {
+                            "type": "string"
+                        },
+                        "AIRFLOW__CORE__FERNET_KEY": {
+                            "type": "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"
+                        }
+                    }
+                }
+            }
+        }
+    }
+}

Review comment:
       ```suggestion
   }
   
   ```




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org