使用网关组在多环境中管理服务
网关组(Gateway groups)是包含一个或多个网关实例的逻辑分组,它们共享相同的配置,并在处理 API 请求时表现一致。用户可以为网关组命名并添加标签,以区分和管理不同的环境及集群。
API7 企业版支持两种类型的网关组管理:API7 Gateway 和 Ingress Controller。这有助于企业实现环境与集群隔离、多区域及多集群管理,以及基于项目的服务级别目标管理。
本指南将向你展示如何使用网关组在 Test(测试)、UAT(用户验收测试)和 Production(生产)环境中管理服务(Service)。
背景
为了确保服务的稳定 性、合规性以及数据安全性,服务在上线前需经过多个环境的流转,包括测试、UAT 和生产环境。如果没有该功能,开发者将不得不部署三套 API7 企业版,并在不同的域名下登录控制台,从而对同一个 API 进行开发、测试和部署。在业务项目众多的情况下,此过程将浪费大量的机器和管理资源。
API7 企业版的网关组功能为开发者提供了一个统一的入口。它避免了在多个控制台之间频繁切换,实现了简单便捷的部署操作,从而提高了工作效率并减少了操作失误。

前提条件
- 安装 API7 企业版。
- 为三个环境中的服务准备不同的域名:
test.acme.com、uat.acme.com和prod.acme.com。 - 参考添加网关组,创建三个网关组:
Test、UAT和Production。
在测试环境中创建服务和路由
由于变动频繁,测试环境中通常不需要严格的版本控制。只有最终稳定的配置才会被同步到更高级别的环境并标记为正式版本。只有正式版本才支持回滚和追溯。
- 从侧边导航栏选择
Test网关组下的 已发布服务(Published Services),然后点击 添加服务(Add Service)。 - 选择 手动添加(Add Manually)。
- 在对话框中,执行以下操作:
- 在 服务基础信息(Service Basics) 的 名称(Name) 字段中,输入
httpbin。 - 在 服务类型(Service Type) 字段中,选择
HTTP(七层代理)。 - 在 上游基础信息(Upstream Basics) 的 名称(Name) 字段中,输入
default。 - 点击 + 添加节点(Add Node)。
- 在弹出的对话框中,执行以下操作:
- 在 主机(Host) 字段中,输入
test.api7.ai。 - 在 端口(Port) 字段中,输入
80。 - 点击 添加(Add)。
- 在 主机(Host) 字段中,输入
- 在 上游协议(Upstream Scheme) 字段中,选择
HTTP。 - (可选)点击 查看更多连接配置(View More Connection Configuration)。
- (可选)在 传递给上游的 Host 请求头(The host HTTP header passed to upstream) 字段中,选择
上游节点中指定的 Host(Specified in the Upstream's Host)。 - 在 请求 URL(Request URL) 的 主机(Hosts) 字段中,输入
test.acme.com。 - 开启 添加第一个路由(Add First Route) 开关,然后执行以下操作:
- 在 名称(Name) 字段中,输入
get-headers。 - 在 路径(Path) 字段中,输入
headers。 - 在 方法(Methods) 字段中,选择
GET。
- 在 名称(Name) 字段中,输入
- 点击 添加(Add)。
- 在 服务基础信息(Service Basics) 的 名称(Name) 字段中,输入
- 将会创建一个处于“无版本(No Version)”状态的新服务
httpbin。
注意:在这个测试用例中,传递给上游的 Host 请求头 参数必须改为
上游节点中指定的 Host才能确保与演示上游握手成功。请根据你的实际用例进行相应调整。
- 模拟真实用户场景,进行功能测试、性能测试和安全测试。
验证服务
测试完成后,发送请求以验证测试网关组中的 httpbin 服务。
curl "http://localhost:9080/headers" -v -H "Host: test.acme.com"
你将收到一个 200 OK 响应。
将服务部署到 UAT 环境
版本号可作为所有网关组中的唯一标识符。在关键环境中,使用同步流程而非手动复制配置提供了一种更为便捷的方式来追踪版本、防止意外修改,并在进入 UAT 和生产环境之前确保配置经过了充分测试。
- 从侧边导航栏选择
Test网 关组下的 已发布服务(Published Services)。 - 点击页面顶部的 ... 按钮,然后点击 同步到其他网关组(Sync to Other Gateway Group)。
- 在对话框中,执行以下操作:
- 在 网关组(Gateway Group) 字段中,选择
UAT。 - 在 版本(Version) 字段中,输入
1.0.0。 - 点击 同步(Sync)。
- 同步后,你将被重定向到
UAT网关组上已发布的服务httpbin 1.0.0。 - 从侧边导航栏选择 路由(Routes)。
- 在 请求 URL(Request URL) 字段中,点击编辑按钮。
- 在对话框中,执行以下操作:
- 在 主机(Hosts) 字段中,点击 添加(Add),然后输入
uat.acme.com。 - 点击 保存(Save)。
- 从侧边导航栏选择 上游(Upstreams)。
- 点击 添加节点(Add Node)。
- 在对话框中,执行以下操作:
- 在 主机(Host) 和 端口(Port) 字段中,输入
uat.api7.ai作为主机,输入80作为端口。 - 在 权重(Weight) 字段中,使用默认值
100。 - 点击 添加(Add)。
- (可选)在 连接配置(Connection Configuration) 模块中,点击 编辑(Edit) 图标。
- (可选)在弹出的对话框中,执行以下操作:
- 在 传递给上游的 Host 请求头(The host HTTP header passed to upstream) 字段中,选择
上游节点中指 定的 Host(Specified in the Upstream's Host)。 - 点击 保存(Save)。
注意:在这个测试用例中,传递给上游的 Host 请求头 参数必须改为
上游节点中指定的 Host才能确保与演示上游握手成功。请根据你的实际用例进行相应调整。
- (可选)在
UAT网关组中,配置网关组的安全策略和合规性检查功能,例如进行日志审计。
验证服务
测试完成后,发送请求以验证 UAT 网关组中的 httpbin 服务。
curl "http://localhost:9080/headers" -v -H "Host: uat.acme.com"
你将收到一个 200 OK 响应。
将服务部署到生产环境
- 从侧边导航栏选择
UAT网关组下的 已发布服务(Published Services)。 - 点击
httpbin服务旁边的 ... 按钮,然后点击 同步到其他网关组(Sync to Other Gateway Group)。 - 在对话框中,执行以下操作:
- 在 网关组(Gateway Group) 字段中,选择
Production。 - 在 版本(Version) 字段中,输入
1.0.0。 - 点击 同步(Sync)。
- 同步后,你将被重定向到
Production网关组上已发布的服务httpbin 1.0.0。 - 从侧边导航栏选择 路由(Routes)。
- 在 请求 URL(Request URL) 字段中,点击编辑按钮。
- 在对话框中,执行以下操作:
- 在 主机(Hosts) 字段中,点击 添加(Add),然后输入
prod.acme.com。 - 点击 保存(Save)。
- 从侧边导航栏选择 上游(Upstreams)。
- 点击 添加节点(Add Node)。
- 在对话框中,执行以下操作:
- 在 主机(Host) 和 端口(Port) 字段中,输入
prod.api7.ai作为主机,输入80作为端口。 - 在 权重(Weight) 字段中,使用默认值
100。 - 点击 添加(Add)。
- (可选)在 连接配置(Connection Configuration) 模块中,点击 编辑(Edit) 图标。
- (可选)在弹出的对话框中,执行以下操作:
- 在 传递给上游的 Host 请求头(The host HTTP header passed to upstream) 字段中,选择
上游节点中指定的 Host(Specified in the Upstream's Host)。 - 点击 保存(Save)。
- 在 传递给上游的 Host 请求头(The host HTTP header passed to upstream) 字段中,选择
注意:在这个测试用例中,传递给上游的 Host 请求头 参数必须改为
上游节点中指定的 Host才能确保与演示上游握手成功。请根据你的实际用例进行相应调整。
- 定期审查和分析
httpbin的日志,进行日志管理,并识别潜在的可改进问题。 - 制定详细的回滚计划,包括回滚步骤、所需时间以及负责人员,并在必要时回滚已发布的服务。
验证服务
测试完成后,发送请求以验证 Production(生产)网关组中的 httpbin 服务。
curl "http://localhost:9080/headers" -v -H "Host: prod.acme.com"
你将收到一个 200 OK 响应。
总结
测试、UAT 和生产环境是软件开发生命周期中的核心组成部分。通过利用 API7 企业版的网关组功能,你可以实现物理和逻辑上的隔离,从而提高安全性、可控性和工作效率。此外,灵活调整路由规则并管理服务版本的能力,也将确保你的应用程序实现平滑、敏捷的版本管理。
其他资源
- 核心概念
- 最佳实践