Helm

Helm 是 Kubernetes 的包管理器,被称为 "Kubernetes 的包管理器"。它允许用户定义、安装和更新复杂的 Kubernetes 应用程序,简化了应用程序部署和管理的过程。

Helm 核心概念

Chart

Helm 包,包含描述相关 Kubernetes 资源的文件集合

Release

Helm Chart 在 Kubernetes 集群中的运行实例

Repository

存储和共享 Helm Chart 的仓库

Tiller (v2)

Helm v2 中的服务器端组件(v3 中已移除)

Helm 与 Kubernetes 资源对比
特性Kubernetes 原生资源Helm
部署复杂度需要多个 YAML 文件单个 Chart 管理
版本管理手动管理内置版本控制
参数化需要手动修改通过 values.yaml 配置
依赖管理无内置支持支持 Chart 依赖
更新回滚复杂的手动操作一键更新回滚
Helm Chart 结构
graph TD
    A[Helm Chart] --> B[Chart.yaml]
    A --> C[values.yaml]
    A --> D[templates/]
    A --> E[README.md]
    A --> F[charts/]
    D --> G[deployment.yaml]
    D --> H[service.yaml]
    D --> I[_helpers.tpl]
    D --> J[ingress.yaml]
    B --> J1[元数据]
    C --> J2[默认值]
    F --> J3[依赖 Chart]
                                
常用命令
# 搜索 Charts
helm search repo
# 添加仓库
helm repo add stable https://charts.helm.sh/stable
# 更新仓库
helm repo update
# 安装 Chart
helm install my-release stable/nginx
# 查看发布
helm list
# 升级发布
helm upgrade my-release stable/nginx --set image.tag=1.19
# 回滚发布
helm rollback my-release 1
# 卸载发布
helm uninstall my-release
# 创建新 Chart
helm create my-chart
# 打包 Chart
helm package my-chart
Helm 最佳实践
实践 说明
使用命名模板 在 _helpers.tpl 中定义可重用的模板片段,提高代码复用性
合理使用依赖 通过 Chart.yaml 管理 Chart 依赖关系,简化复杂应用部署
版本控制 使用语义化版本控制管理 Chart 版本,便于追踪变更
测试 Chart 使用 helm test 命令验证 Chart 功能,确保部署质量
参数化配置 通过 values.yaml 文件管理配置参数,实现环境差异化部署
文档完善 编写清晰的 README.md 和注释,便于他人理解和使用