使用网关组在多环境中管理服务
网关组是一个由一个或多个共享相同配置的网关实例组成的逻辑分组,这些网关实例在处理 API 请求时表现一致。用户可以为网关组命名,并为其添加标签,以此来区分和管理不同的环境和集群。
API7 企业版支持 API 网关
和 Ingress Controller
两种类型的网关组管理,能帮助企业进行环境和集群的隔离,多区域多集群管理,以及根据业务线实现服务级别目标管理。
这篇指南将向你展示如何通过网关组实现在 测试
、UAT
、 生产
三个环境中的服务管理。
背景介绍
为确保服务稳定、合规及数据安全,服务的上线经历多个环境,包括测试环境、UAT 环境和生产环境。在没有多环境管理功能的情况下,研发人员需要部署 3 套独立的 API7 企业版,开发工程师、QA 工程师和运维工程师需要分别登录不同域名下的 API7 企业版控制台,对同一个 API 进行开发、测试和上线,在业务线非常多的情况下,会浪费大量机器和管理资源。
API7 企业版的网关组功能为研发人员提供了一个统一的入口,避免在多控制台中切换,可以实现简单便捷的发布操作,从而提高工作效率并减少操作错误。
前提条件
- 安装 API7 企业版。
- 准备好服务在三个环境内的不同域名:
test.acme.com
、uat.acme.com
、prod.acme.com
。 - 参考新增网关组,创建三个网关组:
测试
、UAT
和生产
,对应测试环境、UAT 环境和生产环境的使用。
在测试环境新增服务和路由
- 从左侧菜单选择
测试
网关组下的已发布服务,然后点击新增服务。 - 选择手动新增。
- 在对话框中,执行以下操作:
- 名称填写
httpbin
。 - 点击 + 添加节点。
- 在对话框中,执行以下操作:
- 主机填写
test.api7.org
。 - 端口填写
80
。 - 点击新增。
- 主机填写
- 名称填写
- 在主机字段中,点击 + 新增。
- 输入
test.acme.com
。
- 输入
- 打开添加第一条路由按钮。
- 在第一个路由对话框中,执行以下操作:
- 名称填写
get-headers
。 - 路径填写
headers
。 - HTTP 方法选择
GET
。 - 点击新增。将创建一个处于“无版本”状态的新服务
httpbin
。
- 名称填写
- 进入上游页面。
- (可选)在连接配置模块中,点击编辑图标。
- (可选)在编辑连接配置对话框中,执行以下操作:
- 传递给上游的 Host 请求头选择
使用上游中指定的 Host
。 - 点击保存。
- 传递给上游的 Host 请求头选择
注意:步骤 8 和 9 是可选的。必须将 *传递给上游的 Host 请求头 参数更改为
使用上游中指定的 Host
,以确保与上游的握手成功。请根据你的用例进行相应的调整。
- 模拟真实用户场景进行功能测试、性能测试和安全测试。
验证服务
测试后,发送请求以验证测试网关组中的 httpbin 服务:
curl "http://localhost:9080/headers" -v -H "Host: test.acme.com"
你应该能收到 200 OK
的响应。
将服务部署到 UAT 环境
- 从左侧菜单选择
测试
网关组下的已发布服务。 - 点击
httpbin
服务旁边的 ...,然后点击同步到其他网关组。 - 在选择要同步到的网关组字段中,选择
UAT
网关组,然后点击下一步。 - 在对话框中,执行以下操作:
- 版本填写
1.0.0
。 - 请求 URL 填写
uat.acme.com
。 - 在上游配置模块中,点击编辑。
- 在对话框中,执行以下操作:
- 主机和端口填写入
uat.api7.org
作为主机,80
作为端口。 - 权重 使用默认值
100
。 - 点击保存。
- 主机和端口填写入
- 确认服务信息,然后点击同步。
httpbin
服务将同步到UAT
网关组。
- 版本填写
- (可选)在连接配置模块中,点击编辑图标。
- (可选)在编辑连接配置对话框中,执行以下操作:
- 传递给上游的 Host 请求头选择
使用上游中指定的 Host
。 - 点击保存。
- 传递给上游的 Host 请求头选择
注意:步骤 5 和 6 是可选的。必须将 *传递给上游的 Host 请求头 参数更改为
使用上游中指定的 Host
,以确保与上游的握手成功。请根据你的用例进行相应的调整。
- 在
UAT
网关组中,配置网关组的安全策略和合规性检查功能,例如进行日志审计。
验证服务
测试后,发送请求以验证测试网关组中的 httpbin 服务:
curl "http://localhost:9080/headers" -v -H "Host: uat.acme.com"
你应该能收到 200 OK
的响应。
将服务部署到生产环境
- 从左侧菜单选择
UAT
网关组下的已发布服务。 - 点击
httpbin
服务旁边的 ...,然后点击同步到其他网关组。 - 在选择要同步到的网关组字段中,选择
生产
网关组,然后点击下一步。 - 在对话框中,执行以下操作:
- 请求 URL填写
production.acme.com
。 - 在上游配置模块中,点击编辑。
- 在编辑节点对话框中,执行以下操作:
- 主机和端口填写
prod.api7.org
作为主机,80
作为端口。 - 权重使用默认值
100
。 - 点击保存。
- 主机和端口填写
- 确认服务信息,然后点击同步。
httpbin
服务将同步到生产
网关组。
- 请求 URL填写
- (可选)在连接配置模块中,点击编辑图标。
- (可选)在编辑连接配置对话框中,执行以下操作:
- 传递给上游的 Host 请求头选择
使用上游中指定的 Host
。 - 点击保存。
- 传递给上游的 Host 请求头选择
注意:步骤 5 和 6 是可选的。必须将 *传递给上游的 Host 请求头 参数更改为
使用上游中指定的 Host
,以确保与上游的握手成功。请根据你的用例进行相应的调整。
- 定期审查和分析
httpbin
的日志,执行日志管理,并识别潜在的问题以进行改进。 - 制定详细的回滚计划,包括回滚步骤、所需时间和责任人员,并在必要时回滚已发布的服务。
验证服务
测试后,发送请求以验证测试网关组中的 httpbin 服务:
curl "http://localhost:9080/headers" -v -H "Host: production.acme.com"
你应该能收到 200 OK
的响应。
总结
测试、UAT 和生产环境是软件开发生命周期的重要组成部分。通过利用 API7 企业版的网关组,你可以实现物理和逻辑隔离,从而增强安全性、可控性和效率。此外,灵活调整路由规则和管理服务版本的能力可确保应用程序的平滑和敏捷版本管理。