创建自定义网址

本页介绍了如何配置和管理自定义网址,以便为 Cloud Run 服务获取易于输入、令人难忘且可在全球范围内使用的网址,而不是默认的确定性网址:

  • 自定义网址格式:https://CUSTOM_SUBDOMAIN.cloud.run
  • 默认网址格式:https://SERVICE_NAME-PROJECT_NUMBER.REGION.run.app

通过使用自定义网址,您可以分享服务,而无需设置自定义网域、DNS 记录或外部负载均衡器。

为 Cloud Run 服务使用自定义网址可带来以下好处:

  • 简单网址:将您的服务映射到简洁的 https://CUSTOM_SUBDOMAIN.cloud.run 格式。
  • 全球可用性:自定义网址可从任何位置访问,与标准 .run.app 网址相同。
  • 灵活的生命周期:灵活地在服务之���附加、分离或移动自定义网址,而无需部署新修订版本。
  • 多个映射:您可以将多个自定义网址映射到单个服务。

准备工作

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. 在 Google Cloud 项目中设置 Cloud Run 开发环境。
  4. 安装并初始化 gcloud CLI。

所需的角色

如需获得管理自定义网址所需的权限,请让您的管理员为您授予以下 IAM 角色:

  • 如需创建、更新或删除自定义网址映射,您需要拥有项目中的 Cloud Run Admin (roles/run.admin) 角色

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

限制

  • 默认情况下,每个项目最多可以映射 50 个网域。
  • 自定义网址子网域的长度必须介于 6 到 63 个字符之间,遵循允许使用字母数字字符和连字符的标准 DNS 命名惯例,并且不能以连字符开头或结尾。
  • 某些子网域受到限制。
  • 您无法像停用默认 .run.app 网址那样暂时停用自定义网址。如需停止从该来源投放流量,您必须删除相应映射。
  • 不支持将入站流量限制为内部或内部和 Cloud Load Balancing 流量的 Cloud Run 服务。
  • Terraform 不支持自定义网址。为避免潜在的重大变更,请勿使用预览版 domain_mapping 资源。
  • 自定义网址完全独立。如果您选择停用服务的默认 .run.app 网址,您的自定义网址映射仍会完全有效且可供访问。

将自定义网址附加或映射到服务

您可以在部署新服务时为其附加自定义网址,也可以使用 Google Cloud 控制台或 gcloud 将自定义网址映射到现有服务。

将自定义网址附加到新服务

部署新的 Cloud Run 服务时,您可以将自定义网址附加为部署配置的一部分。

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Run 服务页面。

    转到 Cloud Run

  2. 点击部署容器。

  3. 填写服务的基本配置详细信息。

  4. 在自定义网址部分,点击添加自定义网址。

  5. 请输入有效的自定义网址子网域。

  6. 可选。如需添加多个自定义网址,请再次点击添加自定义网址。

  7. 点击创建。

gcloud

  • 从容器映像进行部署

    如需在 Cloud Run 服务的初始容器部署期间为其创建自定义网址子网域映射,请运行以下命令:

    gcloud beta run deploy SERVICE \
        --image=IMAGE_URL \
        --domain=CUSTOM_SUBDOMAIN.cloud.run

    替换以下内容:

    • SERVICE:您要部署的 Cloud Run 服务的名称。您可以省略此参数,但如果省略它,系统可能会提示您输入服务名称。
    • IMAGE_URL:对容器映像的引用,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,则必须预先创建制品库 REPO_NAME。网址采用 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG 格式。
    • CUSTOM_SUBDOMAIN:您要附加的子网域。
  • 从源代码部署

    如需在 Cloud Run 服务的初始来源部署期间为其创建自定义网址子网域映射,请运行以下命令:

    gcloud beta run deploy SERVICE \
        --source=SOURCE \
        --domain=CUSTOM_SUBDOMAIN.cloud.run

    替换以下内容:

    • SERVICE:您要部署的 Cloud Run 服务的名称。您可以省略此参数,但如果省略它,系统可能会提示您输入服务名称。
    • SOURCE:要构建的来源的位置(例如,. 表示当前目录)。
    • CUSTOM_SUBDOMAIN:您要附加的子网域。

如果所请求的子网域已被 Google Cloud中的其他用户或服务使用,您会收到错误消息,并且必须选择唯一的目标。

将自定义网址映射到现有服务

您可以��用Google Cloud 控制台或 gcloud CLI 将自定义网址映射到现有的 Cloud Run 服务。

