Helm chart for the external-dns service running in Workload Clusters. This chart is used to deploy both as a default app and as a Managed App. It can be installed multiple times in the same Workload Cluster.
What is this App?
external-dns
makes Kubernetes resources discoverable via external DNS servers. It dynamically configures external DNS providers (AWS Route 53, Azure DNS) for Kubernetes Ingresses, Services etc.
Why did we add it?
The App is already used as a default App in most clusters (except on-prem) to provide DNS records for Ingress NGINX Controller.
Who can use it?
Customers using Giant Swarm clusters on AWS or Azure.
There are 3 ways to install this app onto a workload cluster:
- Using our web interface
- Using our API
- Directly creating the App custom resource on the Management Cluster
Configuration options are documented in the README
document. See also the default values.yaml
This is an example of a values file you could upload using our web interface. It assumes:
- The cloud provider is AWS.
- API access is internal and therefore authentication is provided by IRSA.
- Only Ingress resources in the namespace
web-app
should be reconciled. - Only Hosted Zone
Z262CGXUQ3M97
will be modified.
# values.yaml
serviceAccount:
annotations:
eks.amazonaws.com/role-arn: <CLUSTER_ID>-Route53Manager-Role
domainFilters:
- web-app.mydomain.com
namespaced: 'web-app'
annotationFilter: "mydomain.com/external-dns=owned"
txtOwnerId: 'webapp'
sources:
- ingress
provider: aws
extraArgs:
- "--zone-id-filter=Z262CGXUQ3M97"
Additionally to the above example, external-dns
can also be configured to synchronize DNSEndpoint
custom resources:
# values.yaml
...
sources:
- crd
...
Here is an example DNSEndpoint
resource:
apiVersion: externaldns.k8s.io/v1alpha1
kind: DNSEndpoint
metadata:
name: my-record
namespace: web-app
annotations:
mydomain.com/external-dns: owned
spec:
endpoints:
- dnsName: www.mydomain.com
recordTTL: 60
recordType: A
targets:
- 1.2.3.4
See our full reference page on how to configure applications for more details.
Starting from this version, external-dns-app
includes significant changes that may affect its functionality if not configured properly. For the full list of modifications, we strongly recommend referring to the Upgrade guide.
- Ensure CHANGELOG.md is up to date.
- Create a new branch to trigger the release workflow e.g. to release
v0.1.0
, create a branch from main calledmain#release#v0.1.0
and push it. - This will push a new git tag and trigger a new tarball to be pushed to the
default-catalog
and thegiantswarm-catalog
If you have suggestions for how external-dns
could be improved, or want to report a bug, open an issue! We'd love all and any contributions.
Check out the Contributing Guide for details on the contribution workflow, submitting patches, and reporting bugs.