如何配置Helm在AKS中将多微服务部署到dev、QA不同环境?
Helm + AKS 多环境微服务部署方案说明
核心结论
仅靠Helm即可完整实现你的多环境部署需求,无需额外搭配Ansible。如果同时存在AKS集群初始化、非K8s资源配置等额外运维诉求,可以组合使用Ansible做全流程编排,仅微服务部署场景下Helm能力完全覆盖。
Helm侧实操配置步骤
- 首先将payment、order两个微服务封装为独立Helm Chart,若两个服务存在强依赖关系,也可以创建伞形(Umbrella)Chart,将两个服务作为子Chart统一管理
- 在每个Chart的根目录下创建
envs文件夹,按环境存储差异化配置文件,命名为values-dev.yaml、values-qa.yaml。通用配置(比如服务端口、基础探针规则等)保留在默认values.yaml中,环境差异化配置(比如副本数、镜像标签、数据库连接地址、资源配额、Ingress域名等)单独写到对应环境的values文件中,避免配置冗余 - 部署前先切换到对应AKS集群的访问上下文,执行命令:
az aks get-credentials --resource-group <你的资源组名称> --name <对应环境集群名称> - 执行部署命令指定对应环境的变量文件即可完成部署,命令示例:
helm install <服务发布名> <Chart本地路径/远程仓库地址> -f envs/values-<dev/qa>.yaml -n <环境命名空间> --create-namespace
最佳实践建议
- 优先用命名空间做环境隔离:如果dev、QA环境没有强物理隔离要求,不需要维护两套独立AKS集群,在同一个集群中创建dev、qa两个独立命名空间即可实现环境隔离,大幅降低集群运维成本
- 部署前先做配置校验:执行部署命令时先加上
--dry-run --debug参数,Helm会先渲染出最终要下发到K8s的资源配置,确认无误后再实际执行部署,避免配置错误影响集群 - 最小差异变量原则:环境变量文件中只保留和默认
values.yaml不一样的配置项,不要全量复制默认配置到环境文件中,降低后续配置迭代的维护成本 - 配置版本管控:所有Helm Chart、环境values文件都要提交到Git仓库做版本管理,每次部署的配置变更都可追溯,方便后续问题排查
- 复用部署命令:生产环境建议使用
helm upgrade --install替代helm install,同一个服务后续更新配置时不需要手动删除旧版本,直接执行升级命令即可完成发布
内容的提问来源于stack exchange,提问作者Debugger
相关产品推荐
相关产品推荐

