部署 Endpoints 配置

请在配置 .proto 文件和 gRPC API 配置文件后部署它们,以使 Cloud Endpoints 具备管理 API 所需的信息。如需部署 Endpoints 配置,请使用 gcloud endpoints services deploy 命令。此命令会使用 Service Infrastructure,这是 Google 的基础服务平台,供 Endpoints 及其他服务用来创建并管理 API 和服务。本页面介绍如何将配置文件部署到 Endpoints。

前提条件

首先,本页假定您已完成以下操作:

准备 Cloud SDK 以进行部署

您可以使用 gcloud 命令行工具来部署配置。如需详细了解相关命令,请参阅 gcloud 参考

如需准备部署,请执行以下操作:

  1. 安装并初始化 Cloud SDK
  2. 更新 Cloud SDK:
    gcloud components update
    
  3. 确保 Cloud SDK 有权访问您的数据和服务:
    gcloud auth login
    

    您的浏览器会打开一个新标签页,并提示您选择一个帐号。

  4. 设置默认项目。请将 [YOUR-PROJECT-ID] 替换为您的 GCP 项目 ID
    gcloud config set project [YOUR-PROJECT-ID]
    
  5. 如果您要将 API 后端部署到 Kubernetes 或 Kubernetes Engine,请运行以下命令,以获取用于应用默认凭据的新用户凭据。需要用户凭据才能授权 kubectl
    gcloud auth application-default login
    浏览器会打开一个新的标签页,并提示您选择帐号。

部署配置文件

  1. 确保您位于 api_descriptor.pbapi_config.yaml 文件所在的目录中。
  2. 确认 gcloud 命令行工具当前使用的默认项目是您要向其部署 Endpoints 配置的 Google Cloud 项目。验证从以下命令返回的项目 ID,以确保不会在错误的项目中创建服务。
    gcloud config list project
    

    如果您需要更改默认项目,请运行以下命令:

    gcloud config set project YOUR_PROJECT_ID
    
  3. 使用 gcloud 命令行工具部署 proto descriptor 文件和配置文件:
    gcloud endpoints services deploy api_descriptor.pb api_config.yaml
    

    在创建和配置服务时,Service Management 会向终端输出信息。部署完成后,系统将显示如下所示的消息:

    Service Configuration [CONFIG_ID] uploaded for service [bookstore.endpoints.example-project.cloud.goog]

    CONFIG_ID 是部署创建的唯一 Endpoints 服务配置 ID。例如:

    Service Configuration [2017-02-13r0] uploaded for service [bookstore.endpoints.example-project.cloud.goog]
    

    在前面的示例中,2017-02-13r0 是服务配置 ID,bookstore.endpoints.example-project.cloud.goog 是服务名称。服务配置 ID 由日期戳后跟一个修订版本号组成。如果您在同一天再次部署 Endpoints 配置,服务配置 ID 中的修订版本号将递增。

如果您的服务配置位于多个 YAML 文件中,则可以将这些文件全部传递给 deploy 命令。例如,Bookstore 的基本配置位于 api_config.yaml 中,但您也可以通过部署 api_config_http.yaml 为该服务启用 HTTP 转码,该文件具有此功能的其他配置:

gcloud endpoints services deploy api_descriptor.pb api_config.yaml api_config_http.yaml

请注意,如果您的 YAML 文件中的值存在冲突,则最后指定的文件中的值将覆盖其他文件中的值。如需详细了解 Endpoints 如何处理多个 YAML 文件的合并,请参阅配置 gRPC 服务

如果收到错误消息,请参阅排查 Endpoints 配置部署问题,以了解如何排查错误。

重新部署

只要您更改了 .proto 或服务配置 YAML 文件中的内容,就必须重新进行部署,以确保 Extensible Service Proxy (ESP) 获得您的 API 服务配置的最新版本。如果您之前部署了 ESP 并将 rollout 选项设置为 managed,则无需重启或重新部署 ESP。rollout=managed 选项将 ESP 配置为使用最新部署的服务配置。指定此选项后,在部署新的服务配置后,ESP 最多会在 5 分钟内检测到更改并自动开始使用该服务配置。建议您指定此选项,而非让 ESP 使用特定的配置 ID。

在完成初始的 Endpoints 配置部署之后,您可以向用户、服务帐号或组授予一个角色,使他们可以重新部署 Endpoints 配置。如需了解详情,请参阅授予和撤消对 API 的访问权限

后续步骤