部署 API 代理

本页面适用于 ApigeeApigee Hybrid

查看 Apigee Edge 文档。

API 代理在部署之前无法调用。创建新的 API 代理或对现有代理进行更改后,您可以将其部署到集群。

如果您在未更改基本路径的情况下创建了 API 代理的新修订版本,然后将其部署到已部署它的环境,则先前修订版本会被取消部署,并部署新的修订版本。

部署 API 代理

按照以下各部分中的说明部署 API 代理修订版本。

新版代理编辑器

如需在 Apigee 界面中部署 API 代理,请执行以下操作:

  1. 如果您使用的是 Cloud 控制台中的 Apigee 界面:选择代理开发 > API 代理

    如果您使用的是经典版 Apigee 界面:请选择开发 > API 代理,然后在代理窗格中,选择代理的环境。

  2. 点击您要部署的 API 代理。 界面随即会显示概览页面:

    API 代理详细信息,包括每个环境的部署状态、代理端点详细信息和目标端点详细信息。

  3. 如需部署更改,请先点击部署以显示部署对话框:

    在 Proxy Explorer 中选择的目标端点。

  4. 输入以下内容:
    • 修订版本:您要部署的代理的修订版本号。
    • 环境:要在其中部署代理的环境。
    • 服务账号(可选):代理的服务账号
  5. 点击部署

界面即会开始部署所选修订版本。

部署代理后,部署部分中的状态列会显示一个绿色图标,表明已部署代理的修订版本 1。

已部署代理状态图标

经典版代理编辑器

如需在 Apigee 界面中部署 API 代理,请执行以下操作:

  1. 登录 Apigee 界面
  2. 依次选择开发 > API 代理

    界面会显示 API 代理及其部署状态的列表:

    此时会显示一个 API 代理列表,其中包括名称、状态、过去 24 小时内的流量、作者和上次修改时间。

  3. 环境下拉列表中,选择要将 API 代理部署到的环境。
  4. 点击您要部署的 API 代理。

    界面显示 API 代理概览标签页。此视图包括部署代理端点目标端点部分:

    API 代理详细信息,包括每个环境的部署状态、代理端点详细信息和目标端点详细信息。

    如果这是您之前未部署的新 API 代理(或您已取消部署的 API 代理),修订版本列将显示未部署

  5. 修订版本列中,展开下拉选择器。

    如果这是之前从未部署过的新 API 代理,则下拉列表仅显示 1取消部署

    部署代理的第一个修订版本。

    对于具有多个修订版本的 API 代理,下拉列表会列出您可以选择的所有修订版本以及取消部署

    API 代理详细信息的部署部分,并为测试环境选择下拉菜单。

  6. 从下拉列表中选择要部署的修订版本。

    界面会提示您确认部署:

    API 代理详细信息的部署部分,并为生产环境选择修订版本 3。

  7. 点击部署

    界面即会开始部署所选修订版本。

    将光标放到“状态”列中的详细信息链接上,以查看部署的状态。如果有一个或多个修订版本已部署,则可以监控其取消部署的状态,如下图所示。如需了解详情,请参阅零停机时间部署

    部署 my-new-proxy 以测试环境确认

    部署完成后,状态详细信息表明修订版本已完全部署:

    显示修订版本 18 已部署 75% 和修订版本 17 已部署 25% 的部署状态

    请注意,部署不是即时过程。Apigee 的“最终一致性”部署模型意味着在短时间内将新部署发布到集群,而不会立即生效。如需了解详情,请参阅关于部署

    如需了解状态指标的含义以及如何检查状态,请参阅查看部署状态

    显示修订版本 18 已完全部署的部署状态

或者,您也可以在开发标签页中部署您正在修改的当前修订版本。执行此操作后,Apigee 会为您创建一个新修订版本。

  1. 点击部署到: env_name 下拉列表

    使用部署下拉列表,您可以将当前修订版本部署到每个环境或从中取消部署

    界面会显示环境列表。在修订版本列中,界面会列出当前部署的修订版本(如果未部署修订版本,则显示“‑‑”)。

  2. 点击部署 revision 以部署您最近修改的修订版本。

    界面会提示您确认部署。

  3. 点击部署

    界面即会开始部署所选修订版本。

Apigee API

以下部分提供了使用 Apigee API 部署 API 代理修订版本并列出为您的组织的部署的示例。

