管理服务

本页面介绍如何创建服务以及查看服务的相关信息。服务是 Cloud Run 的主要资源。每项服务都有一个唯一的永久性网址,该网址在您向其部署新修订版本时不会随着时间改变。

服务的永久网域由服务名称和哈希组成。

所需的角色

如需获得管理 Cloud Run 服务和修订版本所需的权限,请让管理员向您授予 Cloud Run 服务的 Cloud Run Developer (roles/run.developer) IAM 角色。

如需查看与 Cloud Run 关联的 IAM 角色和权限的列表,请参阅 Cloud Run IAM 角色Cloud Run IAM 权限。如果您的 Cloud Run 服务与 Google Cloud API(例如 Cloud 客户端库)进行交互,请参阅服务身份配置指南。如需详细了解如何授予角色,请参阅部署权限管理访问权限

创建 Service

首次部署容器映像会创建新的服务。如需了解更多说明,请参阅部署新的服务部分。

查看项目中的服务列表

您可以使用 Google Cloud 控制台或 gcloud 命令行查看项目中的可用服务列表:

控制台

要查看服务列表,请按如下所述操作:

  1. 转到 Cloud Run

  2. 检查针对您的项目显示的服务列表:

    服务列表

命令行

要列出项目中的各项服务,请运行以下命令:

gcloud run services list

请注意,每项服务都有一个关联网址。

您可以按服务定义的属性(例如已分配的标签)过滤此列表。

Cloud Code

如需使用 Cloud Code 查看服务列表,请阅读适用于 IntelliJVisual Studio Code 的 Cloud Run Explorer 指南。

客户端库

如需通过代码查看服务列表,请使用以下语言:

REST API

如需查看项目中的服务列表,请向 Cloud Run Admin API service 端点发送 GET HTTP 请求。

例如,使用 curl

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X GET \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services

您需要在其中:

  • ACCESS_TOKEN 替换为具有查看服务的 IAM 权限的账号的有效访问令牌。例如,如果您已登录 gcloud,则可以使用 gcloud auth print-access-token 检索访问令牌。在 Cloud Run 容器实例中,您可以使用容器实例元数据服务器检索访问令牌。
  • REGION 替换为该服务的 Google Cloud 区域。
  • PROJECT-ID 替换为 Google Cloud 项目 ID。

复制服务

您可以使用 Google Cloud 控制台或 YAML 创建现有服务的副本。您可以更改副本中的任何内容,包括名称和区域。

控制台

要复制服务,请执行以下操作:

  1. 转到 Cloud Run

  2. 从显示的项目服务列表中选择要复制的服务:

    服务列表

    1. 点击复制

    2. 在服务复制页面中,设置或更改您要更改的任何值(例如区域等)。如果您保留相同的区域,则必须为服务提供新名称。

    3. 点击创建以创建副本并使用新服务名称进行部署。

YAML

  1. 如果您要创建新的服务,请跳过此步骤。如果您要更新现有服务,请下载其 YAML 配置

    gcloud run services describe SERVICE --format export > service.yaml
  2. 对服务进行任何所需的配置更改。

     apiVersion: serving.knative.dev/v1
     kind: Service
     metadata:
       annotations:
         ...
       name: SERVICE
       ...
     spec:
       template:
         metadata:
           annotations:
           ...
           name: REVISION
    
    • 如果您不将副本部署到其他区域,请将 SERVICE 替换为您要用于副本的名称。如果您要将副本部署到其他地区,则可以使用旧名称。
    • REVISION 替换为新的修订版本名称或者将其删除(如果存在)。如果您提供新的修订版本名称,则该名称必须满足以下条件:
      • 开头为 SERVICE-
      • 仅包含小写字母、数字和 -
      • 不以 - 结尾
      • 不超过 63 个字符
  3. 使用以下命令复制服务:

    gcloud run services replace service.yaml

    使用 --region 标志将副本部署到其他区域。

查看服务的更多相关详细信息

要查看服务的更多相关详细信息,请按如下所述操作:

控制台

