Creating DNS Names Automatically

How to install and use the ExternalDNS service to automatically create DNS names corresponding to your OpenSquiggly instance(s).

Introduction

If you followed the steps to install the NGINX ingress controller (see here), you know that the ingress controller has an associated Load Balancer service, which in turn is assigned a fixed IP address.

This is not very convenient for OpenSquiggly users, as they would need to know the IP address in order to access the system. We need to create a custom DNS name that users can use instead of a fixed IP address.

While you can always manually create DNS names in your DNS server, its much more convenient to automate the creation of these DNS names. That way, any time you install an OpenSquiggly instance in your Kubernetes cluster, you can simply specify the DNS host name you’d like to use, and the system will create an associated DNS record on your behalf.

To do this on Kubernetes, we need to install ExternalDNS on your cluster.

Overview Videos

The missing piece - Kubernetes ExternalDNS by Lachlan Evenson

External DNS for Kubernetes by Houssem Dellai

Installing ExternalDNS

To install ExternalDNS on your cluster, you’ll need to follow the specific steps for your DNS name server provider. Each provider is a little different. In each case, you need to retrieve some kind of connection credential that will allow the ExternalDNS service running on your Kubernetes cluster to create DNS records on the DNS name server.

A full list of tutorials can be found here.

Here is a partial list of some of the more commonly used DNS name server providers. Note that the cloud provider that provides your DNS name server doesn’t necessarily need to be the same cloud provider as that provides your Kubernetes cluster. For example, you can create a Kubernetes cluster on Linode and let the DNS names be managed by Azure. Be sure to read the instructions corresponding to the cloud service that provides your DNS server, not your Kubernetes cluster.

Name Tutorial Link
AWS https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/aws.md
Azure https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/azure.md
Civo https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/civo.md
CloudFlare https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/cloudflare.md
DigitalOcean https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/digitalocean.md
GoDaddy https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/godaddy.md
Google https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/gke.md
Linode https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/linode.md