×

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

作为集群管理员,您可以配置 Ingress 控制器以停止自动 DNS 管理并启动手动 DNS 管理。设置dnsManagementPolicy以指定何时应自动或手动管理。

当您将 Ingress 控制器从Managed更改为Unmanaged DNS 管理策略时,Operator 不会清理云上预配的先前通配符 DNS 记录。当您将 Ingress 控制器从Unmanaged更改为Managed DNS 管理策略时,如果 DNS 记录不存在,Operator 会尝试在云提供商上创建该记录,或者如果该记录已存在,则更新该记录。

当您将dnsManagementPolicy设置为unmanaged时,您必须手动管理云提供商上通配符 DNS 记录的生命周期。

Managed DNS 管理策略

Ingress 控制器的Managed DNS 管理策略确保云提供商上通配符 DNS 记录的生命周期由 Operator 自动管理。

Unmanaged DNS 管理策略

Ingress 控制器的Unmanaged DNS 管理策略确保云提供商上通配符 DNS 记录的生命周期不会自动管理,而是成为集群管理员的责任。

在 AWS 云平台上,如果 Ingress 控制器上的域与dnsConfig.Spec.BaseDomain不匹配,则 DNS 管理策略将自动设置为Unmanaged

使用Unmanaged DNS 管理策略创建自定义 Ingress 控制器

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

先决条件
  • 安装 OpenShift CLI (oc)。

  • 以具有cluster-admin权限的用户身份登录。

步骤
  1. 创建一个名为sample-ingress.yaml的自定义资源 (CR) 文件,其中包含以下内容

    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)
    1 使用IngressController对象的名称指定<name>
    2 根据作为先决条件创建的 DNS 记录指定domain
    3 scope指定为External以在外部公开负载均衡器。
    4 dnsManagementPolicy指示 Ingress 控制器是否正在管理与负载均衡器关联的通配符 DNS 记录的生命周期。有效值为ManagedUnmanaged。默认值为Managed
  2. 保存文件以应用更改。

    oc apply -f <name>.yaml (1)

修改现有 Ingress 控制器

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

先决条件
  • 安装 OpenShift CLI (oc)。

  • 以具有cluster-admin权限的用户身份登录。

步骤
  1. 修改选择的IngressController以设置dnsManagementPolicy

    SCOPE=$(oc -n openshift-ingress-operator get ingresscontroller <name> -o=jsonpath="{.status.endpointPublishingStrategy.loadBalancer.scope}")
    
    oc -n openshift-ingress-operator patch ingresscontrollers/<name> --type=merge --patch='{"spec":{"endpointPublishingStrategy":{"type":"LoadBalancerService","loadBalancer":{"dnsManagementPolicy":"Unmanaged", "scope":"${SCOPE}"}}}}'
  2. 可选:您可以在云提供商中删除关联的 DNS 记录。