This is an automated email from the ASF dual-hosted git repository.
kaxilnaik pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/master by this push:
new a449b1f Add JSON schema validation for Helm values (#10664)
a449b1f is described below
commit a449b1fc4e51fb9e69e4e7fe0c6fe0eb8faced0c
Author: flvndh <[email protected]>
AuthorDate: Tue Sep 22 01:40:19 2020 +0200
Add JSON schema validation for Helm values (#10664)
fixes #10634
---
chart/values.schema.json | 1055 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 1055 insertions(+)
diff --git a/chart/values.schema.json b/chart/values.schema.json
new file mode 100644
index 0000000..52bce31
--- /dev/null
+++ b/chart/values.schema.json
@@ -0,0 +1,1055 @@
+{
+ "$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"
+ }
+ }
+ }
+ }
+ }
+ }
+}