Helm Chart 从入门到精通:七天进阶教程
📅 第1天:Helm 基础概念与安装
Helm 是什么?
Helm 是 Kubernetes 生态中的事实标准包管理工具,类似于 Linux 系统中的 yum 或 apt。它通过 Chart(图表)来定义、安装和升级 Kubernetes 应用 。
核心概念
- Chart:Helm 的打包格式,是描述一组 Kubernetes 相关资源的文件集合
- Release:Chart 在集群中运行的实例
- Repository:存储预置应用模板的远程/本地仓库
快速开始
# 添加官方仓库
helm repo add stable https://charts.helm.sh/stable
helm repo update
# 安装应用
helm install my-release stable/nginx
关键提示:生产环境强烈建议使用 Helm v3 版本,其去除了 Tiller 组件,采用更安全的 RBAC 模型 。
📅 第2天:Chart 结构与模板语法
Chart 目录结构
mychart/
├── Chart.yaml # Chart 元数据
├── values.yaml # 默认配置值
├── templates/ # 模板文件目录
│ ├── deployment.yaml
│ ├── service.yaml
│ └── _helpers.tpl
└── charts/ # 依赖子 Chart
模板语法基础
Helm 使用 Go template 引擎渲染模板,支持变量、条件判断和循环:
# 变量引用
apiVersion: {{ .Values.apiVersion }}
kind: {{ .Values.kind }}
# 条件判断
{{- if .Values.enabled }}
# 内容
{{- end }}
# 循环
{{- range .Values.items }}
– {{ . }}
{{- end }}
📅 第3天:常用命令与参数详解
核心命令语法
helm install [NAME] [CHART] [flags]
常用参数速查表
| –namespace | 指定命名空间 | -n myns |
| –values | 覆盖 values 文件 | -f overrides.yaml |
| –set | 动态参数设置 | –set replicaCount=3 |
| –atomic | 失败自动回滚 | –atomic |
| –dry-run | 模拟安装 | –dry-run |
| –version | 指定版本 | –version 1.2.3 |
Chart 路径三种形式
- 仓库引用:stable/nginx-ingress
- 本地路径:./mychart
- 打包文件:mychart-1.0.0.tgz
📅 第4天:Values 文件与配置管理
多环境配置策略
通过 values 文件实现环境差异化配置:
charts/
├── base/
│ └── values.yaml # 基础配置
├── production/
│ └── values.yaml # 生产环境覆盖
└── staging/
└── values.yaml # 测试环境覆盖
组合使用示例
helm install myapp ./chart \\
-f base/values.yaml \\
-f production/values.yaml
GitLab Runner 配置案例
# values.yaml
gitlabUrl: https://gitlab.example.com
rbac:
create: true
runnerToken: "your-token-here"
concurrent: 10
配置缓存存储(支持 S3/GCS/Azure):
runners:
cache:
secretName: s3access
type: s3
创建 Kubernetes 密钥:
kubectl create secret generic s3access \\
–from-literal=accesskey="YourAccessKey" \\
–from-literal=secretkey="YourSecretKey"
📅 第5天:依赖管理与多环境部署
依赖项控制
# 手动下载依赖
helm dependency update
# 构建依赖
helm dependency build
# 跳过依赖检查
helm install –skip-crds
蓝鲸平台 Helmfile 实践
使用 helmfile 管理多 release 部署:
# base.yaml.gotmpl
helmfiles:
– path: ./base-storage.yaml.gotmpl
– path: ./base-blueking.yaml.gotmpl
selectors:
– seq=first
– path: ./base-blueking.yaml.gotmpl
selectors:
– seq=second
通过 seq 标签控制启动次序,确保服务依赖关系正确 。
仓库配置
# 添加 Charts 仓库
helm repo add blueking https://hub.bktencent.com/chartrepo/blueking
helm repo update
helm repo list
📅 第6天:生产环境最佳实践
安全加固措施
helm install –verify –keyring ~/.gnupg/pubring.gpg
# values.yaml
rbac:
create: true
rules:
– apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list"]
rbac:
create: true
serviceAccount:
name: your-service-account
版本控制策略
- 采用语义化版本控制:helm install myapp –version ~1.2.3
- 结合 GitOps 工作流:helm install –generate-name
资源预检查
helm install \\
–set resources.requests.cpu=200m \\
–set resources.limits.memory=1Gi
📅 第7天:高级技巧与故障排查
典型问题排查
| 资源冲突 | helm list –all-namespaces 检查现有 release |
| CRD 未就绪 | kubectl wait –for condition=established –timeout=60s crd/xxx |
| 安装失败 | helm install –debug –dry-run 查看详细日志 |
调试技巧
# 查看渲染模板
helm template mychart > debug.yaml
# 详细日志输出
helm install –debug –dry-run
# 健康状态检查
helm status myrelease
版本升级与回滚
# 无缝升级
helm upgrade –install –wait –timeout 5m
# 查看历史版本
helm history myrelease
# 执行回滚
helm rollback myrelease 2
资源清理策略
# 保留历史记录
helm uninstall –keep-history
# 级联删除
helm uninstall –cascade=background
生产架构决策框架
| 运维负担 | 零 | 全部自行承担 | 最小 |
| 数据控制 | 平台托管 | 完全控制 | 本地 |
| 定制能力 | 受限 | 完全可修改 | 中等 |
| 启动时间 | 分钟级 | 小时-天级 | 即时 |
📊 学习路线总结
| 入门 (1-2天) | 基础概念、Chart 结构 | 安装 nginx Chart |
| 进阶 (3-4天) | 命令参数、Values 管理 | 多环境配置部署 |
| 高级 (5-7天) | 依赖管理、生产实践 | GitLab Runner 完整部署 |
通过这七天的系统学习,您将掌握从 Helm 基础到生产级部署的完整技能栈,能够独立设计和管理企业级 Kubernetes 应用部署方案。
参考来源
- 导入HyperDetect容器应用镜像和容器应用Chart – OceanStor Dorado V700R001 HyperDetect特性指南(文件业务) – 华为
- Helm安装命令详解与Kubernetes包管理实践-CSDN博客
- 文档中心 | 蓝鲸智云
- 配置极狐GitLab Runner Helm chart – GitLab Runner – GitLab 文档中心
- 邮件推送 数据结构_腾讯云
- 附录3:自定义模板可用变量 · pppscn/SmsForwarder Wiki · GitHub
- Mem0 生产级部署实战:从架构设计到K8s高可用落地的万字指南-CSDN博客
- 极狐GitLab Runner Helm chart – GitLab Runner – GitLab 文档中心
- 文档中心 | 蓝鲸智云