Helm
my-app/
├── Chart.yaml # Chart的基本信息
├── values.yaml # 默认配置值
├── charts/ # 依赖的子chart
├── templates/ # Kubernetes资源模板
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── ingress.yaml
│ └── _helpers.tpl # 模板助手函数
└── .helmignore # 忽略文件列表Helm Chart
什么是 Helm Chart?
Helm Chart 是 Kubernetes 应用的打包格式,类似于操作系统中的软件包(如 deb、rpm)。它是一组预先配置好的 Kubernetes 资源集合,使得部署复杂应用变得简单。
Helm Chart 的核心概念
Chart:一个 Helm 包,包含了运行 Kubernetes 应用所需的所有资源定义
Repository:存储和共享 Chart 的地方,类似于软件包仓库
Release:在集群中运行的 Chart 的一个实例,每次安装 Chart 都会创建一个新的 release
Helm Chart 的结构
一个典型的 Helm Chart 包含以下文件和目录:
mychart/
├── Chart.yaml# 包含 Chart 元数据的文件
├── values.yaml# 默认配置值
├── templates/# 模板目录,包含资源定义模板
│ ├── deployment.yaml# Kubernetes Deployment 模板
│ ├── service.yaml# Kubernetes Service 模板
│ └── ...# 其他 Kubernetes 资源模板
├── charts/# 依赖的子 Chart
└── README.md# 使用说明
Helm 的主要优势
简化复杂应用部署
一条命令可以部署包含多个组件的应用
例如:
helm install victoria-metrics-k8s-stack -n vm
配置管理
通过
values.yaml文件集中管理配置可以在安装或升级时覆盖默认配置
版本控制和回滚
每次安装或升级都会创建新版本
可以轻松回滚到之前的版本:
helm rollback release-name 1
依赖管理
可以定义和管理 Chart 之间的依赖关系
类似于软件包管理器的依赖处理
模板化
使用 Go 模板语言动态生成 Kubernetes 资源
实现高度可配置的部署
Helm 常用命令
bash
# 安装 Charthelm install release-name chart-name
# 升级 Chart
helm upgrade release-name chart-name
# 卸载 Chart
helm uninstall release-name
# 列出已安装的 Chart
helm list
# 添加 Chart 仓库
helm repo add repo-name repo-url
# 更新本地仓库缓存
helm repo update
实际应用场景
在您的集群中,Victoria Metrics Stack 是通过 Helm Chart 部署的,这使得部署和管理如此复杂的监控系统变得简单。当您执行 helm uninstall victoria-metrics-k8s-stack -n vm 时,Helm 会自动删除所有相关的 Kubernetes 资源,包括 Deployments、Services、ConfigMaps 等。
Helm 是 Kubernetes 生态系统中的标准工具,广泛用于部署从简单应用到复杂分布式系统的各种工作负载。