This is a cache of https://docs.openshift.com/container-platform/4.12/networking/external_dns_operator/nw-creating-dns-records-on-gcp.html. It is a snapshot of the page at 2024-11-18T11:35:20.685+0000.
Creating <strong>dns</strong> records on a public managed zone for GCP - External <strong>dns</strong> Operator | Networking | OpenShift Container Platform 4.12
×

You can create dns records on Google Cloud Platform (GCP) by using the External dns Operator.

Using the External dns Operator on a cluster with GCP Workload Identity enabled is not supported. For more information about the GCP Workload Identity, see Using manual mode with GCP Workload Identity.

Creating dns records on a public managed zone for GCP

You can create dns records on a public managed zone for GCP by using the External dns Operator.

Prerequisites
  • You must have administrator privileges.

Procedure
  1. 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
  2. Export your Google credentials by running the following command:

    $ export GOOGLE_CREDENTIALS=decoded-gcloud.json
  3. 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
  4. Set your project by running the following command:

    $ gcloud config set project <project_id as per decoded-gcloud.json>
  5. Get a list of routes by running the following command:

    $ oc get routes --all-namespaces | grep console
    Example output
    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
  6. Get a list of managed zones by running the following command:

    $ gcloud dns managed-zones list | grep test.gcp.example.com
    Example output
    qe-cvs4g-private-zone test.gcp.example.com
  7. Create a YAML file, for example, external-dns-sample-gcp.yaml, that defines the Externaldns object:

    Example external-dns-sample-gcp.yaml file
    apiVersion: externaldns.olm.openshift.io/v1beta1
    kind: Externaldns
    metadata:
      name: sample-gcp (1)
    spec:
      domains:
        - filterType: Include (2)
          matchType: Exact (3)
          name: test.gcp.example.com (4)
      provider:
        type: GCP (5)
      source:
        openshiftRouteOptions: (6)
          routerName: default (7)
        type: OpenShiftRoute (8)
    1 Specifies the External dns name.
    2 By default, all hosted zones are selected as potential targets. You can include your hosted zone.
    3 The domain of the target must match the string defined by the name key.
    4 Specify the exact domain of the zone you want to update. The hostname of the routes must be subdomains of the specified domain.
    5 Defines the provider type.
    6 You can define options for the source of dns records.
    7 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.
    8 Defines the route resource as the source for GCP dns records.
  8. Check the dns records created for OpenShift Container Platform routes by running the following command:

    $ gcloud dns record-sets list --zone=qe-cvs4g-private-zone | grep console