2.2. 配置要在私有区中发布的 DNS 记录
对于所有 OpenShift Container Platform 集群,无论是公共还是私有,DNS 记录都会默认在公共区中发布。
您可以从集群 DNS 配置中删除公共区,以避免向公共公开 DNS 记录。您可能希望避免公开敏感信息,如内部域名、内部 IP 地址或机构中的集群数量,或者您可能不需要公开发布记录。如果所有能够连接到集群内的服务的客户端都使用具有私有区的 DNS 记录的私有 DNS 服务,则不需要集群的公共 DNS 记录。
部署集群后,您可以通过修改 DNS 自定义资源 (CR) 来修改其 DNS
使其只使用私有区。以这种方式修改 DNS
CR 意味着,任何随后创建的 DNS 记录都不会发布到公共 DNS 服务器,从而保持对内部用户隔离的 DNS 记录知识。当您将集群配置为私有时,也可以完成此操作,或者如果您不希望 DNS 记录可以公开解析。
或者,即使在私有集群中,您也可以保留 DNS 记录的公共区,因为它允许客户端为该集群中运行的应用程序解析 DNS 名称。例如,机构可以有连接到公共互联网的机器,然后为特定私有 IP 范围建立 VPN 连接,以连接到私有 IP 地址。这些机器的 DNS 查找使用公共 DNS 来确定这些服务的专用地址,然后通过 VPN 连接到私有地址。
流程
运行以下命令并查看输出,查看集群的
DNS
CR:$ oc get dnses.config.openshift.io/cluster -o yaml
输出示例
apiVersion: config.openshift.io/v1 kind: DNS metadata: creationTimestamp: "2019-10-25T18:27:09Z" generation: 2 name: cluster resourceVersion: "37966" selfLink: /apis/config.openshift.io/v1/dnses/cluster uid: 0e714746-f755-11f9-9cb1-02ff55d8f976 spec: baseDomain: <base_domain> privateZone: tags: Name: <infrastructure_id>-int kubernetes.io/cluster/<infrastructure_id>: owned publicZone: id: Z2XXXXXXXXXXA4 status: {}
请注意,
spec
部分包含一个私有区和一个公共区。运行以下命令来修补
DNS
CR 以删除公共区:$ oc patch dnses.config.openshift.io/cluster --type=merge --patch='{"spec": {"publicZone": null}}'
输出示例
dns.config.openshift.io/cluster patched
当为
IngressController
对象创建DNS
记录时,Ingress Operator 会参考 DNS CR 定义。如果只指定私有区,则只创建私有记录。重要当您删除公共区时,不会修改现有 DNS 记录。如果您不再希望公开发布它们,则必须手动删除之前发布的公共 DNS 记录。
验证
运行以下命令并查看输出,查看集群的
DNS
CR,并确认已删除公共区:$ oc get dnses.config.openshift.io/cluster -o yaml
输出示例
apiVersion: config.openshift.io/v1 kind: DNS metadata: creationTimestamp: "2019-10-25T18:27:09Z" generation: 2 name: cluster resourceVersion: "37966" selfLink: /apis/config.openshift.io/v1/dnses/cluster uid: 0e714746-f755-11f9-9cb1-02ff55d8f976 spec: baseDomain: <base_domain> privateZone: tags: Name: <infrastructure_id>-int kubernetes.io/cluster/<infrastructure_id>-wfpg4: owned status: {}