$ oc get secret gcp-credentials -n kube-system --template='{{$v := index .data "service_account.json"}}{{$v}}' | base64 -d - > decoded-gcloud.json
To create dns records on Google Cloud, use the External dns Operator. The dns Operator manages external name resolution for your cluster services.
|
Using the External dns Operator on a cluster with Google Cloud Workload Identity enabled is not supported. For more information about the Google Cloud Workload Identity, see Google Cloud Workload Identity. |
To create dns records on Google Cloud, use the External dns Operator. The dns Operator manages external name resolution for your cluster services.
You must have administrator privileges.
Copy the gcp-credentials secret in the encoded-gcloud.json file by running the following command:
$ oc get secret gcp-credentials -n kube-system --template='{{$v := index .data "service_account.json"}}{{$v}}' | base64 -d - > decoded-gcloud.json
Export your Google credentials by running the following command:
$ export GOOGLE_CREDENTIALS=decoded-gcloud.json
Activate your account by using the following command:
$ gcloud auth activate-service-account <client_email as per decoded-gcloud.json> --key-file=decoded-gcloud.json
Set your project by running the following command:
$ gcloud config set project <project_id as per decoded-gcloud.json>
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.gcp.example.com console https reencrypt/Redirect None
openshift-console downloads downloads-openshift-console.apps.test.gcp.example.com downloads http edge/Redirect None
Get a list of managed zones, such as qe-cvs4g-private-zone test.gcp.example.com, by running the following command:
$ gcloud dns managed-zones list | grep test.gcp.example.com
Create a YAML file, for example, external-dns-sample-gcp.yaml, that defines the Externaldns object:
external-dns-sample-gcp.yaml fileapiVersion: externaldns.olm.openshift.io/v1beta1
kind: Externaldns
metadata:
name: sample-gcp
spec:
domains:
- filterType: Include
matchType: Exact
name: test.gcp.example.com
provider:
type: GCP
source:
openshiftRouteOptions:
routerName: default
type: OpenShiftRoute
# ...
where:
metadata.nameSpecifies the External dns name.
spec.domains.filterTypeBy default, all hosted zones are selected as potential targets. You can include your hosted zone.
spec.domains.matchTypeSpecifies the domain of the target that must match the string defined by the name key.
spec.domains.nameSpecifies the exact domain of the zone you want to update. The hostname of the routes must be subdomains of the specified domain.
spec.provider.typeSpecifies the provider type.
source.openshiftRouteOptionsSpecifies options for the source of dns records.
openshiftRouteOptions.routerNameIf 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 a CNAME record.
typeSpecifies the route resource as the source for Google Cloud dns records.
Check the dns records created for OKD routes by running the following command:
$ gcloud dns record-sets list --zone=qe-cvs4g-private-zone | grep console