您可以为 Cloud Run for Anthos 服务使用自定义网域。
如需将自定义网域用于服务,请将服务映射到自定义网域,然后更新 DNS 记录。您可以将服务映射到网域(如 example.com
)或子网域(如 subdomain.example.com
)。
如果您使用的是 HTTPS,为了使网域映射正常运行,您需要使用代管式传输层安全协议 (TLS) 证书功能或提供您自己的证书。
您可以将多个自定义网域映射到同一项 Cloud Run for Anthos 服务。
准备工作
您必须拥有或购买要映射到服务的网域。您可以使用任何域名注册商,但如果使用 Google Domains 或 Cloud Domains,则网域会自动针对 Cloud Run for Anthos 进行验证,因此您无需执行网域验证流程。
如果要向 Cloud Domains 注册网域,请参阅在 Cloud Run for Anthos 控制台中向 Cloud Domains 注册网域。
如果您在 Cloud Run for Anthos 中使用 WebSocket,则必须先运行以下
kubectl
命令来创建具有allow_connect: true
的 Istio EnvoyFilter 对象,以启用 WebSocket 支持:cat <<EOF | kubectl apply -f - apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata: name: allowconnect-cluser-local-gateway namespace: gke-system spec: workloadSelector: labels: app: cluster-local-gateway configPatches: - applyTo: NETWORK_FILTER match: listener: portNumber: 80 filterChain: filter: name: "envoy.http_connection_manager" patch: operation: MERGE value: typed_config: "@type": "type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager" http2_protocol_options: allow_connect: true EOF
将自定义网域映射到服务
您可以使用 Google Cloud Console 或 Google Cloud CLI 工具将自定义网域映射到服务。
控制台
在 Google Cloud 控制台中打开网域映射页面:
请注意,如果显示窗口太小,则不会显示“映射自定义网域”按钮,您必须点击页面右侧的三点状垂直椭圆图标。
在“网域映射”页面中,点击添加映射。
从“添加映射”表单的下拉列表中,选择要将自定义网域映射到的服务:
输入域名。 系统不支持基本路径映射。术语“基本路径”是指域名之后的网址路径名称。例如,
users
是example.com/users
的基本路径。Cloud Run for Anthos 仅允许您将网域映射到/
,而不映射到特定的基本路径。因此,必须通过在服务容器内使用路由器或使用 Firebase Hosting 来处理任何路径路由。点击继续。
除非您从 Google Domains 购买了自定义网域,否则请先验证网域所有权,然后再尝试在您的 Google Cloud 项目中使用该网域。例如,如果您要将
subdomain.example.com
映射到服务,则需要验证example.com
网域的所有权。如需详细了解如何验证网域所有权,请参阅网站站长中心帮助访问您的网域注册商网站,并使用上一步中显示的 DNS 记录更新您的 DNS 记录。您可以随时显示上步中所示的 DNS 记录,点击网域映射所对应“...”操作菜单中的 DNS 记录即可。
点击完成。
命令行
除非您从 Google Domains 购买了自定义网域,否则请先验证网域所有权,然后再尝试在您的 Google Cloud 项目中使用该网域。您可以使用以下命令来确定要使用的自定义网域是否已通过验证:
gcloud domains list-user-verified
如果您需要验证网域所有权,请打开网站站长中心验证页面:
gcloud domains verify BASE-DOMAIN
其中,BASE-DOMAIN 是您要验证的基本网域。例如,如果要映射
subdomain.example.com
,您应验证example.com
的所有权。在网站站长中心内,完成网域所有权验证。如需了解详情,请参阅网站站长中心帮助。
将服务映射到自定义网域:
gcloud run domain-mappings create --service SERVICE --domain DOMAIN
您需要将其中的:
- 将
SERVICE
替换为您的服务名称。 将
DOMAIN
替换为您的自定义网域。系统不支持基本路径映射。术语“基本路径”是指域名之后的网址路径名称。例如,users
是example.com/users
的基本路径。Cloud Run for Anthos 仅允许您将网域映射到/
,而不映射到特定的基本路径。因此,必须通过在服务容器内使用路由器或使用 Firebase Hosting 来处理任何路径路由。可选:如果
DOMAIN
已映射到其他服务,您可以附加--force-override
标志。此标志会从之前的服务中移除映射,并将其替换为DOMAIN
和SERVICE
之间的新映射。
- 将
将 Istio 入站网关服务的负载平衡器 IP 地址预留为静态 IP 地址:
gcloud compute addresses create ADDRESS-NAME --addresses EXTERNAL-IP --region REGION
您需要将其中的:
- 将 ADDRESS-NAME 替换为您要为静态 IP 地址指定的名称。
- 将 EXTERNAL-IP 替换为您使用
gcloud run domain-mapping describe
命令获得的A
记录中的 IP 地址。 - 将 REGION 替换为您使用的区域。
Cloud Run for Anthos Istio 入站网关
要获取 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 地址。
在网域注册商处添加 DNS 记录
在 Cloud Run for Anthos 中,将服务映射到自定义网域后,您需要在网域注册商处更新 DNS 记录。为方便起见,Cloud Run for Anthos 会生成并显示您需要输入的 DNS 记录。您必须在网域注册商处添加这些记录以指向 Cloud Run for Anthos 服务,映射才能生效。
如果您使用 Cloud DNS 作为 DNS 提供商,请参阅添加记录。
按照以下方式检索网域映射的 DNS 记录信息:
控制台
转到 Cloud Run for Anthos 网域映射页面:
点击服务右侧的三点状垂直椭圆图标,然后点击 DNS 记录以显示所有 DNS 记录:
命令行
gcloud run domain-mappings describe --domain DOMAIN
将 DOMAIN 替换为您的自定义网域,例如
example.com
或subdomain.example.com
。您需要在
resourceRecords
标题下返回的所有记录。访问网域注册商并登录您的帐号,然后打开 DNS 配置页面。
找到网域配置页面的主机记录部分,然后添加您在将网域映射到 Cloud Run for Anthos 服务时收到的各条资源记录。
在 DNS 提供商处将上述各 DNS 记录添加到帐号时,请按如下所述操作:
- 选择上一步中 DNS 记录返回的类型:
A
、AAAA
或CNAME
。 - 使用名称
www
映射到www.example.com
。 - 使用名称
@
映射example.com
。
- 选择上一步中 DNS 记录返回的类型:
保存您在网域帐号的 DNS 配置页面中所做的更改。在大多数情况下,这些更改只需几分钟即可生效,但在某些情况下,可能需要几个小时,具体取决于注册商以及网域的任何先前 DNS 记录的存留时间 (TTL)。您可以使用
dig
工具(如此在线dig
版本)确认 DNS 记录已成功更新。通过浏览您的新服务网址(例如
https://www.example.com
)来测试是否成功。请注意,发放代管式 SSL 证书可能需要几分钟的时间。
将已通过验证的域名所有者添加到其他用户或服务帐号
当某位用户验证网域时,网域仅会针对该用户的帐号进行验证。这意味着,只有该用户才能添加使用这个网域的其他网域映射。因此,要使其他用户能够添加使用这个网域的映射,您必须将这些用户添加为已通过验证的所有者。
如果您需要将经过验证的域名所有者添加到其他用户或服务帐号,则可以通过 Search Console 页面添加权限:
使用网络浏览器导航到以下地址:
在属性下,点击要为其添加用户或服务帐号的网域。
向下滚动到已验证所有者列表,点击添加所有者,然后输入 Google 帐号电子邮件地址或服务帐号 ID。
如需查看您的服务帐号列表,请打开 Google Cloud 控制台中的“服务帐号”页面:
在 Cloud Run for Anthos 控制台中向 Cloud Domains 注册网域
如需在 Cloud Run for Anthos 控制台中向 Cloud Domains 注册网域,请按以下步骤操作:
转到 Cloud Run for Anthos 网域映射页面:
点击注册网域。
按照注册网域中的说明完成注册流程。