如何在Azure API Management中区分AKS部署的开发与生产微服务环境?
解决Azure API Management区分开发/生产环境的方案
首先明确:你完全不需要必须创建两个Azure API Management(APIM)实例,大部分场景下用单实例就能实现开发与生产环境的独立URL需求。下面是几种实操性强的方案:
方案1:通过API路径前缀区分(最直接)
在同一个APIM实例中创建两个独立的API(或同一API的两个版本),分别绑定开发和生产AKS的后端IP,通过路径前缀区分环境:
- 开发环境API:设置路径前缀为
/dev,后端配置指向开发AKS微服务的IP地址 - 生产环境API:设置路径前缀为
/prod,后端配置指向生产AKS微服务的IP地址
这样前端就能使用两个独立的URL访问不同环境:
- 开发:
https://your-apim-name.azure-api.net/dev/your-api-endpoint - 生产:
https://your-apim-name.azure-api.net/prod/your-api-endpoint
这种方式完全不用修改APIM的基URI,只需要通过路径前缀做区分,配置简单,且能在单实例内实现环境隔离。
方案2:使用自定义域名实现独立基URI
如果你的业务需要完全不同的基域名(而非路径前缀),可以给同一个APIM实例配置两个自定义域名:
- 在APIM的“自定义域名”配置中,添加两个域名,比如
dev-api.yourcompany.com和prod-api.yourcompany.com - 为每个域名绑定对应的API(或通过路由规则),分别指向开发和生产AKS后端
- 配置DNS解析,将两个自定义域名指向你的APIM实例的IP
这样前端就能使用完全独立的基URL访问:
- 开发:
https://dev-api.yourcompany.com/your-api-endpoint - 生产:
https://prod-api.yourcompany.com/your-api-endpoint
这种方式满足了“独立URL”的需求,同时仍复用同一个APIM实例,节省成本和运维复杂度。
方案3:通过策略动态切换后端(适合URL统一但环境切换场景)
如果希望前端使用同一个URL,但通过请求标识(比如HTTP头、订阅键)动态切换到开发/生产后端,可以利用APIM的策略功能:
- 创建一个统一的API,后端暂时指向其中一个环境
- 在APIM的入站策略中添加逻辑,比如:
<choose> <when condition="@(context.Request.Headers.GetValueOrDefault("X-Environment", "").Equals("dev", StringComparison.OrdinalIgnoreCase))"> <set-backend-service base-url="https://dev-aks-service-ip/your-api" /> </when> <otherwise> <set-backend-service base-url="https://prod-aks-service-ip/your-api" /> </otherwise> </choose> - 前端请求时只需在头中携带
X-Environment: dev即可访问开发环境,否则默认走生产
不过这个方案的URL是统一的,如果你需要严格的独立URL,前两种方案更合适。
什么时候需要创建两个APIM实例?
只有当你遇到以下场景时,才考虑创建独立的APIM实例:
- 合规要求:开发与生产环境必须完全物理隔离
- 资源隔离:需要为两个环境配置独立的配额、限流策略、日志存储
- 运维隔离:两个环境需要不同的管理团队、权限控制或部署流程
否则,单APIM实例配合上述方案完全能满足你的需求,既节省成本又简化运维。
内容的提问来源于stack exchange,提问作者Lucky Rajput
相关产品推荐
相关产品推荐