控制台

  1. 在 Google Cloud 控制台中,前往网域映射页面。

    前往“网域映射”

  2. 点击添加自定义网址。

  3. 在服务列表中,选择要映射到的服务。

  4. 输入您的自定义网址子网域。

  5. 点击继续。

如果您想添加多个自定义网址,请再次点击添加自定义网址,然后按照上述步骤操作。

gcloud

如需为现有服务创建自定义网址子网域映射,请运行以下命令:

gcloud beta run domain-mappings create \
    --service=SERVICE_NAME \
    --domain=CUSTOM_SUBDOMAIN.cloud.run

替换以下内容:

  • SERVICE_NAME:您要将自定义网址映射到的服务的名称。
  • CUSTOM_SUBDOMAIN:您要附加的子网域。

可选。如需使用 gcloud CLI 映射多个自定义网址,请针对每个自定义网址重复执行映射创建命令:

gcloud beta run domain-mappings create \
    --service=SERVICE_NAME \
    --domain=CUSTOM_SUBDOMAIN_1.cloud.run

gcloud beta run domain-mappings create \
    --service=SERVICE_NAME \
    --domain=CUSTOM_SUBDOMAIN_2.cloud.run

替换以下内容:

  • SERVICE_NAME:您要部署的服务的名称。
  • CUSTOM_SUBDOMAIN_1:要附加的第一个子网域。
  • CUSTOM_SUBDOMAIN_2:要附加的第二个子网域。

如果所请求的子网域已被 Google Cloud中的其他用户或服务使用,您会收到错误消息,并且必须选择唯一的目标子网域。

列出和查看自定义网址

您可以列出所有自定义网址,并查看您环境的映射详细信息。

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Run 页面。

    转到 Cloud Run

  2. 点击相应服务的名称。

  3. 转到网络标签页。

  4. 在端点标签下的自定义网域部分中,找到���附加的网址。

gcloud

如需列出项目中的所有自定义网址和网域映射,请运行以下命令:

gcloud beta run domain-mappings list

如需查看特定自定义网址子网域映射的详细信息,请运行以下命令:

gcloud beta run domain-mappings describe \
    --domain=CUSTOM_SUBDOMAIN.cloud.run

将 CUSTOM_SUBDOMAIN 替换为您要描述的子网域。

利用自定义受众群体确保安全

您可以将自定义受众群体附加到自定义网址,以限制访问权限。

gcloud beta run services update SERVICE_NAME \
    --add-custom-audiences=CUSTOM_SUBDOMAIN.cloud.run

替换以下内容:

  • SERVICE_NAME:服务的名称。
  • CUSTOM_SUBDOMAIN:充当自定义受众群体的子网域。

删除自定义网址

如果不再需要某个自定义网址映射,可以将其删除。

控制台

  1. 在 Google Cloud 控制台中,前往网域映射页面。

    前往“网域映射”

  2. 选中要删除的自定义网址旁边的复选框。

  3. 点击删除。

gcloud

如需从 Cloud Run 服务中移除自定义网址子网域映射,请运行以下命令:

gcloud beta run domain-mappings delete \
    --domain=CUSTOM_SUBDOMAIN.cloud.run

将 CUSTOM_SUBDOMAIN 替换为您要删除的子网域。

已知问题

  • 传播延迟时间:创建自定义网址后,可能需要几秒钟才能完全生效。在创建网址后立即访问该网址可能会导致临时路由错误。

  • 更新或移动自定义网址:没有用于自定义网址的直接更新命令。如需将附加的自定义网址从一项服务移动到另一项服务,您必须遵循删除并重新创建的流程。

    控制台

    1. 在 Google Cloud 控制台中,前往网域映射页面。

      前往“网域映射”

    2. 选中要移动的自定义网址旁边的复选框。

    3. 点击删除。

    4. 点击添加自定义网址。

    5. 在服务列表中,选择新的目标服务。

    6. 输入您之前声明的自定义网址子网域。

    7. 点击创建,将流量重定向到新服务。

    gcloud

    1. 从旧服务中删除现有映射:

      gcloud beta run domain-mappings delete \
          --domain=CUSTOM_SUBDOMAIN.cloud.run

      将 CUSTOM_SUBDOMAIN 替换为您之前声明的子网域。

    2. 回收网址并将其映射到新服务:

      gcloud beta run domain-mappings create \
          --service=NEW_SERVICE_NAME \
          --domain=CUSTOM_SUBDOMAIN.cloud.run

      替换以下内容:

      • NEW_SERVICE_NAME:您要将自定义网址迁移到的服务的名称。
      • CUSTOM_URL_DOMAIN:您要附加的子网域。

后续步骤