要查看服务的详细信息,请执行以下操作:

  1. 转到 Cloud Run

  2. 在针对您的项目显示的服务列表中,点击所需服务,以打开服务详情视图。

命令行

要查看服务的相关详细信息,请运行以下命令:

gcloud run services describe SERVICE
SERVICE 替换为相应服务的名称。

您可以使用 --format 标志来设置输出的格式。例如,作为 YAML:

gcloud run services describe SERVICE --format yaml

您可以使用 --format export 导出为 YAML(不带自动生成的标签或状态):

gcloud run services describe SERVICE --format export

您还可以使用 --format 标志获取服务的网址:

gcloud run services describe SERVICE --format='value(status.url)'

Cloud Code

如需使用 Cloud Code 查看服务详情,请阅读适用于 IntelliJVisual Studio Code 的 Cloud Run Explorer 指南。

如需详细了解服务修订版本,请参阅管理修订版本

客户端库

如需通过代码查看服务的相关详细信息,请使用以下语言:

REST API

如需查看服务的相关详细信息,请向 Cloud Run Admin API service 端点发送 GET HTTP 请求。

例如,使用 curl

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X GET \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE-NAME

您需要在其中:

  • ACCESS_TOKEN 替换为具有查看服务详情的 IAM 权限的账号的有效访问令牌。例如,如果您已登录 gcloud,则可以使用 gcloud auth print-access-token 检索访问令牌。在 Cloud Run 容器实例中,您可以使用容器实例元数据服务器检索访问令牌。
  • SERVICE-NAME 替换为相应服务的名称。
  • REGION 替换为该服务的 Google Cloud 区域。
  • PROJECT-ID 替换为 Google Cloud 项目 ID。

停用现有服务

如需获得停用现有 Cloud Run 服务和修订版本所需的权限,请让管理员向您授予项目的 Cloud Run Admin (roles/run.admin) IAM 角色。

Cloud Run 无法直接使服务停止处理流量,但您可以通过撤消某些身份调用服务的权限来实现类似的结果。值得注意的是,如果您的服务是公开服务,则应从 Cloud Run Invoker 角色 (roles/run.invoker) 中移除 allUsers

删除现有服务

以下注意事项适用于删除服务:

  • 删除一项服务会删除与之相关的所有资源,包括此服务的所有修订版本(无论它们是否正在处理流量)。
  • 删除服务不会自动从 Container Registry 中移除容器映像。要从 Container Registry 中删除已删除的修订版本所使用的容器映像,请参阅删除映像
  • 删除具有一个或多个 Eventarc 触发器的服务并不会自动删除其中的触发器。如需删除触发器,请参阅管理触发器
  • 删除后,服务在 Google Cloud 控制台和命令行界面中仍然可见,直到删除完全完成为止。但是,您无法更新该服务。
  • 删除服务属于永久性操作,也就是说,此操作无法撤消或恢复。但是,如果您在删除服务后在同一区域内部署具有相同名称的新服务,则该新服务将使用相同的端点网址。

控制台

要删除服务,请执行以下操作:

  1. 转到 Cloud Run

  2. 在服务列表中找到要删除的服务,然后点击该服务对应的复选框以将其选中。

  3. 点击删除。这将删除服务的所有修订版本。

命令行

要删除服务,请使用以下命令:

gcloud run services delete [SERVICE]

[SERVICE] 替换为服务的名称。

客户端库

如需通过代码删除服务,请使用以下语言:

REST API

如需删除服务,请向 Cloud Run Admin API service 端点发送 DELETE HTTP 请求。

例如,使用 curl

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X DELETE \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE-NAME

您需要在其中:

  • ACCESS_TOKEN 替换为具有删除服务的 IAM 权限的账号的有效访问令牌。例如,如果您已登录 gcloud,则可以使用 gcloud auth print-access-token 检索访问令牌。在 Cloud Run 容器实例中,您可以使用容器实例元数据服务器检索访问令牌。
  • SERVICE-NAME 替换为相应服务的名称。
  • REGION 替换为该服务的 Google Cloud 区域。
  • PROJECT-ID 替换为 Google Cloud 项目 ID。