---
title: Understanding the External DNS Operator
---

# Understanding the External DNS Operator {#external-dns-operator}

The External DNS Operator deploys and manages `ExternalDNS` to provide the name resolution for services and routes from the external DNS provider to OpenShift Container Platform.

## External DNS Operator domain name limitations {#nw-external-dns-operator-domain-limitations_external-dns-operator}

To prevent configuration errors when deploying the `ExternalDNS` resource, review the domain name limitations enforced by the External DNS Operator. Understanding these constraints ensures that your requested hostnames and domains are compatible with your underlying DNS provider.

The External DNS Operator uses the TXT registry that adds the prefix for TXT records. This reduces the maximum length of the domain name for TXT records. A DNS record cannot be present without a corresponding TXT record, so the domain name of the DNS record must follow the same limit as the TXT records. For example, a DNS record of `<domain_name_from_source>` results in a TXT record of `external-dns-<record_type>-<domain_name_from_source>`.

The domain name of the DNS records generated by the External DNS Operator has the following limitations:

| Record type | Number of characters |
| --- | --- |
| CNAME | 44 |
| Wildcard CNAME records on AzureDNS | 42 |
| A | 48 |
| Wildcard A records on AzureDNS | 46 |

The following error shows in the External DNS Operator logs if the generated domain name exceeds any of the domain name limitations:

```terminal
time="2022-09-02T08:53:57Z" level=error msg="Failure in zone test.example.io. [Id: /hostedzone/Z06988883Q0H0RL6UMXXX]"
time="2022-09-02T08:53:57Z" level=error msg="InvalidChangeBatch: [FATAL problem: DomainLabelTooLong (Domain label is too long) encountered with 'external-dns-a-hello-openshift-aaaaaaaaaa-bbbbbbbbbb-ccccccc']\n\tstatus code: 400, request id: e54dfd5a-06c6-47b0-bcb9-a4f7c3a4e0c6"
```

## Deploying the External DNS Operator {#nw-external-dns-operator_external-dns-operator}

The External DNS Operator implements the External DNS API from the `olm.openshift.io` API group. The External DNS Operator updates services, routes, and external DNS providers.

**Prerequisites**

- You have installed the `yq` CLI tool.

**Procedure**

1. Check the name of an install plan, such as `install-zcvlr`, by running the following command:

   ```terminal
   $ oc -n external-dns-operator get sub external-dns-operator -o yaml | yq '.status.installplan.name'
   ```
2. Check if the status of an install plan is `Complete` by running the following command:

   ```terminal
   $ oc -n external-dns-operator get ip <install_plan_name> -o yaml | yq '.status.phase'
   ```
3. View the status of the `external-dns-operator` deployment by running the following command:

   ```terminal
   $ oc get -n external-dns-operator deployment/external-dns-operator
   ```

   ```terminal {title="Example output"}
   NAME                    READY     UP-TO-DATE   AVAILABLE   AGE
   external-dns-operator   1/1       1            1           23h
   ```

## Viewing External DNS Operator logs {#nw-external-dns-operator-logs_external-dns-operator}

To troubleshoot DNS configuration issues, view the External DNS Operator logs. Use the `oc logs` command to retrieve diagnostic information directly from the Operator pod.

**Procedure**

- View the logs of the External DNS Operator by running the following command:

  ```terminal
  $ oc logs -n external-dns-operator deployment/external-dns-operator -c external-dns-operator
  ```
