了解如何使用通配符 DNS 记录为集群配置网域。您必须配置网域以允许您的服务接受请求并允许访问,以进行测试。
默认情况下,Cloud Run for Anthos 集群使用 example.com
基本网域,并且不允许向服务发出请求。例如,向 http://{service}.{namespace}.example.com
发送请求会失败。
要使集群中的服务接受请求,您必须将网域配置为使用以下之一:
- 免费 DNS 通配符服务
- 您拥有的自定义网域。如需了解详情,请参阅映射自定义网域。
由于请求可靠性方面的问题,DNS 通配符记录应仅用于测试。详细了解通配符 DNS 记录。
准备工作
确保已安装并配置了 Google Cloud CLI 和 kubectl。
选择通配符 DNS 服务或自定义网域
在进行开发和测试时,您可以更改默认网域以使用通配符 DNS 测试网站。例如:
如果您已经拥有用于测试的网域,或者不介意购买用于测试的网域,则可以将默认网域设置为自己的网域。自定义网域可以提供更高的测试可靠性。
获取外部 IP 地址
您必须获取为 Istio Ingress 控制器创建的负载均衡器服务的外部 IP 地址,然后再继续下一步。
控制台
要从 Google Cloud 控制台获取负载均衡器的外部 IP 地址,请执行以下操作:
前往 Google Cloud 控制台中的 GKE 页面:
前往 GKE 页面点击服务和 Ingress (Services and ingress)。
确定集群的 Istio Ingress 控制器服务。服务的类型为外部负载均衡器。下表按集群版本显示服务名称:
集群版本 ISTIO-GATEWAY 1.15.3-gke.19
及更高版本1.14.3-gke.12
及更高版本1.13.10-gke.8
及更高版本istio-ingress
所有其他版本 istio-ingressgateway
找到集群的 Istio Ingress 控制器后,复制其端点。这将是没有端口号的 IP 地址。例如,您可能会看到
00.000.000.000:11
列为端点,但只需复制00.000.000.000
。
命令行
如需获取 Istio 入站网关的外部 IP,请执行以下操作:kubectl get svc istio-ingress -n gke-system生成的输出类似如下所示:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) istio-ingress LoadBalancer XX.XX.XXX.XX pending 80:32380/TCP,443:32390/TCP,32400:32400/TCP负载均衡器的 EXTERNAL-IP 是您必须使用的 IP 地址。
如果使用通配符服务,在修改集群配置时将需要外部 IP 地址。如果使用自己的自定义网域,则需要使用外部 IP 地址在域名注册商处创建或更新记录。
配置集群的网域
Cloud Run for Anthos 使用 config-domain
ConfigMap 为部署到集群的所有服务定义基础网域。用于修改此配置的命令将取决于您使用的是通配符 DNS 服务还是您自己的自定义网域。如果以后您想更新默认集群网域,可以使用不同的值重复这些步骤。
使用 DNS 通配符服务进行测试
以下步骤使用 xip.io
来展示如何将网域配置为使用 DNS 通配符服务,但您可以将其替换为您选择的任何服务。
控制台
如需在 Google Cloud 控制台中将默认基本网域从 example.com
更改为某个 DNS 通配符服务(例如 xip.io
),请执行以下操作:
命令行
如需将默认基本网域从 example.com
更改为某个 DNS 通配符网站(例如 xip.io
),请使用以下命令:
kubectl patch configmap config-domain --namespace knative-serving --patch \ '{"data": {"example.com": null, "[EXTERNAL-IP].xip.io": ""}}'
替换
- 将 [EXTERNAL-IP] 替换为负载均衡器的外部 IP 地址。
- 将 xip.io 替换为您使用的通配符 DNS 网站。
您的服务现在可通过 {service-name}.{namespace}.{[EXTERNAL-IP].xip.io}
访问。
使用自定义网域进行测试
如果您希望使用自己的自定义网域进行测试,以下步骤将帮助您进行设置。
首先,更新集群的 ConfigMap 以指向您的网域:
控制台
前往 Google Cloud 控制台中的 Cloud Run for Anthos 网域映射页面:
选择添加映射 > 添加集群默认网域
选中“Apply this domain mapping to all Cloud Run for Anthos services deployed to this cluster”旁边的复选框。
从下拉菜单中选择您的集群。
在网域字段中,输入您的域名。例如
example.com
。
命令行
使用以下命令指定自定义网域:
kubectl patch configmap config-domain --namespace knative-serving --patch \ '{"data": {"example.com": null, "[DOMAIN]": ""}}'
将 [DOMAIN] 替换为您自己的网域(例如 mydomain.com
)。上述命令会从 ConfigMap 中移除 example.com
并将 mydomain.com
添加为默认基本网域。如果要再次将此网域更改为其他某个网域,可以重复此命令。
剩余步骤必须在您的域名注册商的网站上执行:
访问网域注册商并登录您的帐号,然后打开 DNS 配置页面。
找到网域配置页面的主机记录部分,然后添加所需的资源记录。
要通过 DNS 提供商将 DNS 记录添加帐号,请按如下所述操作:
- 选择
A
记录类型。 提供通配符
*
,如以下示例所示:
- 选择
保存您在网域帐号的 DNS 配置页面中所做的更改。在大多数情况下,这些更改只需几分钟即可生效,但在某些情况下,可能需要几个小时,具体取决于注册商以及网域的任何先前 DNS 记录的存留时间 (TTL)。
更新 DNS 记录并将其指向集群后,您的服务可通过 {service-name}.{namespace}.{your-domain}
访问。