Manage TLS Certificates using IONOS Cloud DNS Webhook for cert-manager

This tutorial will guide you through managing TLS certificates using the IONOS Cloud DNS Webhook for cert-manager. Following these steps, you can secure your Kubernetes cluster workloads with valid TLS certificates that are automatically renewed before they expire.

Target audience

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

What you will learn

You will learn how to automate the issuance and renewal of TLS certificates for your Kubernetes workloads using cert-manager and the IONOS Cloud DNS Webhook. This tutorial covers the complete setup process, including configuring DNS zones, secrets, and certificate resources for secure application deployment.

Before you begin

You must have the following:

  • An IONOS account.

  • A domain name registered and managed by IONOS Cloud DNS.

  • A Kubernetes cluster set up. If you have not yet set up a Kubernetes cluster, follow the instructions in Set Up a Kubernetes Cluster to create one.

  • A kubectl installed and configured to interact with your Kubernetes cluster. If you have not downloaded the kubeconfig file yet, follow the instructions in Download Kubeconfig File to download it.

  • A cert-manager installed in your Kubernetes cluster. If not, you can install it by following the instructions on the cert-manager Installation guide.

Procedure

1

Install cert-manager

Ensure that cert-manager is installed in your Kubernetes cluster. For more information about the instructions, refer to the cert-manager Installation guide.

Note: This tutorial uses cert-manager version v1.17.0; please always use the latest version of cert-manager.

Execute the following command, if it is not already installed:

2

Create a secret for the IONOS Cloud API Token

Create a Kubernetes secret to store your IONOS Cloud API token. Run the following command to create the secret:

Note: Replace IONOS Cloud Token with your actual IONOS Cloud token. For more information on managing authentication tokens, see Manage Authentication Tokens. Ensure that the token is refreshed so that certificates can be renewed automatically.

3

Create a DNS Zone in IONOS Cloud DNS

If you have not yet created a primary zone in IONOS Cloud DNS, you need to create one. For more information, see Create a Primary Zone.

4

Add the Helm repository

 1. Add the Helm repository for the IONOS Cloud Cert Manager webhook:

 2. Next, update the Helm repositories using the following command:

5

Install the IONOS Cloud Cert Manager webhook

To use the IONOS Cloud Cert Manager webhook, you need to install it in your Kubernetes cluster using Helm. Run the following command to install the webhook:

Note: As a standard practice, cert-manager is deployed within the cert-manager namespace. This chart operates under the assumption of this default namespace and leverages this setting to assign the necessary privileges to the cert-manager service account, thereby enabling the creation of resources classified as "ionos-cloud." If you are deploying the cert-manager chart in a different namespace, use the certManager.namespace chart value to specify the namespace where cert-manager is deployed. For example, use --set certManager.namespace=custom_namespace.

For more information, refer to the IONOS Cloud DNS Webhook for cert-manager documentation.

6

Create a ClusterIssuer resource

Create a ClusterIssuer resource in your Kubernetes cluster to configure the IONOS Cloud Cert Manager webhook. Save the following YAML content to a file named clusterissuer.yaml:

Note: Replace [email protected] with your actual email address.

7

Apply the ClusterIssuer resource

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

8

Create a Certificate resource

Create a Certificate resource to request a TLS certificate for your domain. Save the following YAML content to a file named certificate.yaml:

Note: Replace yourdomain.com with your actual domain name.

9

Apply the Certificate resource

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

Note: The certificate resource will create a certificate request and order a certificate from the ACME server. The webhook will create a DNS record of TXT type in the IONOS Cloud primary zone. Depending on the issuer, approval of the certificate request might take several minutes.

10

Create an Ingress resource

Create an Ingress resource to expose your application using the TLS certificate. Save the following YAML content to a file named ingress.yaml:

Note: Replace yourdomain.com with your actual domain name.

11

Apply the Ingress resource

Apply the Ingress resource to your Kubernetes cluster using the following command:

12

Verify the Certificate

Verify if the certificate has been issued and stored in the specified secret. Run the following command to check the status of the certificate:

Final result

You should see the certificate details and the status indicating that the certificate has been successfully issued. The output should look similar to the following:

Conclusion

You have successfully set up and managed TLS certificates using the IONOS Cloud cert-manager widget and IONOS Cloud DNS service. This ensures that your web server is secure and your data is protected. For more information, refer to the cert-manager official documentation and the IONOS Cloud DNS documentation.

Last updated

Was this helpful?