16장. 외부 DNS Operator
16.1. OpenShift Container Platform의 외부 DNS Operator
외부 DNS Operator는 ExternalDNS
를 배포 및 관리하여 외부 DNS 공급자에서 OpenShift Container Platform으로의 서비스 및 경로에 대한 이름 확인을 제공합니다.
16.1.1. 외부 DNS Operator
외부 DNS Operator는 olm.openshift.io
API 그룹에서 외부 DNS API를 구현합니다. 외부 DNS Operator는 배포 리소스를 사용하여 ExternalDNS
를 배포합니다. ExternalDNS 배포는 클러스터의 서비스 및 경로와 같은 리소스를 감시하고 외부 DNS 공급자를 업데이트합니다.
절차
OperatorHub에서 필요에 따라 ExternalDNS Operator를 배포할 수 있으므로 Subscription
오브젝트가 생성됩니다.
설치 계획의 이름을 확인합니다.
$ oc -n external-dns-operator get sub external-dns-operator -o yaml | yq '.status.installplan.name'
출력 예
install-zcvlr
설치 계획의 상태를 확인하면 설치 계획의 상태가
완료
여야 합니다.$ oc -n external-dns-operator get ip <install_plan_name> -o yaml | yq .status.phase'
출력 예
Complete
oc get
명령을 사용하여배포
상태를 확인합니다.$ oc get -n external-dns-operator deployment/external-dns-operator
출력 예
NAME READY UP-TO-DATE AVAILABLE AGE external-dns-operator 1/1 1 1 23h
16.1.2. 외부 DNS Operator 로그
oc logs
명령을 사용하여 외부 DNS Operator 로그를 볼 수 있습니다.
절차
외부 DNS Operator의 로그를 확인합니다.
$ oc logs -n external-dns-operator deployment/external-dns-operator -c external-dns-operator
16.1.2.1. 외부 DNS Operator 도메인 이름 제한
외부 DNS Operator는 새 형식을 따르고 TXT 레코드의 접두사를 추가하는 TXT 레지스트리를 사용합니다. 이렇게 하면 TXT 레코드의 도메인 이름의 최대 길이가 줄어듭니다. 해당 TXT 레코드 없이는 DNS 레코드를 존재할 수 없으므로 DNS 레코드의 도메인 이름은 TXT 레코드와 동일한 제한을 따라야 합니다. 예를 들어 DNS 레코드는 < domain-name-from-source
>이며 TXT 레코드는 external-dns-< records-type>-<domain-name-from-source
>입니다.
외부 DNS Operator에서 생성한 DNS 레코드의 도메인 이름에는 다음과 같은 제한 사항이 있습니다.
레코드 유형 | 문자 수 |
---|---|
CNAME | 44 |
AzureDNS의 와일드카드 CNAME 레코드 | 42 |
A | 48 |
AzureDNS의 와일드카드 A 레코드 | 46 |
외부 DNS에서 생성한 도메인 이름이 도메인 이름 제한을 초과하면 외부 DNS 인스턴스에서 다음 오류가 발생합니다.
$ oc -n external-dns-operator logs external-dns-aws-7ddbd9c7f8-2jqjh 1
- 1
external-dns-aws-7ddbd9c7f8-2jqjh
매개변수는 외부 DNS Pod의 이름을 지정합니다.
출력 예
time="2022-09-02T08:53:57Z" level=info msg="Desired change: CREATE external-dns-cname-hello-openshift-aaaaaaaaaa-bbbbbbbbbb-ccccccc.test.example.io TXT [Id: /hostedzone/Z06988883Q0H0RL6UMXXX]" time="2022-09-02T08:53:57Z" level=info msg="Desired change: CREATE external-dns-hello-openshift-aaaaaaaaaa-bbbbbbbbbb-ccccccc.test.example.io TXT [Id: /hostedzone/Z06988883Q0H0RL6UMXXX]" time="2022-09-02T08:53:57Z" level=info msg="Desired change: CREATE hello-openshift-aaaaaaaaaa-bbbbbbbbbb-ccccccc.test.example.io A [Id: /hostedzone/Z06988883Q0H0RL6UMXXX]" time="2022-09-02T08:53:57Z" level=error msg="Failure in zone test.example.io. [Id: /hostedzone/Z06988883Q0H0RL6UMXXX]" time="2022-09-02T08:53:57Z" level=error msg="InvalidChangeBatch: [FATAL problem: DomainLabelTooLong (Domain label is too long) encountered with 'external-dns-a-hello-openshift-aaaaaaaaaa-bbbbbbbbbb-ccccccc']\n\tstatus code: 400, request id: e54dfd5a-06c6-47b0-bcb9-a4f7c3a4e0c6"