关于环境和环境组

本页面适用于 ApigeeApigee Hybrid

查看 Apigee Edge 文档。

本部分介绍环境和环境组。

概览

Apigee 环境是组织内一个用于创建部署 API 代理的软件环境。您必须先将 API 代理部署到环境,然后才能对其进行访问。您可以将 API 代理部署到单个环境或多个环境。

每个环境最多可有 60 个部署,其中最多有 50 个可以是代理部署。

环境组(有时在 Apigee API 中称为“envgroup”)是定义请求路由到各个环境的方式的基本机制。您可以在环境组(而不是单独的环境)中定义主机名,Apigee 会使用这些主机名定义来将请求路由到环境组中的环境。

环境必须是至少一个环境组的成员,才能访问其中部署的代理。换言之,您必须先将环境分配给组,然后才能使用环境。

将环境逻辑分组为环境组具有以下优势:

  • 集中主机名管理:环境组提供了管理主机名的集中位置。
  • 聚合数据分析:使用环境组,您可以通过一次性查看整个环境组(而不是单个环境)的报告来分析错误。
  • 避免冲突:通过对环境进行分组,可以确保所部署代理的基本路径在同一主机名下。

支持的部署类型

Apigee 支持在环境中使用以下部署类型:

类型 说明
代理 在 Apigee 开发环境中开发和测试 API 代理,然后将其部署到 Apigee 集成测试和生产环境。请参阅部署 API 代理
归档 使用 Apigee in VS Code 开发和测试可编程 API 代理

归档部署的禁止操作的总结

在 Apigee 环境中启用归档部署时,系统将阻止您在环境中执行以下操作以防冲突:

  • 在 Apigee 界面中,您无法查看、确认部署状态或管理您的归档部署(如部署 API 代理所述),也无法使用调试界面(如使用调试所述)。如需解决此问题,您可以使用 gcloud 或 API 列出环境中的所有归档部署,并使用 Debug API
  • 无法使用 Apigee 界面、API 或 gcloud 创建、更新或删除资源文件或目标服务器。
  • 目前,不支持使用服务账号进行 Google 身份验证。

如果您尝试执行任何上述被阻止的操作,操作将失败并显示以下错误消息:

FAILED_PRECONDITION

代理部署单元

代理部署单元会统计各区域的环境中部署的代理和共享流数量。

以下是部署单元类型:

  • 标准代理部署单元会统计当前部署的符合标准代理条件的代理数量。
  • 可扩展代理部署单元会统计当前部署的符合可扩展代理条件的代理数量。
  • 共享流部署单元会统计已部署的共享流的数量。

您的使用量可能需要遵循部署配额,即一次最多可以使用多少部署单元。查看您的使用权(随用随付2024 年订阅),了解详情。

环境类型

对于随用随付用户,请在创建环境时选择环境类型:基础中间综合。与环境相关的特性、功能和费用取决于环境类型。如需了解详情,请参阅随用随付环境类型随用随付使用权

对于订阅方案,您的环境类型始终为“综合”,因此您无需了解环境类型。

转发代理

Apigee 支持将流量转发到指定的 URI。此功能适用于环境级别,可用于在代理中初始处理后将流量定向到互联网。

配置环境中的代理进程所访问的任何请求政策(请参阅转发代理功能支持),然后使用 HTTP 转发到新的 URI。

对环境的转发代理设置所做的更改会立即仅对新请求有效。已处理完毕的请求,采用接收请求时所用的设置已完成。

如需了解如何配置转发代理,请参阅在环境中配置转发代理

转发代理功能支持

并非所有正式版代理功能都具备与转发代理相同的可用性或适用性。

Apigee 目前不支持使用转发代理的基本身份验证,但在 Apigee Hybrid 中除外。

下表显示了对其他功能的支持:

功能或政策 是否支持/适用于转发代理?
目标端点
HTTP 健康检查
服务标注
通过 JavaScript 进行 HTTP 调用
集成目标
通过本地环回代理链
发布消息
Cloud Logging
与同步器通信
通过 Syslog 记录消息

转发代理限制

目前,转发代理不支持通过外部受众提供的 GoogleToken。

要点

下表列出了关于环境、组织和环境组的要点:

元素 规则
单位
  • 可以包含多个环境组
  • 必须至少有一个环境组
环境
  • 必须至少属于一个环境组
  • 可以属于多个组
  • 与同一组中的所有其他环境共享主机名
  • 可用于将流量转发到指定的 URI
环境类型
  • 确定适用于该环境的功能以及在该环境中可用的功能
  • 确定环境的价格

(请参阅环境类型。)

环境组
  • 可以有多个主机名
  • 包含一个或多个环境
  • 分配给组的主机名必须是唯一的(不能被其他组使用)

示例

以下各部分介绍环境组内环境的常见结构。

一个环境组和一个环境

最简单的结构是一个环境组中有一个环境。如果组织当前正在评估产品,或者尚未设置测试或分析基础架构,也尚未在生产环境中部署任何代理,则通常会使用这一结构。

一个环境组包含多个环境

一个环境组可以包含多个环境。以下示例有一个环境组 prod-group,它包含三个环境:cart-prodcatalog-prodpayment-prod

