18.2. OpenShift Container Platform の External DNS Operator
External DNS Operator は、ExternalDNS
をデプロイおよび管理して、外部 DNS プロバイダーから OpenShift Container Platform へのサービスとルートの名前解決を提供します。
18.2.1. External DNS Operator
External DNS Operator は、olm.openshift.io
API グループから External DNS API を実装します。External DNS Operator は、サービス、ルート、外部 DNS プロバイダーを更新します。
前提条件
-
yq
CLI ツールがインストールされている。
手順
OperatorHub からオンデマンドで External DNS Operator をデプロイできます。External DNS Operator をデプロイすると、Subscription
オブジェクトが作成されます。
次のコマンドを実行して、インストールプランの名前を確認します。
oc -n external-dns-operator get sub external-dns-operator -o yaml | yq '.status.installplan.name'
$ oc -n external-dns-operator get sub external-dns-operator -o yaml | yq '.status.installplan.name'
Copy to Clipboard Copied! 出力例
install-zcvlr
install-zcvlr
Copy to Clipboard Copied! 次のコマンドを実行して、インストールプランのステータスが
Complete
になっているか確認します。oc -n external-dns-operator get ip <install_plan_name> -o yaml | yq '.status.phase'
$ oc -n external-dns-operator get ip <install_plan_name> -o yaml | yq '.status.phase'
Copy to Clipboard Copied! 出力例
Complete
Complete
Copy to Clipboard Copied! 次のコマンドを実行して、
external-dns-operator
デプロイメントのステータスを表示します。oc get -n external-dns-operator deployment/external-dns-operator
$ oc get -n external-dns-operator deployment/external-dns-operator
Copy to Clipboard Copied! 出力例
NAME READY UP-TO-DATE AVAILABLE AGE external-dns-operator 1/1 1 1 23h
NAME READY UP-TO-DATE AVAILABLE AGE external-dns-operator 1/1 1 1 23h
Copy to Clipboard Copied!
18.2.2. 外部 DNS Operator ログ
oc logs
コマンドを使用して、外部 DNS Operator のログを表示できます。
手順
次のコマンドを実行して、External DNS Operator のログを表示します。
oc logs -n external-dns-operator deployment/external-dns-operator -c external-dns-operator
$ oc logs -n external-dns-operator deployment/external-dns-operator -c external-dns-operator
Copy to Clipboard Copied!
18.2.2.1. External DNS Operator のドメイン名の制限
External DNS Operator は、TXT レコードの接頭辞を追加する TXT レジストリーを使用します。これにより、TXT レコードのドメイン名の最大長が短くなります。DNS レコードは対応する TXT レコードなしでは存在できないため、DNS レコードのドメイン名は TXT レコードと同じ制限に従う必要があります。たとえば、DNS レコードが <domain_name_from_source>
の場合、TXT レコードは external-dns-<record_type>-<domain_name_from_source>
になります。
External DNS Operator によって生成される DNS レコードのドメイン名には、次の制限があります。
レコードの種類 | 文字数 |
---|---|
CNAME | 44 |
AzureDNS のワイルドカード CNAME レコード | 42 |
A | 48 |
AzureDNS のワイルドカード A レコード | 46 |
生成されたドメイン名がドメイン名の制限を超えると、External DNS Operator のログに次のエラーが表示されます。
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"
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"