Zadig 简化 K8s YAML ,实现上千微服务自动化运维
在云原生微服务架构中,企业能够享受到更高的可用性和扩展性,这对于满足业务的快速迭代至关重要。然而,管理大量服务的 YAML 配置成为了一项挑战:服务间的配置细微差别要求频繁复制粘贴,而为不同的部署环境(如开发、测试、预发布等)定制配置又会导致 YAML 文件数量激增。
为了解决这些问题,Zadig 提供了高效的服务配置管理方案:
- 支持从现有 Kubernetes 集群批量导入服务,实现服务配置的快速迁移。
- 允许将多个服务配置文件整合至代码库,并同步至 Zadig,以批量创建服务。
- 提供服务模板功能,通过定义模板和少量参数,简化服务的创建过程。
本文将详细介绍如何应用 Zadig 的这些功能,以实现微服务的高效管理和自动化运维。
从现有 Kubernetes 批量导入服务
适用:K8s YAML 类型项目的场景,可以直接从现有 K8s 集群的命名空间批量导入服务,几乎无迁移成本。
批量导入服务
进入项目的服务模块 -> 点击新建按钮 -> 选择从 Kubernetes 导入
。
选择服务所在的集群和命名空间 -> 添加服务 -> 选择配置类型及配置名称后导入。
支持导入 deployment/statefulset/service/ingress/secret/configmap/pvc 资源
导入成功后,可在 Zadig 平台中按需修改服务配置。
将服务加入到环境
进入项目的环境 -> 点击添加服务
-> 选择从 NS 导入的服务即可批量将服务加入到已有环境中。
查看环境
从代码库批量同步
适用:已存在大体量的 K8s YAML 服务,每个服务有单独的 YAML 配置。
将服务的 YAML 配置按照一定目录结构组织起来,通过 Zadig 批量同步,下面以 voting-demo
项目为例演示说明:
- 源码:zadig/voting-app
- 服务:该项目包括 5 个微服务(
db
/redis
/result
/vote
/worker
) - 服务对应的配置文件:上述 5 个微服务的 K8s YAML 配置文件目录,如下所示:
zadig/examples/voting-app/freestyle-k8s-specifications ├── db │ ├── db-deployment.yaml │ └── db-service.yaml ├── redis │ ├── redis-deployment.yaml │ └── redis-service.yaml ├── result │ ├── result-deployment.yaml │ └── result-service.yaml ├── vote │ ├── vote-deployment.yaml │ └── vote-service.yaml └── worker └── worker-deployment.yaml
批量同步服务
进入项目的服务模块 -> 点击从代码库同步
-> 选择代码库以及服务配置所在文件目录,点击同步
。
本例中即为 Zadig 库的
examples/voting-app/freestyle-k8s-specifications
目录
将服务加入到环境
批量同步服务配置后系统会自动解析多个服务,效果如下图左侧边栏所示。
进入项目的环境中 -> 点击添加服务
-> 选择从代码库同步的服务即可批量将服务加入到已有环境中。
查看环境
使用服务模板创建
适用:已存在大体量的 K8s YAML 服务配置,多个服务的配置结构同构,不同服务配置的值存在细微差异(比如:不同服务的端口不同、数据库连接地址不同、所需 CPU/Memory 资源限制不同...)
下面以 multi-service-demo
项目的服务配置为例进行实践。该项目中包括三个服务 service1
/service2
/service3
,通过分析这些服务的 K8s YAML 配置,抽象出服务模板,将不同服务有差异的配置提取为模板中的变量,即可得到服务模板 template.yaml。
创建服务模板
在项目预览页点击右上角的 模板库
-> K8s YAML
进入 K8s YAML 模板管理页面。
点击 +
新建模板 -> 填写模板名称 multi-service-demo-template
-> 填写模板内容 -> 填写自定义变量的值对模板赋默认值 -> 保存模板。
该例中的模板内容如下:
apiVersion: apps/v1 kind: Deployment metadata: name: $T-Service$ labels: app.kubernetes.io/name: $T-Project$ app.kubernetes.io/instance: $T-Service$ spec: selector: matchLabels: app.kubernetes.io/name: $T-Project$ app.kubernetes.io/instance: $T-Service$ replicas: 2 template: metadata: labels: app.kubernetes.io/name: $T-Project$ app.kubernetes.io/instance: $T-Service$ spec: containers: - name: $T-Service$ image: ccr.ccs.tencentyun.com/koderover-public/$T-Service$:latest imagePullPolicy: Always command: - /workspace/$T-Service$ ports: - protocol: TCP containerPort: {{.port}} resources: limits: memory: {{.memoryLimit}} cpu: {{.cpuLimit}} --- apiVersion: v1 kind: Service metadata: name: $T-Service$ labels: app.kubernetes.io/name: $T-Project$ app.kubernetes.io/instance: $T-Service$ spec: type: NodePort ports: - protocol: TCP port: {{.port}} targetPort: {{.port}}
使用模板新建服务
只需要填写服务名称,选择模板,填写若干变量即可快速创建服务。
进入 multi-service-demo
项目的服务模块,点击使用模板新建
服务。
填写服务名称 service1
-> 选择模板 multi-service-demo-template
-> 填写 service1
服务在模板中的变量配置后新建即可。
重复上述步骤继续新建服务 service2
、service3
。
将服务加入到环境
至此这三个服务都被成功创建,进入项目的环境中 -> 点击添加服务
-> 选择服务即可批量将服务加入到已有环境中。
以上三种方式成功将服务接入 Zadig,接下来便可以使用 Zadig 强大的环境治理和工作流能力对服务进行构建部署、测试验证、持续交付等,推荐阅读:
结语
秉承着 do not block developers
的理念,Zadig 通过其强大的批量接入功能和 Kubernetes YAML 服务模板,显著减轻了维护服务配置文件的认知负担。这使得工程师得以摆脱繁琐的配置管理工作,加速步入云原生 DevOps 的高效路径,从而将更多精力投入到创造实际业务价值中去。
扫码即刻咨询
解锁企业专属最佳实践方案!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
从 Icelake 到 Iceberg Rust
本文作者丁皓是Databend 研发工程师,也是开源项目 OpenDAL 作者,主要研究领域包括存储、自动化与开源。 太长不看 Icelake 已经停止更新,请改用 iceberg-rust。 Iceberg-rust 是一个由社区驱动的项目,所有 Icelake 的贡献者都已转向该项目。它涵盖了 Icelake 之前提供的所有功能,并且是 Apache Iceberg 的官方实现版本。 引言 我将分享 icelake 和 iceberg-rust 背后的历史。这篇文章将记录一个开放社区是如何运作的:人们因共同的目标而团结,共同努力。这是开源最初的力量,也总是吸引我的地方。 Iceberg 是一种用于巨大分析表的高性能格式。它在全球范围内被广泛使用,并且几乎所有查询引擎都支持它。用户可以编写 SQL 来从存储在对象存储服务中的 Iceberg 表查询数据,无需首先将其导入数据库。 长期以来,Iceberg 缺少官方 Rust 实现,这就是我们故事开始的地方。 Icelake In Databend 我们在 Databend 内部已经讨论了很多次关于支持开放表格格式的话题,我对此非常感兴...
- 下一篇
blazork8s 发布新版,正式支持 K8S Gateway API
blazork8s是使用c# blazor + AntDesign技术编写的开源k8s管理工具。融合了AI能力,支持硅基流动免费模型,墙裂建议国内小伙伴们配置硅基流动的服务进行体验。 本次发版在支持Ingress管理的基础上,新增对GatewayAPI的支持,并在示例yaml中新增了HttpRoute的各种用法。 本次主要更新内容 新增对Gateway API的支持,包括GatewayClass、Gateway、HttpRoute、GrpcRoute、TcpRoute、UdpRoute、TlsRoute、ReferenceGrant等资源类型 新增Gateway 拓扑图展示。形成Gateway->HttpRoute、GrpcRoute、TcpRoute、UdpRoute->Service->Pod的关联展示 新增拓扑图动画展示,更形象直观 Github地址:https://github.com/weibaohui/blazork8s Gitee地址:https://gitee.com/weibaohui/blazork8s
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL8.0.19开启GTID主从同步CentOS8