
























Helm 是 Kubernetes 的包管理工具,用于简化复杂应用的部署、升级和回滚操作。类比于 Linux 中的 apt 或 yum,Helm 让你可以将多个 Kubernetes 资源(如 Deployment、Service、ConfigMap 等)打包成一个 Chart,实现应用的一键部署与管理。
mychart/
├── Chart.yaml # 图表信息(名称、版本等)
├── values.yaml # 默认配置参数
├── charts/ # 依赖的子 Chart
└── templates/ # 模板文件(结合 values 生成 Kubernetes 资源)
模板渲染:
Helm 将 templates/ 目录下的模板文件与 values.yaml(或用户自定义参数)结合,生成最终的 Kubernetes 资源 YAML。
# 模板示例(templates/deployment.yaml)
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-web
spec:
replicas: {{ .Values.replicaCount }} # 使用 values 中的参数
客户端-服务端架构:
helm install)。 helm install my-release stable/mysql # 从官方仓库安装 MySQL
helm list # 列出所有部署的 Releases
helm upgrade my-release stable/mysql --set mysqlRootPassword=newpass # 升级配置
helm rollback my-release 1 # 回滚到上一个版本
values.yaml 或命令行参数自定义部署配置,避免硬编码:
helm install my-app ./mychart --values custom-values.yaml # 使用自定义参数
Chart.yaml 中声明依赖的子 Chart,Helm 自动处理依赖关系:
dependencies:
- name: redis
version: 15.5.6
repository: https://charts.bitnami.com/bitnami
apiVersion: batch/v1
kind: Job
metadata:
annotations:
"helm.sh/hook": pre-install # 安装前执行
spec:
template:
spec:
containers:
- name: init-db
image: mysql
简化复杂应用部署:
一键部署包含多个组件(如 Web 服务、数据库、缓存)的应用,无需逐个编写 YAML 文件。
版本控制:
记录每次 Release 的变更历史,支持回滚到任意历史版本。
参数化与复用:
通过 values 文件实现配置复用,适应不同环境(开发/测试/生产)的需求。
社区生态丰富:
官方和第三方仓库提供大量预打包的 Charts(如 Nginx、Prometheus、WordPress),直接可用。
微服务架构:
部署包含多个服务的微服务应用,如一个电商系统包含订单、用户、支付等服务。
CI/CD 流水线:
在 Jenkins、GitLab CI 等工具中集成 Helm,实现自动化部署。
环境一致性:
使用相同的 Chart 在不同环境(开发/测试/生产)中部署,确保配置一致。
第三方应用集成:
快速安装和配置监控(Prometheus+Grafana)、消息队列(RabbitMQ)等中间件。
| 对比项 | 原生 Kubernetes | Helm |
|---|---|---|
| 配置管理 | 手动维护多个 YAML 文件 | 打包为单一 Chart,支持参数化 |
| 部署复杂度 | 需逐个应用 kubectl apply |
一键部署,自动处理依赖关系 |
| 版本控制 | 需手动记录每次变更 | 自动记录 Release 历史,支持回滚 |
| 环境适配 | 为不同环境复制/修改 YAML 文件 | 通过 values 文件适应不同环境 |
| 社区支持 | 基础资源定义,需自行编写 | 大量预打包的成熟 Charts 可用 |
# macOS(通过 Homebrew)
brew install helm
# Linux(通过脚本)
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# 添加官方仓库
helm repo add stable https://charts.helm.sh/stable
helm repo update
# 搜索 Chart
helm search repo mysql
# 安装 Chart
helm install my-mysql stable/mysql --set mysqlRootPassword=secret
# 查看 Release 详情
helm status my-mysql
# 卸载 Release
helm uninstall my-mysql
Helm 是管理 Kubernetes 应用的必备工具,通过 Chart 模板化 和 参数化配置,大幅降低了复杂应用的部署和维护成本。无论是开发团队快速迭代,还是运维团队统一管理,Helm 都能显著提升效率。建议在学习 Kubernetes 后尽快掌握 Helm,以应对实际项目中的复杂场景。
除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。