3 min • read

ExternalDNS with Emissary-ingress

ExternalDNS configures your existing DNS provider to make Kubernetes resources discoverable via public DNS servers by getting resources from the Kubernetes API to create a list of DNS records.

Getting started

Prerequisites

Start by checking the ExternalDNS repo's deployment instructions to get information about the supported DNS providers and steps to setup ExternalDNS for your provider. Each DNS provider will have its own required steps as well as annotations, arguments, and permissions needed for the following configuration.

Installation

Configuration for a ServiceAccount, ClusterRole, and ClusterRoleBinding are necessary for the ExternalDNS deployment to support compatability with Emissary-ingress and allow ExternalDNS to get hostnames from Emissary-ingress's Hosts.

The following configuration is an example configuring Emissary-ingress - ExternalDNS integration with AWS Route53 as the DNS provider. Refer to the ExternalDNS documentation above for annotations and arguments for your DNS Provider.

  1. Create a YAML file named externaldns-config.yaml, and copy the following configuration into it.

  2. Review the arguments section from the ExternalDNS deployment

    Configure or remove arguments to fit your needs. Additional arguments required for your DNS provider can be found by checking the ExternalDNS repo's deployment instructions.

    • --source=ambassador-host - required across all DNS providers to tell ExternalDNS to look for hostnames in the Emissary-ingress Host configurations.
  3. Apply the above config with the following command to deploy ExternalDNS to your cluster and configure support for Emissary-ingress

Usage

After applying the above configuration, ExternalDNS is ready to use. Configure a Host with the following annotation to allow ExternalDNS to get the IP address of your Emissary-ingress's LoadBalancer and register it with your DNS provider.