本页面适用于 Apigee 和 Apigee Hybrid。
查看 Apigee Edge 文档。
本部分介绍环境和环境组。
概览
Apigee 环境是组织内一个用于创建和部署 API 代理的软件环境。您必须先将 API 代理部署到环境,然后才能对其进行访问。您可以将 API 代理部署到单个环境或多个环境。
每个环境在可以部署到其中的 API 代理、共享流和其他资源的数量方面会受到限制。这些限制因使用相应环境的 Apigee 组织类型(订阅、随用随付或混合)而异。如需了解详情,请参阅限制文档。
环境组(有时在 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
代理部署单元
代理部署单元会统计各区域的环境中部署的代理和共享流数量。
以下是部署单元类型:
您的使用量可能需要遵循部署配额,即一次最多可以使用多少部署单元。查看您的使用权(Pay-as-you-go或 2024 年订阅),了解详情。如需了解系统限制,请参阅每个实例的代理部署单元数上限。
如需详细了解如何查看您的组织的代理部署单元用量和部署配额详细信息,请参阅查看代理部署用量。
环境类型
对于随用随付用户,请在创建环境时选择环境类型:基础、中间或综合。与环境相关的特性、功能和费用取决于环境类型。如需了解详情,请参阅随用随付环境类型和随用随付使用权。
对于订阅方案,您的环境类型始终为“综合”,因此您无需了解环境类型。
转发代理
Apigee 支持将流量转发到指定的 URI。此功能适用于环境级别,可用于在代理中初始处理后将流量定向到互联网。
配置环境中的代理进程所访问的任何请求政策(请参阅转发代理功能支持),然后使用 HTTP 转发到新的 URI。
对环境的转发代理设置所做的更改会立即仅对新请求有效。已处理完毕的请求,采用接收请求时所用的设置已完成。
如需了解如何配置转发代理,请参阅在环境中配置转发代理。
转发代理功能支持
并非所有正式版代理功能都具备与转发代理相同的可用性或适用性。
Apigee 目前不支持使用转发代理的基本身份验证,但在 Apigee Hybrid 中除外。
下表显示了对其他功能的支持:
功能或政策 | 是否支持/适用于转发代理? |
目标端点 | 是 |
HTTP 健康检查 | 是 |
服务标注 | 是 |
通过 JavaScript 进行 HTTP 调用 | 是 |
集成目标 | 是 |
通过本地环回代理链 | 否 |
发布消息 | 否 |
Cloud Logging | 否 |
与同步器通信 | 否 |
通过 Syslog 记录消息 | 否 |
转发代理限制
目前,转发代理不支持通过外部受众提供的 GoogleToken。
要点
下表列出了关于环境、组织和环境组的要点:
元素 | 规则 |
---|---|
组织 |
|
环境 |
|
环境类型 |
(请参阅环境类型。) |
环境组 |
|
示例
以下各部分介绍环境组内环境的常见结构。
一个环境组和一个环境
最简单的结构是一个环境组中有一个环境。如果组织当前正在评估产品,或者尚未设置测试或分析基础架构,也尚未在生产环境中部署任何代理,则通常会使用这一结构。
一个环境组包含多个环境
一个环境组可以包含多个环境。以下示例有一个环境组 prod-group,它包含三个环境:cart-prod、catalog-prod 和 payment-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.com
和 payment.example.com
,catalog.example.com/proxy1
和 payment.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
代理。
以下示例显示了根据主机名和基本路径,请求被路由到部署到组中各环境的不同代理:
共享环境和路由
一个环境可以属于多个环境组。如果将代理部署到此类环境,则代理将拥有多个地址,每个地址对应一个环境所属的环境组。如果客户为多个合作伙伴使用通配符证书(例如 *.example.com),则这种做法非常有用。
例如:
shared-env
属于两个环境组:- 主机别名为
api.partner-1.com
的partner-1
- 主机别名为
api.partner-2.com
的partner-2
- 主机别名为
- 代理
foo
部署到基本路径为/foo
的shared-env
。由于两个环境组共享shared-env
,因此foo
有两个地址:api.partner-1.com/foo
api.partner-2.com/foo
请注意,两个主机名都会路由到同一环境。这样每个环境组都会获得一个唯一域名。对于 Apigee Hybrid,此场景可以为每个合作伙伴使用 mTLS 和不同的证书。
环境范围简介
组织可为一些 Apigee 功能提供范围。例如,键值对映射 (KVM) 数据可以在组织级别使用,这意味着部署到该组织中的任何环境的 API 代理都可以访问相同的 KVM 数据。
同样地,某些功能可以限定为组织内的环境或环境组使用。例如,Apigee Analytics 数据按组织、环境和(最终)环境组的组合进行分区。
注意事项
对环境的每项部署都有可能影响该环境所附加到的每个环境组的流量路由。添加新的基本路径后,它们可能会开始捕获全新流量,也可能开始捕获现有部署已在处理的部分现有流量。
同样,移除基本路径后,它们可能对应于不再接收任何流量的端点,或者可能导致现有流量重新路由到其他代理。流量被重新路由时,可能被传送到同一环境中的某个代理;多个环境共享同一个环境组时,也可能被传送到不同环境中的某个代理。
还应考虑添加到环境或环境组的 API 代理基本路径总数。为了实现最佳性能,Apigee 建议对每个 Apigee 环境或环境组使用的 API 代理基本路径数量不超过 3,000 个。如果超出此建议值,可能会导致所有新的和现有 API 代理部署的延迟时间增加。
其他资源
以下信息介绍如何管理环境和环境组:
-
使用 Apigee 界面:
-
使用 Apigee API: