第 19 章 外部 DNS Operator

19.1. OpenShift Container Platform 中的外部 DNS Operator

External DNS Operator 部署并管理 ExternalDNS,以便为从外部 DNS 供应商到 OpenShift Container Platform 的服务和路由提供名称解析。

19.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 对象。

  1. 运行以下命令,检查安装计划的名称:

    $ oc -n external-dns-operator get sub external-dns-operator -o yaml | yq '.status.installplan.name'

    输出示例

    install-zcvlr

  2. 运行以下命令,检查安装计划的状态是否为 Complete

    $ oc -n external-dns-operator get ip <install_plan_name> -o yaml | yq '.status.phase'

    输出示例

    Complete

  3. 运行以下命令,查看 external-dns-operator 部署的状态:

    $ 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 日志。

流程

  1. 运行以下命令,查看外部 DNS Operator 的日志:

    $ oc logs -n external-dns-operator deployment/external-dns-operator -c external-dns-operator

19.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"