19.6. GCP에서 DNS 레코드 생성
외부 DNS Operator를 사용하여 GCP에서 DNS 레코드를 생성할 수 있습니다.
19.6.1. Red Hat External DNS Operator를 사용하여 GCP의 퍼블릭 관리 영역에서 DNS 레코드 생성
Red Hat External DNS Operator를 사용하여 GCP의 퍼블릭 관리 영역에 DNS 레코드를 생성할 수 있습니다.
절차
사용자를 확인합니다. 사용자는
kube-system
네임스페이스에 액세스할 수 있어야 합니다. 인증 정보가 없는 경우kube-system
네임스페이스에서 인증 정보를 가져와 클라우드 공급자 클라이언트를 사용할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc whoami
$ oc whoami
출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow system:admin
system:admin
다음 명령을 실행하여 encoded-gcloud.json 파일의 gcp-credentials 시크릿에 service_account.json 값을 복사합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get secret gcp-credentials -n kube-system --template='{{$v := index .data "service_account.json"}}{{$v}}' | base64 -d - > decoded-gcloud.json
$ oc get secret gcp-credentials -n kube-system --template='{{$v := index .data "service_account.json"}}{{$v}}' | base64 -d - > decoded-gcloud.json
Google 인증 정보를 내보냅니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export GOOGLE_CREDENTIALS=decoded-gcloud.json
$ export GOOGLE_CREDENTIALS=decoded-gcloud.json
다음 명령을 사용하여 계정을 활성화합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow gcloud auth activate-service-account <client_email as per decoded-gcloud.json> --key-file=decoded-gcloud.json
$ gcloud auth activate-service-account <client_email as per decoded-gcloud.json> --key-file=decoded-gcloud.json
프로젝트를 설정합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow gcloud config set project <project_id as per decoded-gcloud.json>
$ gcloud config set project <project_id as per decoded-gcloud.json>
도메인을 확인할 경로를 가져옵니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get routes --all-namespaces | grep console
$ oc get routes --all-namespaces | grep console
출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
관리형 영역 목록을 가져와 이전에 찾은 경로의 도메인에 해당하는 영역을 찾습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow gcloud dns managed-zones list | grep test.gcp.example.com
$ gcloud dns managed-zones list | grep test.gcp.example.com qe-cvs4g-private-zone test.gcp.example.com
경로
소스를 위한ExternalDNS
리소스를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 EOF
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 EOF
- 1
- 외부 DNS CR의 이름을 지정합니다.
- 2
- 기본적으로 모든 호스팅 영역은 잠재적인 대상으로 선택됩니다. 필요한 호스팅 영역을 포함할 수 있습니다.
- 3
- 대상 영역 도메인의 일치는 정확해야 합니다( regular expression match).
- 4
- 업데이트할 영역의 정확한 도메인을 지정합니다. 경로의 호스트 이름은 지정된 도메인의 하위 도메인이어야 합니다.
- 5
- Google Cloud DNS 공급자를 정의합니다.
- 6
- DNS 레코드의 소스에 대한 옵션을 정의할 수 있습니다.
- 7
- 소스가
OpenShiftRoute
인 경우 OpenShift Ingress 컨트롤러 이름을 전달할 수 있습니다. 외부 DNS는 CNAME 레코드를 생성하는 동안 해당 라우터의 정식 호스트 이름을 대상으로 선택합니다. - 8
- OpenShift
경로
리소스를 이전에 지정된 DNS 공급자에서 생성되는 DNS 레코드의 소스로 정의합니다.
다음 명령을 사용하여 OCP 경로에 대해 생성된 레코드를 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow gcloud dns record-sets list --zone=qe-cvs4g-private-zone | grep console
$ gcloud dns record-sets list --zone=qe-cvs4g-private-zone | grep console