第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
をデプロイします。外部 DNS デプロイメントは、クラスター内のサービスやルートなどのリソースを監視し、外部 DNS プロバイダーを更新します。
手順
OperatorHub からオンデマンドで ExternalDNS Operator をデプロイできます。これにより、Subscription
オブジェクトが作成されます。
インストールプランの名前を確認してください。
$ oc -n external-dns-operator get sub external-dns-operator -o yaml | yq '.status.installplan.name'
出力例
install-zcvlr
インストールプランのステータスを確認します。インストールプランのステータスは
Complete
でなければなりません。$ oc -n external-dns-operator get ip <install_plan_name> -o yaml | yq '.status.phase'
出力例
Complete
oc get
コマンドを使用してDeployment
ステータスを表示します。$ 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 レコードのドメイン名の最大長が短くなります。DNS レコードは対応する TXT レコードなしでは存在できないため、DNS レコードのドメイン名は TXT レコードと同じ制限に従う必要があります。たとえば、DNS レコードは <domain-name-from-source>
で、TXT レコードは external-dns-<record-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"