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
权限的用户身份登录。
流程
使用以下内容创建
IngressController
自定义资源(CR)文件,名为sample-ingress.yaml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用清单以创建
IngressController
对象:oc apply -f sample-ingress.yaml
$ oc apply -f sample-ingress.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证 Ingress Controller 是否已创建了正确的策略:
oc get ingresscontroller <name> -n openshift-ingress-operator -o=jsonpath={.spec.endpointPublishingStrategy.loadBalancer}
$ oc get ingresscontroller <name> -n openshift-ingress-operator -o=jsonpath={.spec.endpointPublishingStrategy.loadBalancer}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查输出,并确认
dnsManagementPolicy
已设置为Unmanaged
。
2.12.4. 为手动 DNS 管理修改现有 Ingress Controller 复制链接链接已复制到粘贴板!
作为集群管理员,您可以修改现有 Ingress Controller 以手动管理 DNS 记录生命周期。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
您以具有
cluster-admin
权限的用户身份登录。
流程
修改所选 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}\"}}}}"
$ 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 Copied! Toggle word wrap Toggle overflow 运行以下命令验证 Ingress Controller 是否已正确修改:
oc get ingresscontroller <name> -n openshift-ingress-operator -o=jsonpath={.spec.endpointPublishingStrategy.loadBalancer}
$ oc get ingresscontroller <name> -n openshift-ingress-operator -o=jsonpath={.spec.endpointPublishingStrategy.loadBalancer}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查输出,并确认
dnsManagementPolicy
已设置为Unmanaged
。