3 min • read

ExternalDNS with Ambassador Edge Stack

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

Before you begin, review ExternalDNS repo's deployment instructions to get information about supported DNS providers and steps to setup ExternalDNS for your provider. Each DNS provider has its own required steps, as well as annotations, arguments, and permissions needed for the following configuration.

Installation

Configuration for a ServiceAccount, ClusterRole, and ClusterRoleBinding is necessary for the ExternalDNS deployment to support compatibility with Ambassador Edge Stack and allow ExternalDNS to get hostnames from Ambassador Edge Stack's Hosts.

The following configuration is an example configuring Ambassador Edge Stack - ExternalDNS integration with AWS Route53 as the DNS provider. Refer to the ExternalDNS documentation 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 Ambassador Edge Stack Host configurations.
  3. Apply the above config with the following command to deploy ExternalDNS to your cluster and configure support for Ambassador Edge Stack:

Usage

After you've applied 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 Ambassador Edge Stack's LoadBalancer and register it with your DNS provider: