2.12. 了解 DNS 管理策略


作为集群管理员,在创建 Ingress Controller 时,Operator 会自动管理 DNS 记录。当所需的 DNS 区域与集群 DNS 区域不同或 DNS 区域被托管在云供应商时,这有一些限制。

2.12.1. Managed DNS 管理策略

Ingress Controller 的 Managed DNS 管理策略可确保云供应商上通配符 DNS 记录的生命周期由 Operator 自动管理。这是默认的行为。

当您将 Ingress Controller 从 Managed 改为 Unmanaged DNS 管理策略时,Operator 不会清理在云中置备的以前的通配符 DNS 记录。

当您将 Ingress Controller 从 Unmanaged 改为 Managed DNS 管理策略时,Operator 会尝试在云供应商上创建 DNS 记录(如果不存在),或更新 DNS 记录(如果已存在)。

2.12.2. Unmanaged DNS 管理策略

Ingress Controller 的 Unmanaged DNS 管理策略可确保云供应商上的通配符 DNS 记录的生命周期不会自动管理,而是由集群管理员负责。

2.12.3. 为手动 DNS 管理创建 Ingress Controller

作为集群管理员,您可以使用 Unmanaged DNS 管理策略创建新的自定义 Ingress Controller。

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 您以具有 cluster-admin 权限的用户身份登录。

流程

  1. 使用以下内容创建 IngressController 自定义资源(CR)文件,名为 sample-ingress.yaml

    apiVersion: operator.openshift.io/v1
    kind: IngressController
    metadata:
      namespace: openshift-ingress-operator
      name: <name> 
    1
    
    spec:
      domain: <domain> 
    2
    
      endpointPublishingStrategy:
        type: LoadBalancerService
        loadBalancer:
          scope: External 
    3
    
          dnsManagementPolicy: Unmanaged 
    4
    Copy to Clipboard Toggle word wrap
    1
    使用 IngressController 对象的名称指定 <name>
    2
    根据作为前提条件创建的 DNS 记录指定 domain
    3
    scope 指定为 External,以在外部公开负载均衡器。
    4
    dnsManagementPolicy 表示 Ingress Controller 是否管理与负载均衡器关联的通配符 DNS 记录的生命周期。有效值为 ManagedUnmanaged。默认值为 Managed
  2. 应用清单以创建 IngressController 对象:

    $ oc apply -f sample-ingress.yaml
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令,验证 Ingress Controller 是否已创建了正确的策略:

    $ oc get ingresscontroller <name> -n openshift-ingress-operator -o=jsonpath={.spec.endpointPublishingStrategy.loadBalancer}
    Copy to Clipboard Toggle word wrap

    检查输出,并确认 dnsManagementPolicy 已设置为 Unmanaged

2.12.4. 为手动 DNS 管理修改现有 Ingress Controller

作为集群管理员,您可以修改现有 Ingress Controller 以手动管理 DNS 记录生命周期。

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 您以具有 cluster-admin 权限的用户身份登录。

流程

  1. 修改所选 Ingress Controller 来设置 dnsManagementPolicy 参数:

    $ SCOPE=$(oc -n openshift-ingress-operator get ingresscontroller <name> -o=jsonpath="{.status.endpointPublishingStrategy.loadBalancer.scope}")
    
    $ oc -n openshift-ingress-operator patch ingresscontrollers/default --type=merge --patch="{\"spec\":{\"endpointPublishingStrategy\":{\"type\":\"LoadBalancerService\",\"loadBalancer\":{\"dnsManagementPolicy\":\"Unmanaged\", \"scope\":\"${SCOPE}\"}}}}"
    ingresscontroller.operator.openshift.io/default patched
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令验证 Ingress Controller 是否已正确修改:

    $ oc get ingresscontroller <name> -n openshift-ingress-operator -o=jsonpath={.spec.endpointPublishingStrategy.loadBalancer}
    Copy to Clipboard Toggle word wrap

    检查输出,并确认 dnsManagementPolicy 已设置为 Unmanaged

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat