# ExternalDNS

[ExternalDNS](https://github.com/kubernetes-sigs/external-dns/) synchronizes exposed Kubernetes Services and Ingresses with DNS providers.

## Installing the Chart

Before you can install the chart you will need to add the `external-dns` repo to [Helm](https://helm.sh/).

```shell
helm repo add external-dns https://kubernetes-sigs.github.io/external-dns/
```

After you've installed the repo you can install the chart.

```shell
helm upgrade --install external-dns external-dns/external-dns
```

## Configuration

The following table lists the configurable parameters of the _ExternalDNS_ chart and their default values.

| Parameter                         | Description                                                                                                                                                                                                                                                                                                           | Default                                |
|-----------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------|
| `image.repository`                | Image repository.                                                                                                                                                                                                                                                                                                     | `k8s.gcr.io/external-dns/external-dns` |
| `image.tag`                       | Image tag, will override the default tag derived from the chart app version.                                                                                                                                                                                                                                          | `""`                                   |
| `image.pullPolicy`                | Image pull policy.                                                                                                                                                                                                                                                                                                    | `IfNotPresent`                         |
| `imagePullSecrets`                | Image pull secrets.                                                                                                                                                                                                                                                                                                   | `[]`                                   |
| `nameOverride`                    | Override the `name` of the chart.                                                                                                                                                                                                                                                                                     | `""`                                   |
| `fullnameOverride`                | Override the `fullname` of the chart.                                                                                                                                                                                                                                                                                 | `""`                                   |
| `serviceAccount.create`           | If `true`, create a new `serviceaccount`.                                                                                                                                                                                                                                                                             | `true`                                 |
| `serviceAccount.annotations`      | Annotations to add to the service account.                                                                                                                                                                                                                                                                            | `{}`                                   |
| `serviceAccount.name`             | Service account to be used. If not set and `serviceAccount.create` is `true`, a name is generated using the full name template.                                                                                                                                                                                       | `""`                                   |
| `rbac.create`                     | If `true`, create the RBAC resources.                                                                                                                                                                                                                                                                                 | `true`                                 |
| `rbac.additionalPermissions`      | Additional permissions to be added to the cluster role.                                                                                                                                                                                                                                                               | `{}`                                   |
| `deploymentAnnotations`           | Annotations to add to the Deployment.                                                                                                                                                                                                                                                                                 | `{}`                                   |
| `podLabels`                       | Labels to add to the pod.                                                                                                                                                                                                                                                                                             | `{}`                                   |
| `podAnnotations`                  | Annotations to add to the pod.                                                                                                                                                                                                                                                                                        | `{}`                                   |
| `podSecurityContext`              | Security context for the pod, this supports the full [PodSecurityContext](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.22/#podsecuritycontext-v1-core) API.                                                                                                                                       | _see values.yaml_                      |
| `securityContext`                 | Security context for the _external-dns_ container, this supports the full [SecurityContext](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.22/#securitycontext-v1-core) API.                                                                                                                        | _see values.yaml_                      |
| `priorityClassName`               | Priority class name to use for the pod.                                                                                                                                                                                                                                                                               | `""`                                   |
| `terminationGracePeriodSeconds`   | Termination grace period for the pod.                                                                                                                                                                                                                                                                                 | `null`                                 |
| `serviceMonitor.enabled`          | If `true`, create a _Prometheus_ service monitor.                                                                                                                                                                                                                                                                     | `false`                                |
| `serviceMonitor.additionalLabels` | Additional labels to be set on the ServiceMonitor.                                                                                                                                                                                                                                                                    | `{}`                                   |
| `serviceMonitor.interval`         | _Prometheus_ scrape frequency.                                                                                                                                                                                                                                                                                        | `1m`                                   |
| `serviceMonitor.scrapeTimeout`    | _Prometheus_ scrape timeout.                                                                                                                                                                                                                                                                                          | `10s`                                  |
| `env`                             | [Environment variables](https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/) for the _external-dns_ container, this supports the full [EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.22/#envvar-v1-core) API including secrets and configmaps. | `[]`                                   |
| `livenessProbe`                   | [Liveness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) for the _external-dns_ container, this supports the full [Probe](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.22/#probe-v1-core) API.                                     | See _values.yaml_                      |
| `readinessProbe`                  | [Readiness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) for the _external-dns_ container, this supports the full [Probe](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.22/#probe-v1-core) API.                                    | See _values.yaml_                      |
| `service.annotations`             | Annotations to add to the service.                                                                                                                                                                                                                                                                                    | `{}`                                   |
| `service.port`                    | Port to expose via the service.                                                                                                                                                                                                                                                                                       | `7979`                                 |
| `extraVolumes`                    | Additional volumes for the pod, this supports the full [VolumeDevice](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.22/#volumedevice-v1-core) API.                                                                                                                                                 | `[]`                                   |
| `extraVolumeMounts`               | Additional volume mounts for the _external-dns_ container, this supports the full [VolumeMount](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.22/#volumemount-v1-core) API.                                                                                                                        | `[]`                                   |
| `resources`                       | Resource requests and limits for the _external-dns_ container, this supports the full [ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.22/#resourcerequirements-v1-core) API.                                                                                                  | `{}`                                   |
| `nodeSelector`                    | Node labels for pod assignment.                                                                                                                                                                                                                                                                                       | `{}`                                   |
| `tolerations`                     | Tolerations for pod assignment, this supports the full [Toleration](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.22/#toleration-v1-core) API.                                                                                                                                                     | `[]`                                   |
| `affinity`                        | Affinity settings for pod assignment, this supports the full [Affinity](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.22/#affinity-v1-core) API.                                                                                                                                                   | `{}`                                   |
| `topologySpreadConstraints`       | TopologySpreadConstraint settings for pod assignment, this supports the full [TopologySpreadConstraints](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.22/#topologyspreadconstraint-v1-core) API.                                                                                                  | `[]`                                   |
| `logLevel`                        | Verbosity of the logs, available values are: `panic`, `debug`, `info`, `warning`, `error`, `fatal`.                                                                                                                                                                                                                   | `info`                                 |
| `logFormat`                       | Formats of the logs, available values are: `text`, `json`.                                                                                                                                                                                                                                                            | `text`                                 |
| `interval`                        | The interval for DNS updates.                                                                                                                                                                                                                                                                                         | `1m`                                   |
| `triggerLoopOnEvent`              | When enabled, triggers run loop on create/update/delete events in addition of regular interval.                                                                                                                                                                                                                       | `false`                                |
| `sources`                         | K8s resources type to be observed for new DNS entries.                                                                                                                                                                                                                                                                | See _values.yaml_                      |
| `policy`                          | How DNS records are synchronized between sources and providers, available values are: `sync`, `upsert-only`.                                                                                                                                                                                                          | `upsert-only`                          |
| `registry`                        | Registry Type, available types are: `txt`, `noop`.                                                                                                                                                                                                                                                                    | `txt`                                  |
| `txtOwnerId`                      | TXT registry identifier.                                                                                                                                                                                                                                                                                              | `""`                                   |
| `txtPrefix`                       | Prefix to create a TXT record with a name following the pattern `prefix.<CNAME record>`.                                                                                                                                                                                                                              | `""`                                   |
| `domainFilters`                   | Limit possible target zones by domain suffixes.                                                                                                                                                                                                                                                                       | `[]`                                   |
| `provider`                        | DNS provider where the DNS records will be created, for the available providers and how to configure them see the [README](https://github.com/kubernetes-sigs/external-dns#deploying-to-a-cluster).                                                                                                                   | `aws`                                  |
| `extraArgs`                       | Extra arguments to pass to the _external-dns_ container, these are needed for provider specific arguments.                                                                                                                                                                                                            | `[]`                                   |
