external-dns¶
ExternalDNS synchronizes exposed Kubernetes Services and Ingresses with DNS providers.
Homepage: https://github.com/kubernetes-sigs/external-dns/
Maintainers¶
Name | Url | |
---|---|---|
stevehipwell | steve.hipwell@gmail.com |
Source Code¶
Installing the Chart¶
Before you can install the chart you will need to add the external-dns
repo to Helm.
After you’ve installed the repo you can install the chart.
Providers¶
Configuring the ExternalDNS provider should be done via the provider.name
value with provider specific configuration being set via the provider.<name>.<key>
values, where supported, and the extraArgs
value. For legacy support provider
can be set to the name of the provider with all additional configuration being set via the extraArgs
value.
See documentation for more info on available providers and tutorials.
Providers with Specific Configuration Support¶
Provider | Supported |
---|---|
webhook |
✅ |
Other Providers¶
For set up for a specific provider using the Helm chart, see the following links:
Namespaced Scoped Installation¶
external-dns supports running on a namespaced only scope, too.
If namespaced=true
is defined, the helm chart will setup Roles
and RoleBindings
instead ClusterRoles
and ClusterRoleBindings
.
Limited Supported¶
Not all sources are supported in namespaced scope, since some sources depends on cluster-wide resources.
For example: Source node
isn’t supported, since kind: Node
has scope Cluster
.
Sources like istio-virtualservice
only work, if all resources like Gateway
and VirtualService
are present in the same
namespaces as external-dns
.
The annotation external-dns.alpha.kubernetes.io/endpoints-type: NodeExternalIP
is not supported.
If namespaced
is set to true
, please ensure that sources
my only contains supported sources (Default: service,ingress
).
Support Matrix¶
Source | Supported | Infos |
---|---|---|
ingress |
✅ | |
istio-gateway |
✅ | |
istio-virtualservice |
✅ | |
crd |
✅ | |
kong-tcpingress |
✅ | |
openshift-route |
✅ | |
skipper-routegroup |
✅ | |
gloo-proxy |
✅ | |
contour-httpproxy |
✅ | |
service |
⚠️️ | NodePort not supported |
node |
❌ | |
pod |
❌ |
Values¶
Key | Type | Default | Description |
---|---|---|---|
affinity | object | {} |
Affinity settings for Pod scheduling. If an explicit label selector is not provided for pod affinity or pod anti-affinity one will be created from the pod selector labels. |
automountServiceAccountToken | bool | nil |
Set this to false to opt out of API credential automounting for the Pod . |
commonLabels | object | {} |
Labels to add to all chart resources. |
deploymentAnnotations | object | {} |
Annotations to add to the Deployment . |
deploymentStrategy | object | {"type":"Recreate"} |
Deployment Strategy. |
dnsConfig | object | nil |
DNS config for the pod, if not set the default will be used. |
dnsPolicy | string | nil |
DNS policy for the pod, if not set the default will be used. |
domainFilters | list | [] |
Limit possible target zones by domain suffixes. |
env | list | [] |
Environment variables for the external-dns container. |
excludeDomains | list | [] |
Intentionally exclude domains from being managed. |
extraArgs | list | [] |
Extra arguments to provide to ExternalDNS. |
extraContainers | object | {} |
Extra containers to add to the Deployment . |
extraVolumeMounts | list | [] |
Extra volume mounts for the external-dns container. |
extraVolumes | list | [] |
Extra volumes for the Pod . |
fullnameOverride | string | nil |
Override the full name of the chart. |
global.imagePullSecrets | list | [] |
Global image pull secrets. |
image.pullPolicy | string | "IfNotPresent" |
Image pull policy for the external-dns container. |
image.repository | string | "registry.k8s.io/external-dns/external-dns" |
Image repository for the external-dns container. |
image.tag | string | nil |
Image tag for the external-dns container, this will default to .Chart.AppVersion if not set. |
imagePullSecrets | list | [] |
Image pull secrets. |
initContainers | list | [] |
Init containers to add to the Pod definition. |
interval | string | "1m" |
Interval for DNS updates. |
labelFilter | string | nil |
Filter resources queried for endpoints by label selector |
livenessProbe | object | See values.yaml | Liveness probe configuration for the external-dns container. |
logFormat | string | "text" |
Log format. |
logLevel | string | "info" |
Log level. |
managedRecordTypes | list | [] |
Record types to manage (default: A, AAAA, CNAME) |
nameOverride | string | nil |
Override the name of the chart. |
namespaced | bool | false |
if true , ExternalDNS will run in a namespaced scope (Role`` and Rolebinding`` will be namespaced too). |
nodeSelector | object | {} |
Node labels to match for Pod scheduling. |
podAnnotations | object | {} |
Annotations to add to the Pod . |
podLabels | object | {} |
Labels to add to the Pod . |
podSecurityContext | object | See values.yaml | Pod security context, this supports full customisation. |
policy | string | "upsert-only" |
How DNS records are synchronized between sources and providers; available values are sync & upsert-only . |
priorityClassName | string | nil |
Priority class name for the Pod . |
provider.name | string | "aws" |
ExternalDNS provider name; for the available providers and how to configure them see README. |
provider.webhook.args | list | [] |
Extra arguments to provide for the webhook container. |
provider.webhook.env | list | [] |
Environment variables for the webhook container. |
provider.webhook.extraVolumeMounts | list | [] |
Extra volume mounts for the webhook container. |
provider.webhook.image.pullPolicy | string | "IfNotPresent" |
Image pull policy for the webhook container. |
provider.webhook.image.repository | string | nil |
Image repository for the webhook container. |
provider.webhook.image.tag | string | nil |
Image tag for the webhook container. |
provider.webhook.livenessProbe | object | See values.yaml | Liveness probe configuration for the external-dns container. |
provider.webhook.readinessProbe | object | See values.yaml | Readiness probe configuration for the webhook container. |
provider.webhook.resources | object | {} |
Resources for the webhook container. |
provider.webhook.securityContext | object | See values.yaml | Pod security context for the webhook container. |
provider.webhook.service.port | int | 8080 |
Webhook exposed HTTP port for the service. |
provider.webhook.serviceMonitor | object | See values.yaml | Optional Service Monitor configuration for the webhook container. |
rbac.additionalPermissions | list | [] |
Additional rules to add to the ClusterRole . |
rbac.create | bool | true |
If true , create a ClusterRole & ClusterRoleBinding with access to the Kubernetes API. |
readinessProbe | object | See values.yaml | Readiness probe configuration for the external-dns container. |
registry | string | "txt" |
Specify the registry for storing ownership and labels. Valid values are txt , aws-sd , dynamodb & noop . |
resources | object | {} |
Resources for the external-dns container. |
revisionHistoryLimit | int | nil |
Specify the number of old ReplicaSets to retain to allow rollback of the `Deployment``. |
secretConfiguration.data | object | {} |
Secret data. |
secretConfiguration.enabled | bool | false |
If true , create a Secret to store sensitive provider configuration (DEPRECATED). |
secretConfiguration.mountPath | string | nil |
Mount path for the Secret , this can be templated. |
secretConfiguration.subPath | string | nil |
Sub-path for mounting the Secret , this can be templated. |
securityContext | object | See values.yaml | Security context for the external-dns container. |
service.annotations | object | {} |
Service annotations. |
service.ipFamilies | list | [] |
Service IP families. |
service.ipFamilyPolicy | string | nil |
Service IP family policy. |
service.port | int | 7979 |
Service HTTP port. |
serviceAccount.annotations | object | {} |
Annotations to add to the service account. |
serviceAccount.automountServiceAccountToken | string | nil |
Set this to false to opt out of API credential automounting for the ServiceAccount . |
serviceAccount.create | bool | true |
If true , create a new ServiceAccount . |
serviceAccount.labels | object | {} |
Labels to add to the service account. |
serviceAccount.name | string | nil |
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. |
serviceMonitor.additionalLabels | object | {} |
Additional labels for the ServiceMonitor . |
serviceMonitor.annotations | object | {} |
Annotations to add to the ServiceMonitor . |
serviceMonitor.bearerTokenFile | string | nil |
Provide a bearer token file for the ServiceMonitor . |
serviceMonitor.enabled | bool | false |
If true , create a ServiceMonitor resource to support the Prometheus Operator. |
serviceMonitor.interval | string | nil |
If set override the Prometheus default interval. |
serviceMonitor.metricRelabelings | list | [] |
Metric relabel configs to apply to samples before ingestion. |
serviceMonitor.namespace | string | nil |
If set create the ServiceMonitor in an alternate namespace. |
serviceMonitor.relabelings | list | [] |
Relabel configs to apply to samples before ingestion. |
serviceMonitor.scheme | string | nil |
If set overrides the Prometheus default scheme. |
serviceMonitor.scrapeTimeout | string | nil |
If set override the Prometheus default scrape timeout. |
serviceMonitor.targetLabels | list | [] |
Provide target labels for the ServiceMonitor . |
serviceMonitor.tlsConfig | object | {} |
Configure the ServiceMonitor TLS config. |
shareProcessNamespace | bool | false |
If true , the Pod will have process namespace sharing enabled. |
sources | list | ["service","ingress"] |
Kubernetes resources to monitor for DNS entries. |
terminationGracePeriodSeconds | int | nil |
Termination grace period for the Pod in seconds. |
tolerations | list | [] |
Node taints which will be tolerated for Pod scheduling. |
topologySpreadConstraints | list | [] |
Topology spread constraints for Pod scheduling. If an explicit label selector is not provided one will be created from the pod selector labels. |
triggerLoopOnEvent | bool | false |
If true , triggers run loop on create/update/delete events in addition of regular interval. |
txtOwnerId | string | nil |
Specify an identifier for this instance of ExternalDNS wWhen using a registry other than noop . |
txtPrefix | string | nil |
Specify a prefix for the domain names of TXT records created for the txt registry. Mutually exclusive with txtSuffix . |
txtSuffix | string | nil |
Specify a suffix for the domain names of TXT records created for the txt registry. Mutually exclusive with txtPrefix . |
Autogenerated from chart metadata using helm-docs.