$ CLIENT_ID=$(oc get secrets azure-credentials -n kube-system --template={{.data.azure_client_id}} | base64 -d)
You can create DNS records on Azure by using the External DNS Operator.
|
Using the External DNS Operator on a Microsoft Entra Workload ID-enabled cluster or a cluster that runs in Microsoft Azure Government (MAG) regions is not supported. |
You can create DNS records on a public DNS zone for Azure by using the External DNS Operator.
You must have administrator privileges.
The admin user must have access to the kube-system namespace.
Fetch the credentials from the kube-system namespace to use the cloud provider client by running the following command:
$ CLIENT_ID=$(oc get secrets azure-credentials -n kube-system --template={{.data.azure_client_id}} | base64 -d)
$ CLIENT_SECRET=$(oc get secrets azure-credentials -n kube-system --template={{.data.azure_client_secret}} | base64 -d)
$ RESOURCE_GROUP=$(oc get secrets azure-credentials -n kube-system --template={{.data.azure_resourcegroup}} | base64 -d)
$ SUBSCRIPTION_ID=$(oc get secrets azure-credentials -n kube-system --template={{.data.azure_subscription_id}} | base64 -d)
$ TENANT_ID=$(oc get secrets azure-credentials -n kube-system --template={{.data.azure_tenant_id}} | base64 -d)
Log in to Azure by running the following command:
$ az login --service-principal -u "${CLIENT_ID}" -p "${CLIENT_SECRET}" --tenant "${TENANT_ID}"
Get a list of routes by running the following command:
$ oc get routes --all-namespaces | grep console
openshift-console console console-openshift-console.apps.test.azure.example.com console https reencrypt/Redirect None
openshift-console downloads downloads-openshift-console.apps.test.azure.example.com downloads http edge/Redirect None
Get a list of DNS zones by running the following command:
$ az network dns zone list --resource-group "${RESOURCE_GROUP}"
Create a YAML file, for example, external-dns-sample-azure.yaml, that defines the ExternalDNS object:
external-dns-sample-azure.yaml fileapiVersion: externaldns.olm.openshift.io/v1beta1
kind: ExternalDNS
metadata:
name: sample-azure (1)
spec:
zones:
- "/subscriptions/1234567890/resourceGroups/test-azure-xxxxx-rg/providers/Microsoft.Network/dnszones/test.azure.example.com" (2)
provider:
type: Azure (3)
source:
openshiftRouteOptions: (4)
routerName: default (5)
type: OpenShiftRoute (6)
| 1 | Specifies the External DNS name. |
| 2 | Defines the zone ID. |
| 3 | Defines the provider type. |
| 4 | You can define options for the source of DNS records. |
| 5 | If the source type is OpenShiftRoute, you can pass the OpenShift Ingress Controller name. External DNS selects the canonical hostname of that router as the target while creating CNAME record. |
| 6 | Defines the route resource as the source for the Azure DNS records. |
Check the DNS records created for OKD routes by running the following command:
$ az network dns record-set list -g "${RESOURCE_GROUP}" -z test.azure.example.com | grep console
|
To create records on private hosted zones on private Azure DNS, you need to specify the private zone under the |