ExternalDNS for Managed Kubernetes

Overview

ExternalDNS is a Kubernetes add-on that automates the management of public DNS records for Kubernetes resources, such as services and ingresses exposed outside the cluster. Unlike Kubernetes' internal DNS management, which is limited to internal cluster communication, ExternalDNS extends this functionality by delegating DNS record management to external DNS providers, such as IONOS Cloud DNS.

The ExternalDNS solution offers the following capabilities:

  • Empowers developers to manage DNS resources traditionally handled manually by infrastructure teams.

  • Ensures that DNS records are synchronized with the current state of the Kubernetes cluster.

  • Automates the management of many DNS records, reducing manual effort.

  • Simplifies DNS management while improving security.

By integrating ExternalDNS with the IONOS webhook, you can manage your IONOS domains directly within your Kubernetes cluster. This integration requires an IONOS API key or token from the account managing your domains. The following tutorial provides detailed technical instructions for deploying ExternalDNS with the IONOS webhook using the Helm chart.

Target audience

This tutorial is intended to help both developers and technical decision-makers.

What you will learn

The following tutorial provides detailed technical instructions for deploying ExternalDNS with the IONOS webhook using the Helm chart.

Before you begin

Ensure that you have the following before you begin:

  • A domain name registered with your domain provider, domain registrar, or a subdomain under your control.

  • A token from a user with privileges to manage zones and records with Cloud DNS.

  • An IONOS Managed Kubernetes cluster.

  • The kubectl installed on your local machine.

  • The Helm tool for installing a Helm chart.

Procedure

Follow these steps to set up ExternalDNS for your Managed Kubernetes with IONOS DNS Provider Cloud DNS:

1

Create a domain name

You must first Create a Primary Zone for your domain name with Cloud DNS and then Connect Domain Name to Cloud DNS.

2

Add Helm chart

Add the external-dns Helm repository, which contains the official external-dns Helm chart.

3

Create a Kubernetes secret

Create a Kubernetes secret to store your IONOS Cloud API token using the following command:

Note: Replace the IONOS Cloud Token with your actual IONOS Cloud token. For more information on managing authentication tokens, see Token Manager. Remember to refresh the token for automatic certificate renewal.

4

Create configuration

Create a Helm values file for the ExternalDNS Helm chart that includes the webhook configuration. In this example, the values file is called external-dns-ionos-values.yaml.

5

Install ExternalDNS

To install ExternalDNS with the helm chart, use the following command:

6

Create application manifest

Execute the following command to create an echo server application manifest in the echoserver_app.yaml file.

7

Create echoserver namespace

Issue the following command to create a echoserver namespace:

8

Apply echo server application manifest

Execute the following command to apply the Deployment resource to your Kubernetes cluster:

You can check the pods of echoserver deployment by running the following command:

9

Create service for echo server application

Use the following content to create a Service manifest in the echoserver-svc.yaml file:

10

Apply service resource

Apply the Service resource to your Kubernetes cluster by running the following command:

11

Install NGINX Ingress Controller

Execute the following commands to install the NGINX ingress controller in your cluster:

12

Create Ingress resource

Using the following content, create a Ingress manifest in the echoserver-ingress.yaml file:

Note: The host field in the ingress resource must be defined according to the primary zone you have configured in IONOS Cloud DNS. For example, if your primary zone is example1.com, you can use a subdomain like app.example1.com.

13

Apply Ingress resource

Apply the Ingress resource to your Kubernetes cluster by running the following command:

Final result

The deployment of ExternalDNS on Managed Kubernetes is complete. You can verify that the application deployed is functioning as expected using one of the following options:

Check that the echo server app runs on the subdomain you have specified by using the following command:

Conclusion

By following this tutorial, you have successfully deployed ExternalDNS with the IONOS webhook on a Managed Kubernetes cluster, enabling automated DNS record management for your applications. This integration streamlines DNS operations, reduces manual intervention, and ensures your DNS records stay synchronized with your cluster resources. You can now confidently manage DNS for your Kubernetes workloads using IONOS Cloud DNS.

Last updated

Was this helpful?