另请参阅查看部署状态

在部署之前创建部署更改报告

在同一环境组的多个环境中部署代理可能会导致未定义的行为。要确定是否发生这种情况,您可以使用 generateDeployChangeReport 方法生成报告,如下所示:

curl "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/apis/$API/deployments:generateDeployChangeReport" \
-X POST \
-H "Authorization: Bearer $TOKEN"

这会返回一份部署更改报告;如果要部署的代理中的基本路径由于现有部署已在使用该基本路径而不会接收流量,则该报告会向您发出警告。

使用 API 部署 API 代理修订版本

如需部署 API 代理修订版本,请使用以下 API 调用:

curl "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/apis/$API/revisions/$REV/deployments" \
  -X POST \
  -H "Authorization: Bearer $TOKEN"

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

下面显示了响应输出的示例。在此示例中,将 helloworld API 代理的修订版本 1 成功部署到 test 环境:

{
  "environment": "test",
  "apiProxy": "helloworld",
  "revision": "1",
  "deployStartTime": "1559149080457"
}

如需了解详情,请参阅部署 API 代理修订版本 API

使用 API 列出部署

如需列出您的组织的所有 API 代理和共享流,请输入以下 API 调用:

curl "https://apigee.googleapis.com/v1/organizations/$ORG/deployments" \
  -X GET \
  -H "Authorization: Bearer $TOKEN"

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

以下提供了一个响应示例。本示例部署了三个 API 代理,包括上一部分中部署的 helloworld

{
  "deployments": [
    {
      "environment": "test",
      "apiProxy": "helloworld",
      "revision": "1",
      "deployStartTime": "1559149080457"
    },
    {
      "environment": "test",
      "apiProxy": "weather",
      "revision": "1",
      "deployStartTime": "1558620435217"
    },
    {
      "environment": "test",
      "apiProxy": "testproxy",
      "revision": "2",
      "deployStartTime": "1558635113086"
    }
  ]
}

gcloud

以下部分提供了使用 gcloud apigee CLI 命令部署 API 代理修订版本并列出组织的部署的示例。

另请参阅查看部署状态

如需详细了解示例中使用的环境变量,请参阅搭配使用 gcloud 与 Apigee 入门

使用 gcloud CLI 部署 API 代理修订版本

如需部署 API 代理修订版本,请使用以下 gcloud 命令:

gcloud apigee apis deploy $REV --api=$API --environment=$ENV

下面显示了响应输出的示例。在此示例中,将 helloworld API 代理的修订版本 1 成功部署到 test 环境:

Using Apigee organization 'my-org'
apiProxy: helloworld
deployStartTime: '1598032332802'
environment: test
revision: '1'

如需了解详情,请参阅部署 API 代理修订版本 CLI

使用 gcloud CLI 列出部署

如需列出您的组织的 API 代理和共享流的所有部署,请使用以下 gcloud 命令:

gcloud apigee deployments list

以下提供了一个响应示例。本示例部署了三个 API 代理,包括上一部分中部署的 helloworld

Using Apigee organization `my-org`
 - apiProxy: helloworld
   deployStartTime: 1598032332802
   environment: test
   revision: 1
 - apiProxy: weather
   deployStartTime: 1558620435217
   environment: test
   revision: 1
 - apiProxy: testproxy
   deployStartTime: 1558635113086
   environment: test
   revision: 2

如需了解详情,请参阅列出部署 CLI

问题排查

如果您无法部署 API 代理,请检查是否存在以下常见场景之一。

环境组的命名限制

如果环境组的名称不符合命名限制的要求,则系统不会部署代理。在某些情况下,您可以创建环境组并向其添加环境,并且可以不满足这些限制的要求;但是,这会导致系统无法部署代理。

如需了解命名准则和限制,请参阅创建环境组

利用之前使用的环境名称创建的环境

如果您创建的环境与先前删除的环境同名,则系统不会部署代理。例如,如果您在先前创建并删除 prod-1 环境后又创建了名为 prod-1 的环境,则需要移除该环境。您可以使用以下步骤来解决此问题:

  1. 使用 APIprod-1 环境与您的环境组分离。
  2. 使用 API 删除 prod-1 环境。
  3. 创建一个新环境。例如 prod-2
  4. 使用 API 将新的 prod-2 环境附加到您的环境组。