第 17 章 外部 DNS Operator
17.1. OpenShift Container Platform 中的外部 DNS Operator 复制链接链接已复制到粘贴板!
External DNS Operator 部署并管理 ExternalDNS
,以便为从外部 DNS 供应商到 OpenShift Container Platform 的服务和路由提供名称解析。
17.1.1. 外部 DNS Operator 复制链接链接已复制到粘贴板!
External DNS Operator 从 olm.openshift.io
API 组实现外部 DNS API。External DNS Operator 更新服务、路由和外部 DNS 供应商。
先决条件
-
已安装
yq
CLI 工具。
流程
您可以根据 OperatorHub 的要求部署外部 DNS Operator。部署外部 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! Toggle word wrap Toggle overflow 输出示例
install-zcvlr
install-zcvlr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查安装计划的状态是否为
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! Toggle word wrap Toggle overflow 输出示例
Complete
Complete
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,查看
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! Toggle word wrap Toggle overflow 输出示例
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! Toggle word wrap Toggle overflow
17.1.2. 外部 DNS Operator 日志 复制链接链接已复制到粘贴板!
您可以使用 oc logs
命令查看外部 DNS Operator 日志。
流程
运行以下命令,查看外部 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! Toggle word wrap Toggle overflow
17.1.2.1. 外部 DNS Operator 域名限制 复制链接链接已复制到粘贴板!
External DNS Operator 使用 TXT registry,它为 TXT 记录添加前缀。这可减少 TXT 记录的域名的最大长度。没有对应的 TXT 记录时无法出现 DNS 记录,因此 DNS 记录的域名必须遵循与 TXT 记录相同的限制。例如,一个 <domain_name_from_source>
DNS 记录会导致一个 external-dns-<record_type>-<domain_name_from_source>
TXT 记录。
外部 DNS Operator 生成的 DNS 记录的域名有以下限制:
记录类型 | 字符数 |
---|---|
CNAME | 44 |
AzureDNS 上的通配符 CNAME 记录 | 42 |
A | 48 |
AzureDNS 上的通配符 A 记录 | 46 |
如果生成的域名超过任何域名限制,则外部 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"