Zadig 大幅简化 Helm Chart 管理负担,实现上千微服务高效部署
在云原生领域,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 的环境治理和工作流能力,团队可以实现从构建部署到持续交付的全流程自动化,大幅提升产品交付的速度和质量。下面将详细阐述这些场景的使用方法。
从代码库批量同步配置
适用:使用 Helm Chart 管理多个 K8s YAML 服务配置,每个服务有单独的 YAML 配置。
将多个服务的 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 模板创建服务
适用:使用 Helm Chart 管理 K8s YAML 服务配置,各服务的配置结构同构,不同服务配置的值存在细微差异(比如:不同服务的镜像名称不同、端口不同、所需 CPU/Memory 资源限制不同...)。将配置抽象为包括变量的 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 库的
examples/multi-service-demo/general-chart
目录
导入模板成功后效果如下,点击模板中具体的文件可查看其内容,可对模板中自定义变量赋默认值。
使用模板新建服务
进入项目的服务模块 -> 点击使用模板新建
-> 填写服务名称并选择模板,根据服务的实际配置情况,对模板中的变量赋值 -> 点击导入
。
导入成功后效果如下所示,选中服务后可在 Zadig 平台中对其 values 内容进行预览。
同样的步骤快速创建服务 service2
、service3
。
本例中
service2
、service3
的端口分别是 20222、20223。
将服务加入环境
进入项目的环境中 -> 点击添加服务
-> 选择新建的服务即可将服务加入到已有环境中。
使用 Helm Chart 模板批量创建服务
适用:现有服务配置使用独立的 Helm Chart 来管理(一个一个的接入会导致效率低下)。此时将服务配置抽象为 Helm Chart 模板,创建服务时使用各服务的 values 来覆盖模板中的配置,可将服务批量接入 Zadig。
同样以 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 模板
前文中已有同类操作,此处不再赘述。
本例中创建的模板名称为
multi-service-demo-base-template
,来源于 Zadig 库的examples/multi-service-demo/base-chart
目录。
使用模板批量新建服务
进入项目的服务模块 -> 点击使用模板新建
-> 点击批量创建
-> 选择模板以及多个服务的 values 所在文件路径,点击导入
。
本例中即为 Zadig 库的
examples/multi-service-demo/values
目录
导入成功后效果如下所示,选中服务后可在 Zadig 平台中对其 values 内容进行预览。
将服务加入环境
进入项目的环境中 -> 点击添加服务
-> 选择新建的服务即可将服务批量加入到已有环境中。
以上三种方式成功将服务接入 Zadig,接下来便可以使用 Zadig 强大的环境治理和工作流能力对服务进行构建部署、测试验证、持续交付等,推荐阅读:
结语
从代码库同步 Helm Chart 配置可快速在 Zadig 中批量创建服务拉起环境,快速对业务进行验证;模板功能将服务配置统一化管理,降低 Helm Chart 的维护负担,让工程师从繁琐的配置管理“脏活累活”中解放出来,加速步入云原生 DevOps 的高效路径,从而将更多精力投入到创造实际业务价值中去。
扫码即刻咨询
解锁企业专属最佳实践方案!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
探索大模型:袋鼠云在 Text To SQL 上的实践与优化
Text To SQL 指的是将自然语言转化为能够在关系型数据库中执行的结构化查询语言(简称 SQL)。近年来,伴随人工智能大模型技术的不断进步,Text To SQL 任务的成功率显著提升,这得益于大模型的推理、理解以及指令遵循等能力。 对于大数据平台来说,集成 Text To SQL 功能意义非凡。首先,这能够大幅优化用户体验;其次,Text To SQL 功能能够提高数据开发人员的工作效率,他们能够凭借自然语言描述来完成 SQL 任务的开发,进而极大地节省学习和编写复杂 SQL 语句的时间;最后,Text To SQL 功能降低了数据库查询的门槛,使得更多非技术人员能够参与到数据库查询工作中,让更多人得以享受大数据带来的便利。 本文将探讨袋鼠云在 Text To SQL 领域的探索与实践,分享如何实现更高效、更准确的自然语言到 SQL 的转换。 基于 LLM 实现 Text To SQL 设计基于大模型(LLM)的 Text To SQL 系统是一项复杂且精细的任务,包括多个步骤和环节,每个步骤都需要我们精心设计和处理。首先,我们需要将数据库中表的元信息进行组织。此步骤涉及到将每...
- 下一篇
FILE+POS 方式 GreatSQL 主从复制架构给主节点磁盘扩容
FILE+POS 方式 GreatSQL 主从复制架构给主节点磁盘扩容 一、前提 在一套非常老的系统上,有一套GreatSQL主从集群(1主1从),主从复制采用的是FILE+POS方式复制,磁盘使用紧张需要扩容,只能在该台机器上添加更大的磁盘,将原数据盘替换,也没有其他的机器资源替换。这套系统没有VIP,没有高可用切换工具,业务读写直连主节点,从节点可供读,允许有一定的延迟,全程磁盘扩容需要手动操作,以下方案步骤是模拟最快的方式去进行磁盘扩容。 二、整体思路是 在主节点机器上挂载一块新磁盘,在新磁盘上搭建一个新的从节点,旧从节点的主变为新从节点,最后将主节点与新从节点准备好配置文件后,关闭主节点,将新从节点使用新的配置文件重启,端口号为旧主port,新主实例顶替旧主成功。 三、模拟环境 主从架构 db01:master,172.17.135.81:3306 db02:slave02,172.17.134.225:3306 原主从db01 master复制数据到db02 slave02,现在在db01上搭建新的从节点slave01,并将slave01提升为新的主节点master02 db...
相关文章
文章评论
共有0条评论来说两句吧...