{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "affinity": { "description": "Affinity settings for `Pod` [scheduling](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/). If an explicit label selector is not provided for pod affinity or pod anti-affinity one will be created from the pod selector labels.", "type": "object" }, "annotationFilter": { "description": "Filter resources queried for endpoints by annotation selector.", "type": [ "string", "null" ] }, "annotationPrefix": { "description": "Annotation prefix for external-dns annotations (useful for split horizon DNS with multiple instances).", "type": [ "string", "null" ] }, "automountServiceAccountToken": { "description": "Set this to `false` to [opt out of API credential automounting](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#opt-out-of-api-credential-automounting) for the `Pod`.", "type": "boolean" }, "commonLabels": { "description": "Labels to add to all chart resources.", "type": "object" }, "deploymentAnnotations": { "description": "Annotations to add to the `Deployment`.", "type": "object" }, "deploymentStrategy": { "description": "[Deployment Strategy](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy).", "type": "object", "properties": { "type": { "default": "Recreate", "type": "string", "enum": [ "Recreate", "RollingUpdate" ] } }, "additionalProperties": true }, "dnsConfig": { "description": "[DNS config](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config) for the pod, if not set the default will be used.", "type": [ "object", "null" ] }, "dnsPolicy": { "description": "[DNS policy](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy) for the pod, if not set the default will be used.", "type": [ "string", "null" ] }, "domainFilters": { "description": "Limit possible target zones by domain suffixes.", "type": "array" }, "enabled": { "description": "No effect - reserved for use in sub-charting", "type": [ "boolean", "null" ] }, "env": { "description": "[Environment variables](https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/) for the `external-dns` container.", "type": "array" }, "excludeDomains": { "description": "Intentionally exclude domains from being managed.", "type": "array" }, "extraArgs": { "description": "Extra arguments to provide to _ExternalDNS_. An array or map can be used, with maps allowing for value overrides; maps also support slice values to use the same arg multiple times.", "type": [ "array", "null", "object" ], "uniqueItems": true, "items": { "type": "string" } }, "extraContainers": { "description": "Extra containers to add to the `Deployment`.", "type": "array" }, "extraVolumeMounts": { "description": "Extra [volume mounts](https://kubernetes.io/docs/concepts/storage/volumes/) for the `external-dns` container.", "type": "array" }, "extraVolumes": { "description": "Extra [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) for the `Pod`.", "type": "array" }, "fullnameOverride": { "description": "Override the full name of the chart.", "type": [ "string", "null" ] }, "gatewayNamespace": { "description": "_Gateway API_ gateway namespace to watch.", "type": [ "string", "null" ] }, "global": { "type": "object", "properties": { "imagePullSecrets": { "description": "Global image pull secrets.", "type": "array", "items": { "type": "object" } } } }, "image": { "type": "object", "properties": { "pullPolicy": { "description": "Image pull policy for the `external-dns` container.", "type": "string", "enum": [ "IfNotPresent", "Always" ] }, "repository": { "description": "Image repository for the `external-dns` container.", "type": "string" }, "tag": { "description": "Image tag for the `external-dns` container, this will default to `.Chart.AppVersion` if not set.", "type": [ "string", "null" ] } }, "additionalProperties": false }, "imagePullSecrets": { "description": "Image pull secrets.", "type": "array", "items": { "type": "object" } }, "initContainers": { "description": "[Init containers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/) to add to the `Pod` definition.", "type": "array" }, "interval": { "description": "Interval for DNS updates.", "type": "string" }, "labelFilter": { "description": "Filter resources queried for endpoints by label selector.", "type": [ "string", "null" ] }, "livenessProbe": { "description": "[Liveness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) configuration for the `external-dns` container.", "type": "object", "properties": { "failureThreshold": { "type": "integer" }, "httpGet": { "type": "object", "properties": { "path": { "type": "string" }, "port": { "type": "string" } } }, "initialDelaySeconds": { "type": "integer" }, "periodSeconds": { "type": "integer" }, "successThreshold": { "type": "integer" }, "timeoutSeconds": { "type": "integer" } } }, "logFormat": { "description": "Log format.", "default": "text", "type": "string", "enum": [ "text", "json" ] }, "logLevel": { "description": "Log level.", "default": "info", "type": "string", "enum": [ "panic", "debug", "info", "warning", "error", "fatal" ] }, "managedRecordTypes": { "description": "Record types to manage (default: A, AAAA, CNAME)", "type": [ "array", "null" ], "uniqueItems": true, "items": { "type": "string" } }, "nameOverride": { "description": "Override the name of the chart.", "type": [ "string", "null" ] }, "namespaced": { "description": "if `true`, _ExternalDNS_ will run in a namespaced scope (`Role`` and `Rolebinding`` will be namespaced too).", "type": "boolean" }, "nodeSelector": { "description": "Node labels to match for `Pod` [scheduling](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/).", "type": "object" }, "podAnnotations": { "description": "Annotations to add to the `Pod`.", "type": "object" }, "podLabels": { "description": "Labels to add to the `Pod`.", "type": "object" }, "podSecurityContext": { "description": "[Pod security context](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.22/#podsecuritycontext-v1-core), this supports full customisation.", "type": "object", "properties": { "fsGroup": { "type": "integer" }, "runAsNonRoot": { "type": "boolean" }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string" } } } } }, "policy": { "description": "How DNS records are synchronized between sources and providers; available values are `create-only`, `sync`, \u0026 `upsert-only`.", "default": "upsert-only", "type": "string", "enum": [ "create-only", "sync", "upsert-only" ] }, "priorityClassName": { "description": "Priority class name for the `Pod`.", "type": [ "string", "null" ] }, "provider": { "type": [ "object", "string" ], "properties": { "name": { "description": "_ExternalDNS_ provider name; for the available providers and how to configure them see [README](https://github.com/kubernetes-sigs/external-dns/blob/master/charts/external-dns/README.md#providers).", "type": "string" }, "webhook": { "type": "object", "properties": { "args": { "description": "Extra arguments to provide for the `webhook` container.", "type": "array" }, "env": { "description": "[Environment variables](https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/) for the `webhook` container.", "type": "array" }, "extraVolumeMounts": { "description": "Extra [volume mounts](https://kubernetes.io/docs/concepts/storage/volumes/) for the `webhook` container.", "type": "array" }, "image": { "type": "object", "properties": { "pullPolicy": { "description": "Image pull policy for the `webhook` container.", "type": "string" }, "repository": { "description": "Image repository for the `webhook` container.", "type": [ "string", "null" ] }, "tag": { "description": "Image tag for the `webhook` container.", "type": [ "string", "null" ] } } }, "limits": { "type": "object", "properties": { "cpu": { "type": "string" }, "memory": { "type": "string" } } }, "livenessProbe": { "description": "[Liveness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) configuration for the `external-dns` container.", "type": "object", "properties": { "failureThreshold": { "type": [ "integer", "null" ] }, "httpGet": { "type": "object", "properties": { "path": { "type": [ "string", "null" ] }, "port": { "default": "string", "type": [ "integer", "string" ] } } }, "initialDelaySeconds": { "type": [ "integer", "null" ] }, "periodSeconds": { "type": [ "integer", "null" ] }, "successThreshold": { "type": [ "integer", "null" ] }, "timeoutSeconds": { "type": [ "integer", "null" ] } } }, "readinessProbe": { "description": "[Readiness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) configuration for the `webhook` container.", "type": "object", "properties": { "failureThreshold": { "type": [ "integer", "null" ] }, "httpGet": { "type": "object", "properties": { "path": { "type": [ "string", "null" ] }, "port": { "default": "string", "type": [ "integer", "string" ] } } }, "initialDelaySeconds": { "type": [ "integer", "null" ] }, "periodSeconds": { "type": [ "integer", "null" ] }, "successThreshold": { "type": [ "integer", "null" ] }, "timeoutSeconds": { "type": [ "integer", "null" ] } } }, "requests": { "type": "object", "properties": { "cpu": { "type": "string" }, "memory": { "type": "string" } } }, "resources": { "description": "[Resources](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the `webhook` container.", "type": "object" }, "securityContext": { "description": "[Pod security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container) for the `webhook` container.", "type": "object" }, "service": { "type": "object", "properties": { "port": { "description": "Webhook exposed HTTP port for the service.", "type": "integer" } } }, "serviceMonitor": { "description": "Optional [Service Monitor](https://prometheus-operator.dev/docs/operator/design/#servicemonitor) configuration for the `webhook` container.", "type": "object", "properties": { "bearerTokenFile": { "type": [ "string", "null" ] }, "interval": { "type": [ "string", "null" ] }, "metricRelabelings": { "type": "array" }, "relabelings": { "type": "array" }, "scheme": { "type": [ "string", "null" ] }, "scrapeTimeout": { "type": [ "string", "null" ] }, "tlsConfig": { "type": "object" } } } } } } }, "rbac": { "type": "object", "properties": { "additionalPermissions": { "description": "Additional rules to add to the `ClusterRole`.", "type": "array" }, "create": { "description": "If `true`, create a `ClusterRole` \u0026 `ClusterRoleBinding` with access to the Kubernetes API.", "type": "boolean" } }, "additionalProperties": true }, "readinessProbe": { "description": "[Readiness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) configuration for the `external-dns` container.", "type": "object", "properties": { "failureThreshold": { "type": "integer" }, "httpGet": { "type": "object", "properties": { "path": { "type": "string" }, "port": { "type": "string" } } }, "initialDelaySeconds": { "type": "integer" }, "periodSeconds": { "type": "integer" }, "successThreshold": { "type": "integer" }, "timeoutSeconds": { "type": "integer" } } }, "registry": { "description": "Specify the registry for storing ownership and labels. Valid values are `txt`, `aws-sd`, `dynamodb` \u0026 `noop`.", "default": "txt", "type": "string", "enum": [ "txt", "aws-sd", "dynamodb", "noop" ] }, "resources": { "description": "[Resources](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the `external-dns` container.", "type": "object", "properties": { "limits": { "type": "object", "properties": { "cpu": { "type": "string" }, "memory": { "type": "string" } } }, "requests": { "type": "object", "properties": { "cpu": { "type": "string" }, "memory": { "type": "string" } } } } }, "revisionHistoryLimit": { "description": "Specify the number of old `ReplicaSets` to retain to allow rollback of the `Deployment``.", "type": [ "integer", "null" ], "minimum": 0 }, "secretConfiguration": { "type": "object", "properties": { "data": { "description": "`Secret` data.", "type": "object" }, "enabled": { "description": "If `true`, create a `Secret` to store sensitive provider configuration (**DEPRECATED**).", "type": "boolean" }, "mountPath": { "description": "Mount path for the `Secret`, this can be templated.", "type": [ "string", "null" ] }, "subPath": { "description": "Sub-path for mounting the `Secret`, this can be templated.", "type": [ "string", "null" ] } } }, "securityContext": { "description": "[Security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container) for the `external-dns` container.", "type": "object", "properties": { "allowPrivilegeEscalation": { "type": "boolean" }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "items": { "type": "string" } } } }, "privileged": { "type": "boolean" }, "readOnlyRootFilesystem": { "type": "boolean" }, "runAsGroup": { "type": "integer" }, "runAsNonRoot": { "type": "boolean" }, "runAsUser": { "type": "integer" } } }, "service": { "type": "object", "properties": { "annotations": { "description": "Service annotations.", "type": "object" }, "ipFamilies": { "description": "Service IP families (e.g. IPv4 and/or IPv6).", "type": [ "array", "null" ], "maxItems": 2, "minItems": 0, "uniqueItems": true, "items": { "type": "string", "enum": [ "IPv4", "IPv6" ] } }, "ipFamilyPolicy": { "description": "Service IP family policy.", "type": [ "string", "null" ], "enum": [ "SingleStack", "PreferDualStack", "RequireDualStack", null ] }, "port": { "description": "Service HTTP port.", "default": 7979, "type": "integer", "minimum": 0 } } }, "serviceAccount": { "type": "object", "properties": { "annotations": { "description": "Annotations to add to the service account. Templates are allowed in both the key and the value. Example: `example.com/annotation/{{ .Values.nameOverride }}: {{ .Values.nameOverride }}`", "type": "object" }, "automountServiceAccountToken": { "description": "Set this to `false` to [opt out of API credential automounting](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#opt-out-of-api-credential-automounting) for the `ServiceAccount`.", "type": "boolean" }, "create": { "description": "If `true`, create a new `ServiceAccount`.", "type": "boolean" }, "labels": { "description": "Labels to add to the service account.", "type": "object" }, "name": { "description": "If this is set and `serviceAccount.create` is `true` this will be used for the created `ServiceAccount` name, if set and `serviceAccount.create` is `false` then this will define an existing `ServiceAccount` to use.", "type": [ "string", "null" ] } } }, "serviceMonitor": { "type": "object", "properties": { "additionalLabels": { "description": "Additional labels for the `ServiceMonitor`.", "type": "object" }, "annotations": { "description": "Annotations to add to the `ServiceMonitor`.", "type": "object" }, "bearerTokenFile": { "description": "Provide a bearer token file for the `ServiceMonitor`.", "type": [ "string", "null" ] }, "enabled": { "description": "If `true`, create a `ServiceMonitor` resource to support the _Prometheus Operator_.", "type": "boolean" }, "interval": { "description": "If set override the _Prometheus_ default interval.", "type": [ "string", "null" ] }, "metricRelabelings": { "description": "[Metric relabel configs](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs) to apply to samples before ingestion.", "type": "array" }, "namespace": { "description": "If set create the `ServiceMonitor` in an alternate namespace.", "type": [ "string", "null" ] }, "relabelings": { "description": "[Relabel configs](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config) to apply to samples before ingestion.", "type": "array" }, "scheme": { "description": "If set overrides the _Prometheus_ default scheme.", "type": [ "string", "null" ] }, "scrapeTimeout": { "description": "If set override the _Prometheus_ default scrape timeout.", "type": [ "string", "null" ] }, "targetLabels": { "description": "Provide target labels for the `ServiceMonitor`.", "type": "array" }, "tlsConfig": { "description": "Configure the `ServiceMonitor` [TLS config](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#tlsconfig).", "type": "object" } } }, "shareProcessNamespace": { "description": "If `true`, the `Pod` will have [process namespace sharing](https://kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/) enabled.", "type": "boolean" }, "sources": { "description": "_Kubernetes_ resources to monitor for DNS entries.", "type": "array", "items": { "type": "string" } }, "terminationGracePeriodSeconds": { "description": "Termination grace period for the `Pod` in seconds.", "type": [ "integer", "null" ] }, "tolerations": { "description": "Node taints which will be tolerated for `Pod` [scheduling](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/).", "type": "array" }, "topologySpreadConstraints": { "description": "Topology spread constraints for `Pod` [scheduling](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/). If an explicit label selector is not provided one will be created from the pod selector labels.", "type": "array" }, "triggerLoopOnEvent": { "description": "If `true`, triggers run loop on create/update/delete events in addition of regular interval.", "type": "boolean" }, "txtOwnerId": { "description": "Specify an identifier for this instance of _ExternalDNS_ when using a registry other than `noop`.", "type": [ "string", "null" ] }, "txtPrefix": { "description": "Specify a prefix for the domain names of TXT records created for the `txt` registry. Mutually exclusive with `txtSuffix`.", "type": [ "string", "null" ] }, "txtSuffix": { "description": "Specify a suffix for the domain names of TXT records created for the `txt` registry. Mutually exclusive with `txtPrefix`.", "type": [ "string", "null" ] } }, "additionalProperties": true }