映射自定义网域

您可以为 Cloud Run for Anthos 服务使用自定义网域。

如需将自定义网域用于服务,请将服务映射到自定义网域,然后更新 DNS 记录。您可以将服务映射到网域(如 example.com)或子网域(如 subdomain.example.com)。

如果您使用的是 HTTPS,为了使网域映射正常运行,您需要使用代管式传输层安全协议 (TLS) 证书功能或提供您自己的证书

您可以将多个自定义网域映射到同一项 Cloud Run for Anthos 服务。

准备工作

  • 您必须拥有或购买要映射到服务的网域。您可以使用任何域名注册商,但如果使用 Google DomainsCloud 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 工具将自定义网域映射到服务。

控制台

  1. 在 Google Cloud 控制台中打开网域映射页面:

    前往“网域映射”

    请注意,如果显示窗口太小,则不会显示“映射自定义网域”按钮,您必须点击页面右侧的三点状垂直椭圆图标。

  2. 在“网域映射”页面中,点击添加映射

  3. 从“添加映射”表单的下拉列表中,选择要将自定义网域映射到的服务:

    添加网域映射

  4. 输入域名。 系统不支持基本路径映射。术语“基本路径”是指域名之后的网址路径名称。例如,usersexample.com/users 的基本路径。Cloud Run for Anthos 仅允许您将网域映射到 /,而不映射到特定的基本路径。因此,必须通过在服务容器内使用路由器或使用 Firebase Hosting 来处理任何路径路由。

  5. 点击继续

  6. 除非您从 Google Domains 购买了自定义网域,否则请先验证网域所有权,然后再尝试在您的 Google Cloud 项目中使用该网域。例如,如果您要将 subdomain.example.com 映射到服务,则需要验证 example.com 网域的所有权。如需详细了解如何验证网域所有权,请参阅网站站长中心帮助

  7. 访问您的网域注册商网站,并使用上一步中显示的 DNS 记录更新您的 DNS 记录。您可以随时显示上步中所示的 DNS 记录,点击网域映射所对应“...”操作菜单中的 DNS 记录即可。

  8. 点击完成

命令行

  1. 除非您从 Google Domains 购买了自定义网域,否则请先验证网域所有权,然后再尝试在您的 Google Cloud 项目中使用该网域。您可以使用以下命令来确定要使用的自定义网域是否已通过验证:

    gcloud domains list-user-verified

    如果您需要验证网域所有权,请打开网站站长中心验证页面:

    gcloud domains verify BASE-DOMAIN

    其中,BASE-DOMAIN 是您要验证的基本网域。例如,如果要映射 subdomain.example.com,您应验证 example.com 的所有权。

    在网站站长中心内,完成网域所有权验证。如需了解详情,请参阅网站站长中心帮助

  2. 将服务映射到自定义网域:

    gcloud run domain-mappings create --service SERVICE --domain DOMAIN

    您需要将其中的:

    • SERVICE 替换为您的服务名称。
    • DOMAIN 替换为您的自定义网域。系统不支持基本路径映射。术语“基本路径”是指域名之后的网址路径名称。例如,usersexample.com/users 的基本路径。Cloud Run for Anthos 仅允许您将网域映射到 /,而不映射到特定的基本路径。因此,必须通过在服务容器内使用路由器或使用 Firebase Hosting 来处理任何路径路由。

      可选:如果 DOMAIN 已映射到其他服务,您可以附加 --force-override 标志。此标志会从之前的服务中移除映射,并将其替换为 DOMAINSERVICE 之间的新映射。

  3. 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 提供商,请参阅添加记录

  1. 按照以下方式检索网域映射的 DNS 记录信息:

    控制台

    1. 转到 Cloud Run for Anthos 网域映射页面:

      前往“网域映射”

    2. 点击服务右侧的三点状垂直椭圆图标,然后点击 DNS 记录以显示所有 DNS 记录:

    选择 DNS 记录

    命令行

    gcloud run domain-mappings describe --domain DOMAIN

    DOMAIN 替换为您的自定义网域,例如 example.comsubdomain.example.com

    您需要在 resourceRecords 标题下返回的所有记录。

  2. 访问网域注册商并登录您的帐号,然后打开 DNS 配置页面。

  3. 找到网域配置页面的主机记录部分,然后添加您在将网域映射到 Cloud Run for Anthos 服务时收到的各条资源记录。

  4. 在 DNS 提供商处将上述各 DNS 记录添加到帐号时,请按如下所述操作:

    • 选择上一步中 DNS 记录返回的类型:AAAAACNAME
    • 使用名称 www 映射到 www.example.com
    • 使用名称 @ 映射 example.com
  5. 保存您在网域帐号的 DNS 配置页面中所做的更改。在大多数情况下,这些更改只需几分钟即可生效,但在某些情况下,可能需要几个小时,具体取决于注册商以及网域的任何先前 DNS 记录的存留时间 (TTL)。您可以使用 dig 工具(如此在线 dig 版本)确认 DNS 记录已成功更新。

  6. 通过浏览您的新服务网址(例如 https://www.example.com)来测试是否成功。请注意,发放代管式 SSL 证书可能需要几分钟的时间。

将已通过验证的域名所有者添加到其他用户或服务帐号

当某位用户验证网域时,网域仅会针对该用户的帐号进行验证。这意味着,只有该用户才能添加使用这个网域的其他网域映射。因此,要使其他用户能够添加使用这个网域的映射,您必须将这些用户添加为已通过验证的所有者。

如果您需要将经过验证的域名所有者添加到其他用户或服务帐号,则可以通过 Search Console 页面添加权限:

  1. 使用网络浏览器导航到以下地址:

    https://search.google.com/search-console/welcome

  2. 属性下,点击要为其添加用户或服务帐号的网域。

  3. 向下滚动到已验证所有者列表,点击添加所有者,然后输入 Google 帐号电子邮件地址或服务帐号 ID。

    如需查看您的服务帐号列表,请打开 Google Cloud 控制台中的“服务帐号”页面:

    转到“服务帐号”页面

在 Cloud Run for Anthos 控制台中向 Cloud Domains 注册网域

如需在 Cloud Run for Anthos 控制台中向 Cloud Domains 注册网域,请按以下步骤操作:

  1. 转到 Cloud Run for Anthos 网域映射页面:

    前往“网域映射”

  2. 点击注册网域

  3. 按照注册网域中的说明完成注册流程。

  4. 将您的网域映射到 Cloud Run for Anthos在您的网域注册商处添加 DNS 记录