概述
Helm 是 Kubernetes 的包管理工具,类似于 apt/yum/npm。它允许开发者打包、配置和部署 Kubernetes 应用,大大简化了复杂应用的部署和管理。核心概念
| 概念 | 说明 |
|---|---|
| Chart | Helm 包,包含 Kubernetes 资源的模板 |
| Repository | 存放 Chart 的仓库 |
| Release | Chart 的一次部署实例 |
| Values | Chart 的配置参数 |
安装 Helm
macOS
Linux
Windows
验证安装
基本使用
添加仓库
搜索 Chart
安装 Chart
查看 Release
升级 Release
回滚 Release
卸载 Release
配置管理
查看默认配置
自定义配置
创建custom-values.yaml:
多个 Values 文件
命令行覆盖
创建 Chart
初始化 Chart
Chart.yaml
values.yaml
模板语法
基本语法
条件判断
循环
辅助模板
内置对象
| 对象 | 说明 |
|---|---|
| .Values | values.yaml 中的配置 |
| .Release | Release 信息(Name、Namespace 等) |
| .Chart | Chart.yaml 中的信息 |
| .Files | 访问 Chart 中的文件 |
| .Capabilities | 集群能力信息 |
| .Template | 当前模板信息 |
Chart 打包和发布
验证 Chart
打包 Chart
发布到仓库
依赖管理
定义依赖
在Chart.yaml 中:
管理依赖
实用技巧
查看实际渲染的资源
调试模板
从 Release 导出
常用 Chart 推荐
| Chart | 仓库 | 用途 |
|---|---|---|
| nginx | bitnami/nginx | Web 服务器 |
| mysql | bitnami/mysql | 数据库 |
| redis | bitnami/redis | 缓存 |
| prometheus | prometheus-community/prometheus | 监控 |
| grafana | grafana/grafana | 可视化 |
| cert-manager | jetstack/cert-manager | 证书管理 |
| ingress-nginx | ingress-nginx/ingress-nginx | Ingress 控制器 |
总结
| 命令 | 作用 |
|---|---|
| helm repo add | 添加仓库 |
| helm search repo | 搜索 Chart |
| helm install | 安装 Release |
| helm upgrade | 升级 Release |
| helm rollback | 回滚 Release |
| helm uninstall | 卸载 Release |
| helm list | 查看 Release 列表 |
| helm create | 创建 Chart |
| helm package | 打包 Chart |
| helm lint | 检查 Chart |
- 始终使用版本锁定
--version - 使用 values 文件而非
--set - 为不同环境创建不同的 values 文件
- 定期更新仓库索引
helm repo update - 生产环境升级前先
--dry-run