在云原生微服务架构中,企业能够享受到更高的可用性和扩展性,这对于满足业务的快速迭代至关重要。然而,管理大量服务的 yaml 配置成为了一项挑战:服务间的配置细微差别要求频繁复制粘贴,而为不同的部署环境(如开发、测试、预发布等)定制配置又会导致 yaml 文件数量激增。
为了解决这些问题,zadig 提供了高效的服务配置管理方案:
- 支持从现有 kubernetes 集群批量导入服务,实现服务配置的快速迁移。
- 允许将多个服务配置文件整合至代码库,并同步至 zadig,以批量创建服务。
- 提供服务模板功能,通过定义模板和少量参数,简化服务的创建过程。
本文将详细介绍如何应用 zadig 的这些功能,以实现微服务的高效管理和自动化运维。
从现有 kubernetes 批量导入服务
批量导入服务
进入项目的服务模块 -> 点击新建按钮 -> 选择从 kubernetes 导入
。
选择服务所在的集群和命名空间 -> 添加服务 -> 选择配置类型及配置名称后导入。
导入成功后,可在 zadig 平台中按需修改服务配置。
将服务加入到环境
进入项目的环境 -> 点击添加服务
-> 选择从 ns 导入的服务即可批量将服务加入到已有环境中。
查看环境
从代码库批量同步
将服务的 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
批量同步服务
进入项目的服务模块 -> 点击从代码库同步
-> 选择代码库以及服务配置所在文件目录,点击同步
。
将服务加入到环境
批量同步服务配置后系统会自动解析多个服务,效果如下图左侧边栏所示。
进入项目的环境中 -> 点击添加服务
-> 选择从代码库同步的服务即可批量将服务加入到已有环境中。
查看环境
使用服务模板创建
下面以 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 的高效路径,从而将更多精力投入到创造实际业务价值中去。
扫码即刻咨询
解锁企业专属最佳实践方案!
发表评论