第 16 章 外部 DNS Operator


16.1. OpenShift Container Platform 中的外部 DNS Operator

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

16.1.1. 外部 DNS Operator

External DNS Operator 从 olm.openshift.io API 组实现外部 DNS API。External DNS Operator 使用部署资源部署 ExternalDNS。ExternalDNS 部署会监视集群中服务和路由等资源,并更新外部 DNS 供应商。

流程

您可以根据 OperatorHub 的要求部署 ExternalDNS 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. 使用 oc get 命令来查看部署状态 :

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

流程

  1. 查看外部 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 registry,它遵循新格式并为 TXT 记录添加前缀。这可减少 TXT 记录的域名的最大长度。没有对应的 TXT 记录时无法出现 DNS 记录,因此 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"

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.