在云原生领域,helm 作为 kubernetes 应用的包管理工具,其重要性不言而喻。但是,随着环境数量的增加,为不同环境定制 helm chart 配置变得复杂且容易出错。此外,临时测试环境的生命周期结束后,相关的 helm chart 配置往往失去作用,导致资源浪费。
为了解决这些问题,zadig 提供了三种高效的 helm chart 配置管理方法:
- 从代码库批量同步配置:将 helm chart 配置整合至代码库中,通过 zadig 实现服务的批量创建和同步,适用于管理多个服务配置的场景。
- 使用 helm chart 模板创建服务:通过创建包含变量的 helm chart 模板,可以快速创建服务。这种方法适用于服务配置结构相似,但具体值略有不同的场景,且模板可复用于多个环境。
- 使用 helm chart 模板批量创建服务:当服务配置由独立的 helm chart 管理时,可以利用模板和对应的 values 文件批量接入服务至 zadig,提高效率。
通过这些方法,zadig 使得 helm chart 配置的管理变得简单高效,同时保持了服务部署的一致性和可控性。结合 zadig 的环境治理和工作流能力,团队可以实现从构建部署到持续交付的全流程自动化,大幅提升产品交付的速度和质量。下面将详细阐述这些场景的使用方法。
从代码库批量同步配置
将多个服务的 yaml 配置组织在一个 helm chart 中,使用 zadig 批量导入,下面以 voting-demo
项目为例演示说明:
- 源码:zadig/voting-app
- 服务:包括 5 个微服务(
db
/redis
/result
/vote
/worker
) - helm chart 配置:位于源码下的
chart
目录,目录结构如下所示。values.yaml
中包括所有服务的镜像信息,templates
目录下包括所有服务的配置,并引用{{ .values.services.服务名.image }}
作为容器镜像信息
zadig/examples/voting-app/chart
├── chart.yaml
├── templates
│ ├── db.yaml
│ ├── redis.yaml
│ ├── result.yaml
│ ├── vote.yaml
│ └── worker.yaml
└── values.yaml
从代码库同步
进入项目的服务模块 -> 点击从代码库同步
-> 选择代码库以及 helm chart 所在文件目录,点击加载
(本例中即为 zadig 库的 examples/voting-app/chart
目录)。
同步后,系统会自动分析 values.yaml,解析出多个服务组件。
将服务加入到环境
点击加入环境
-> 选择环境,快速将多个服务一键加入到已有环境中。
使用 helm chart 模板创建服务
下面以 multi-service-demo
案例进行实践,和实践相关的部分目录结构说明如下:共包括三个服务 service1
/service2
/service3
,通过对完整的服务配置( k8s-yaml
目录)进行分析,抽象出通用的 helm chart 服务模板(general-chart
目录)。
zadig/examples/multi-service-demo/
├── general-chart # helm chart 服务模板
│ ├── chart.yaml
│ ├── templates
│ │ ├── _helpers.tpl
│ │ ├── deployment.yaml
│ │ └── service.yaml
│ └── values.yaml
├── k8s-yaml # 各服务完整的 k8s yaml 配置
│ ├── service1
│ │ ├── deployment.yaml
│ │ └── service.yaml
│ ├── service2
│ │ ├── deployment.yaml
│ │ └── service.yaml
│ ├── service3
│ │ ├── deployment.yaml
│ │ └── service.yaml
可以看到模板的 values.yaml
文件中使用了自定义变量 port
和系统内置变量 t-service
,在使用模板创建服务后,此处的变量会被渲染替换。
fullnameoverride: $t-service$
replicacount: 1
port: {{.port}}
imagepullsecretsname: "default-registry-secret"
image:
repository: "ccr.ccs.tencentyun.com/koderover-public/$t-service$"
tag: "latest"
resources:
requests:
cpu: 10m
mem: 10mi
limits:
cpu: 20m
mem: 20mi
创建 helm chart 模板
访问资源管理
-> 模板库
-> helm chart
进入 helm chart 模板管理页面。
点击 +
新建模板 -> 填写模板名称 multi-service-demo-template
-> 选择模板所在的代码库及目录 -> 点击加载
保存模板。
导入模板成功后效果如下,点击模板中具体的文件可查看其内容,可对模板中自定义变量赋默认值。
使用模板新建服务
进入项目的服务模块 -> 点击使用模板新建
-> 填写服务名称并选择模板,根据服务的实际配置情况,对模板中的变量赋值 -> 点击导入
。
导入成功后效果如下所示,选中服务后可在 zadig 平台中对其 values 内容进行预览。
同样的步骤快速创建服务 service2
、service3
。
将服务加入环境
进入项目的环境中 -> 点击添加服务
-> 选择新建的服务即可将服务加入到已有环境中。
使用 helm chart 模板批量创建服务
同样以 multi-service-demo
案例进行实践,和实践相关的部分目录结构说明如下:共包括三个服务 service1
/service2
/service3
,通过对各服务完整的 helm chart 配置( full-charts
目录)进行分析,抽象出 helm chart 模板(base-chart
目录),以及对应每个服务的 values(values
目录)。
zadig/examples/multi-service-demo/
├── base-chart # helm chart 服务模板
│ ├── chart.yaml
│ ├── templates
│ │ ├── _helpers.tpl
│ │ ├── deployment.yaml
│ │ └── service.yaml
│ └── values.yaml
├── full-charts # 各服务完整、独立的 helm chart 配置
│ ├── service1
│ │ ├── chart.yaml
│ │ ├── templates
│ │ └── values.yaml
│ ├── service2
│ │ ├── chart.yaml
│ │ ├── templates
│ │ └── values.yaml
│ └── service3
│ ├── chart.yaml
│ ├── templates
│ └── values.yaml
└── values # 对应各服务的 values
├── service1.yaml
├── service2.yaml
└── service3.yaml
创建 helm chart 模板
前文中已有同类操作,此处不再赘述。
使用模板批量新建服务
进入项目的服务模块 -> 点击使用模板新建
-> 点击批量创建
-> 选择模板以及多个服务的 values 所在文件路径,点击导入
。
导入成功后效果如下所示,选中服务后可在 zadig 平台中对其 values 内容进行预览。
将服务加入环境
进入项目的环境中 -> 点击添加服务
-> 选择新建的服务即可将服务批量加入到已有环境中。
以上三种方式成功将服务接入 zadig,接下来便可以使用 zadig 强大的环境治理和工作流能力对服务进行构建部署、测试验证、持续交付等,推荐阅读:
结语
从代码库同步 helm chart 配置可快速在 zadig 中批量创建服务拉起环境,快速对业务进行验证;模板功能将服务配置统一化管理,降低 helm chart 的维护负担,让工程师从繁琐的配置管理“脏活累活”中解放出来,加速步入云原生 devops 的高效路径,从而将更多精力投入到创造实际业务价值中去。
扫码即刻咨询
解锁企业专属最佳实践方案!
发表评论