17.6. GCP での DNS レコードの作成
External DNS Operator を使用して、Google Cloud Platform (GCP) 上に DNS レコードを作成できます。
GCP Workload Identity が有効になっているクラスターで外部 DNS Operator を使用することはサポートされていません。GCP Workload Identity の詳細は、GCP Workload Identity での手動モードの使用 を参照してください。
17.6.1. GCP のパブリックマネージドゾーン上で DNS レコードを作成する
External DNS Operator を使用して、GCP のパブリックマネージドゾーンに DNS レコードを作成できます。
前提条件
- 管理者権限を持っている。
手順
次のコマンドを実行して、
encoded-gcloud.json
ファイル内のgcp-credentials
シークレットをコピーします。$ oc get secret gcp-credentials -n kube-system --template='{{$v := index .data "service_account.json"}}{{$v}}' | base64 -d - > decoded-gcloud.json
次のコマンドを実行して、Google の認証情報をエクスポートします。
$ export GOOGLE_CREDENTIALS=decoded-gcloud.json
次のコマンドを使用して、アカウントをアクティブ化します。
$ gcloud auth activate-service-account <client_email as per decoded-gcloud.json> --key-file=decoded-gcloud.json
次のコマンドを実行して、プロジェクトを設定します。
$ gcloud config set project <project_id as per decoded-gcloud.json>
次のコマンドを実行して、ルートのリストを取得します。
$ 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
次のコマンドを実行して、マネージドゾーンのリストを取得します。
$ gcloud dns managed-zones list | grep test.gcp.example.com
出力例
qe-cvs4g-private-zone test.gcp.example.com
ExternalDNS
オブジェクトを定義する YAML ファイル (例:external-dns-sample-gcp.yaml
) を作成します。external-dns-sample-gcp.yaml
ファイルの例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
- 外部 DNS 名を指定します。
- 2
- デフォルトでは、すべてのホストされたゾーンがターゲット候補として選択されます。ホストされたゾーンを含めることができます。
- 3
- ターゲットのドメインは、
name
キーで定義された文字列と一致する必要があります。 - 4
- 更新するゾーンのドメインを正確に指定します。ルートのホスト名は、指定されたドメインのサブドメインである必要があります。
- 5
- プロバイダータイプを定義します。
- 6
- DNS レコードのソースのオプションを定義できます。
- 7
- ソースタイプが
OpenShiftRoute
の場合、OpenShift Ingress Controller 名を渡すことができます。外部 DNS は、CNAME レコードの作成時に、そのルーターの正規のホスト名をターゲットとして選択します。 - 8
route
リソースを GCP DNS レコードのソースとして定義します。
次のコマンドを実行して、OpenShift Container Platform ルートに対して作成された DNS レコードを確認します。
$ gcloud dns record-sets list --zone=qe-cvs4g-private-zone | grep console