第19章 外部 DNS Operator
19.1. OpenShift Container Platform の外部 DNS Operator
外部 DNS Operator は、ExternalDNS
をデプロイして管理し、外部 DNS プロバイダーから OpenShift Container Platform へのサービスおよびルートの名前解決を提供します。
19.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
19.1.2. 外部 DNS Operator ログ
oc logs
コマンドを使用して、外部 DNS Operator のログを表示できます。
手順
外部 DNS Operator のログを表示します。
$ oc logs -n external-dns-operator deployment/external-dns-operator -c external-dns-operator
19.1.2.1. 外部 DNS オペレーターのドメイン名の制限
外部 DNS オペレーターは、TXT レジストリーを使用します。これは、新しい形式に従い、TXT レコードの接頭辞を追加します。これにより、TXT レコードのドメイン名の最大長が短くなります。DNS レコードは対応する TXT レコードなしでは存在できないため、DNS レコードのドメイン名は TXT レコードと同じ制限に従う必要があります。たとえば、DNS レコードは <domain-name-from-source>
で、TXT レコードは external-dns-<record-type>-<domain-name-from-source>
です。
外部 DNS オペレーターによって生成される 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"