1. Helm:Kubernetes 的包管理工具
是什么?
• 相当于 Kubernetes 的 "apt/yum",用于管理复杂应用的打包、部署和版本控制。 • 通过 Chart(包含预定义模板和配置)简化多资源部署。
核心概念
| 术语 | 作用 | 示例 |
|---|---|---|
| Chart | 应用包,包含所有K8s资源模板和默认配置 | helm create myapp 生成一个Chart目录 |
| Release | Chart 的运行时实例(每次安装生成唯一Release) | helm install myapp ./myapp-chart 创建名为 myapp 的Release |
| Values | 动态参数配置,支持覆盖默认值 | helm install --set replicaCount=3 覆盖副本数 |
典型使用场景
bash
# 安装一个MySQL Chart(带自定义密码)
helm install my-db bitnami/mysql --set auth.rootPassword=123456
# 升级应用版本
helm upgrade my-db bitnami/mysql --version 9.0.02. Kustomize:原生配置管理工具
是什么?
• Kubernetes 内置 的配置管理方案(kubectl apply -k 直接支持)。 • 通过 文件叠加(overlays) 实现环境差异化,不修改原始YAML。
核心概念
| 术语 | 作用 | 示例 |
|---|---|---|
| Base | 基础配置(原始YAML文件) | kustomization.yaml 中定义 resources: [deployment.yaml] |
| Overlay | 环境特定配置(通过patch/替换实现差异化) | overlays/prod/ 目录下修改镜像标签或副本数 |
| Patch | 对基础配置的局部修改 | 通过JSON Patch或YAML片段覆盖特定字段 |
典型使用场景
bash
# 目录结构
base/
├── deployment.yaml
└── kustomization.yaml
overlays/
└── prod/
├── replica-patch.yaml # 修改副本数
└── kustomization.yaml
# 部署生产环境配置
kubectl apply -k overlays/prod3. 直观对比
| 功能 | Helm | Kustomize |
|---|---|---|
| 模板引擎 | 支持复杂逻辑(Go模板) | 仅支持简单字段替换 |
| 环境管理 | 通过不同 values.yaml 文件 | 通过 overlays 目录结构 |
| 学习成本 | 较高(需学模板语法) | 低(纯YAML操作) |
| 适用阶段 | 适合应用开发阶段(打包分发) | 适合集群运维阶段(配置管理) |
| 版本控制 | 内置版本回滚(helm rollback) | 需配合Git管理 |
4. 如何选择?
用 Helm 如果:
• 需要将应用打包分发(如数据库、中间件) • 配置需要动态参数化(如不同环境不同资源限制) • 涉及复杂依赖(如应用依赖Redis和PostgreSQL)
用 Kustomize 如果:
• 追求简单性,避免模板语法 • 需要审计配置变更(所有修改可见于YAML文件) • 已有一套YAML配置,只需小范围调整
5. 快速示例
Helm 示例
yaml
# values.yaml
replicaCount: 1
image:
repository: nginx
tag: "1.23"
# templates/deployment.yaml
spec:
replicas: { { .Values.replicaCount } }
containers:
- image: { { .Values.image.repository } }:{{ .Values.image.tag }}Kustomize 示例
yaml
# base/kustomization.yaml
resources:
- deployment.yaml
# overlays/prod/replica-patch.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3总结
• Helm = 应用商店(适合分发复杂应用) • Kustomize = 配置版本控制(适合管理已有配置)
大多数团队会混合使用: • 用 Helm 安装第三方应用(如Prometheus) • 用 Kustomize 管理自研服务的环境差异