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-appshould be reconciled. - Only Hosted Zone
Z262CGXUQ3M97will 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.4See 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.0and push it. - This will push a new git tag and trigger a new tarball to be pushed to the
default-catalogand 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.