1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-05 12:46:18 +01:00
Files
openshift-docs/modules/nw-control-dns-records-public-managed-zone-gcp.adoc

115 lines
3.6 KiB
Plaintext

// Module included in the following assemblies:
//
// * networking/external_dns_operator/nw-creating-dns-records-on-gcp.adoc
:_mod-docs-content-type: PROCEDURE
[id="nw-control-dns-records-public-managed-zone-gcp_{context}"]
= Creating DNS records on a public managed zone for {gcp-short}
[role="_abstract"]
To create DNS records on {gcp-first}, use the External DNS Operator. The DNS Operator manages external name resolution for your cluster services.
.Prerequisites
* You must have administrator privileges.
.Procedure
. Copy the `gcp-credentials` secret in the `encoded-gcloud.json` file by running the following command:
+
[source,terminal]
----
$ 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:
+
[source,terminal]
----
$ export GOOGLE_CREDENTIALS=decoded-gcloud.json
----
. Activate your account by using the following command:
+
[source,terminal]
----
$ 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:
+
[source,terminal]
----
$ gcloud config set project <project_id as per decoded-gcloud.json>
----
. Get a list of routes by running the following command:
+
[source,terminal]
----
$ oc get routes --all-namespaces | grep console
----
+
.Example output
[source,terminal]
----
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:
+
[source,terminal]
----
$ 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:
+
.Example `external-dns-sample-gcp.yaml` file
[source,yaml]
----
apiVersion: 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.name`:: Specifies the External DNS name.
`spec.domains.filterType`:: By default, all hosted zones are selected as potential targets. You can include your hosted zone.
`spec.domains.matchType`:: Specifies the domain of the target that must match the string defined by the `name` key.
`spec.domains.name`:: Specifies the exact domain of the zone you want to update. The hostname of the routes must be subdomains of the specified domain.
`spec.provider.type`:: Specifies the provider type.
`source.openshiftRouteOptions`:: Specifies options for the source of DNS records.
`openshiftRouteOptions.routerName`:: 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 a CNAME record.
`type`:: Specifies the `route` resource as the source for {gcp-short} DNS records.
. Check the DNS records created for {product-title} routes by running the following command:
+
[source,terminal]
----
$ gcloud dns record-sets list --zone=qe-cvs4g-private-zone | grep console
----