管理服务

本页面介绍如何创建服务以及查看服务的相关信息。

每项服务都有一个唯一的永久性 run.app 网址,该网址在您向其部署新修订版本时不会随着时间更改。在 Cloud Run 上部署的函数也会被视为服务,并分配有 run.app 地址。服务的永久网域由服务名称和哈希组成。

所需的角色

如需获得管理 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. 在 Google Cloud 控制台中,前往 Cloud Run:

    转到 Cloud Run

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

    服务列表

gcloud

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

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 控制台查看项目中可用的函数列表:

控制台

如需在服务列表中过滤函数,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Cloud Run:

    转到 Cloud Run

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

    服务列表

  3. 选择过滤服务 > 部署类型 > 函数

    如果您之前使用 Cloud Functions v2 API 部署了函数,则部署者列会显示 Cloud Functions

复制服务

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

控制台

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

  1. 在 Google Cloud 控制台中,前往 Cloud Run:

    转到 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. 在 Google Cloud 控制台中,前往 Cloud Run:

    转到 Cloud Run

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

gcloud

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

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

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

gcloud run services describe SERVICE --region REGION --format yaml

您需要进行如下替换:

  • SERVICE 替换为相应服务的名称。
  • REGION 替换为服务的 Google Cloud 区域。

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

gcloud run services describe SERVICE --region REGION --format export

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

gcloud run services describe SERVICE --region REGION --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 角色。

停用服务后,系统会允许所有当前正在处理的请求完成。但是,对服务网址发出的任何后续请求都会失败并显示 Service unavailableService disabled 错误。

由于仅因流量标�����处于有效状态的服务修订版本不会受到影响,因为这些修订版本不会被停用。

如需停用服务,请将扩缩设置为零。您可以使用 Google Cloud 控制台、Google Cloud CLI、YAML 文件或 API 停用服务:

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Run:

    转到 Cloud Run

  2. 点击您要停用的服务以显示其详细信息面板,然后点击详细信息面板右上角的扩缩旁边的笔图标。

  3. 找到修改扩缩表单,然后选择手动扩缩

    图片

    在标记为实例数字段中,输入值 0(零)。

  4. 点击保存

gcloud

如需停用服务,请使用以下命令将扩缩设置为零:

gcloud beta run services update SERVICE --scaling=0

SERVICE 替换为服务的名称。

YAML

  1. 下载服务的 YAML 配置

    gcloud run services describe SERVICE --format export > service.yaml
  2. manualInstanceCount 属性设为零 (0):

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
      run.googleapis.com/launch-stage: BETA
      run.googleapis.com/scalingMode: manual
      run.googleapis.com/manualInstanceCount: `0`

    SERVICE 替换为您的 Cloud Run 服务的名称。

  3. 使用以下命令创建或更新服务:

    gcloud run services replace service.yaml

REST API

如需停用服务,请向 Cloud Run Admin API service 端点发送 PATCH HTTP 请求。

例如,使用 curl

    curl -H "Content-Type: application/json" \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -X PATCH \
    -d '{"launchStage":"BETA","scaling":{"manualInstanceCount":0 }}' \
    https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE?update_mask=launchStage,scaling.manualInstanceCount

您需要进行如下替换:

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

删除现有服务

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

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

控制台

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

  1. 在 Google Cloud 控制台中,前往 Cloud Run:

    转到 Cloud Run

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

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

gcloud

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

gcloud run services delete SERVICE --region REGION

您需要进行如下替换

  • SERVICE 替换为您的服务名称。
  • REGION 替换为服务的 Google Cloud 区域。

客户端库

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

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。