在环境组级别定义的主机名。

环境组具有单个主机名 example.com。您可以使用主机名将请求路由到部署在任何环境中的代理。请注意,主机名是在环境组级别定义的:它们不会路由到特定环境。

请参阅使用环境组,了解如何创建此环境组。

仅限路由到单个环境

在前面的示例中,请求可以通过单个主机名路由到所有三个环境中的代理。如果要仅限访问单个环境(假设 catalog-prod)中的代理,您需要创建另一个仅包含该环境 (catalog-prod) 的环境组。之后,为该环境组定义的主机名将只能访问该环境 (catalog-prod)。

在下面的示例中,环境组 catalog-prod-group 的主机名为 catalog.example.com,它只能将请求路由到 catalog-prod 环境中的代理。

仅包含单个环境的环境组。

 

准备好创建组了吗?

打开控制台

 

 

详细了解环境:

继续阅读

 

 

详细了解环境组:

继续阅读

 

路由和基本路径

在简单配置中,向已部署的 API 代理发出的请求由主机名、基本路径和 API 资源的名称组成;例如:

https://www.example.com/shopping/cart/addItem
        |_____________| |___________| |_____|
               |             |           |
            hostname      basepath     resource

您可以为环境组定义主机名,以便多个环境可以共享主机名。基本路径和 API 资源是在 API 代理中定义的。

如需详细了解基本路径和 API 资源,请从了解路由开始。此外,请参阅流配置参考流变量参考,以更好地了解各部分如何协同作用。

主机名

创建环境组时,您可以将一个或多个主机名附加到该组。例如,您可能具有以下环境组,每个环境组都有各自的主机名:

环境组名称
(环境)
prod-group

(catalog-prod
cart-prod
pymnt-prod)
dev-group

(dev-env)
test-group

(test-env)
主机名 catalog.example.com
payment.example.com
dev.example.com test.example.com

创建代理时为代理上定义基本路径。

将代理部署到组中的环境时,主机名、基本路径和资源名称共同定义向该代理发起的 API 请求的端点。

您可以为一个环境组定义多个主机名。它们都可用于调用部署到组中任意环境的任何代理。例如,如果为同一环境组定义了主机名 catalog.example.compayment.example.comcatalog.example.com/proxy1payment.example.com/proxy1 都将调用 proxy1 资源。

路由示例

例如:

  • prod-group 环境组包含以下环境:

    • catalog-prod
    • cart-prod
    • pymnt-prod
  • prod-group 定义了以下主机名:

    • catalog.example.com
    • payment.example.com
  • 以下代理部署到以下环境中:

    • catalog-prod 中的 catalog 代理,基本路径为 /catalog
    • cart-prod 中的 cart 代理,基本路径为 /catalog/cart
    • pymnt-prod 中的 payment 代理,基本路径为 /payment

这将创建以下端点:

  • catalog.example.com/catalog 路由到 catalog-prod 环境中的 catalog 代理。
  • catalog.example.com/catalog/cart 路由到 cart-prod 环境中的 cart 代理。
  • payment.example.com/payment 路由到 pymnt-prod 环境中的 payment 代理。

以下示例显示了根据主机名和基本路径,请求被路由到部署到组中各环境的不同代理:

根据主机名和基本路径,API 请求被路由到组中的不同环境

共享环境和路由

一个环境可以属于多个环境组。如果将代理部署到此类环境,则代理将拥有多个地址,每个地址对应一个环境所属的环境组。如果客户为多个合作伙伴使用通配符证书(例如 *.example.com),则这种做法非常有用。

例如:

  • shared-env 属于两个环境组:
    • 主机别名为 api.partner-1.compartner-1
    • 主机别名为 api.partner-2.compartner-2
  • 代理 foo 部署到基本路径为 /fooshared-env。由于两个环境组共享 shared-env,因此 foo 有两个地址:
    • api.partner-1.com/foo
    • api.partner-2.com/foo

请注意,两个主机名都会路由到同一环境。这样每个环境组都会获得一个唯一域名。对于 Apigee Hybrid,此场景可以为每个合作伙伴使用 mTLS 和不同的证书。

环境范围简介

组织可为一些 Apigee 功能提供范围。例如,键值对映射 (KVM) 数据可以在组织级别使用,这意味着部署到该组织中的任何环境的 API 代理都可以访问相同的 KVM 数据。

同样地,某些功能可以限定为组织内的环境或环境组使用。例如,Apigee Analytics 数据按组织、环境和(最终)环境组的组合进行分区。

注意事项

对环境的每项部署都有可能影响该环境所附加到的每个环境组的流量路由。添加新的基本路径后,它们可能会开始捕获全新流量,也可能开始捕获现有部署已在处理的部分现有流量。

同样,移除基本路径后,它们可能对应于不再接收任何流量的端点,或者可能导致现有流量重新路由到其他代理。流量被重新路由时,可能被传送到同一环境中的某个代理;多个环境共享同一个环境组时,也可能被传送到不同环境中的某个代理。

其他资源

以下信息介绍如何管理环境和环境组: