技术视角解密神秘学植物:白鼠尾草、迷迭香与薰衣草的科学应用框架
2026/7/16 15:18:36
首先,我们需要分清 Helm 和 Helm Chart。
apt、CentOS 的yum或 Node.js 的npm。它的主要作用是简化在 Kubernetes 集群上查找、共享、安装、升级和管理应用程序的过程。.deb、.rpm或 Docker 镜像一样,但它是专门为 Kubernetes 环境设计的。简单来说:Helm 是工具,Chart 是打包好的应用。
在 Kubernetes 上部署一个简单的应用(例如一个 Nginx Web 服务器)可能只需要几个 YAML 文件(Deployment, Service)。但是,部署一个复杂的微服务应用(例如包含前端、后端、数据库、缓存、配置等)可能需要几十个甚至上百个 YAML 文件。
传统方式(kubectl apply -f)的痛点:
Helm Chart 的解决方案:
values.yaml文件,可以为不同环境提供不同的配置值,而无需修改模板本身。install、upgrade、rollback、uninstall等完整命令,方便管理应用的整个生命周期。一个典型的 Helm Chart 目录结构如下:
my-awesome-app-chart/ ├── Chart.yaml # 【必需】Chart 的元数据文件(名称、版本、依赖等) ├── values.yaml # 【必需】Chart 的默认配置值 ├── templates/ # 【必需】模板文件目录,包含所有 Kubernetes 资源 YAML 模板 │ ├── deployment.yaml │ ├── service.yaml │ ├── configmap.yaml │ └── ingress.yaml ├── charts/ # 【可选】存放本 Chart 依赖的其他子 Charts ├── README.md # 【可选】使用说明 └── crds/ # 【可选】自定义资源定义文件关键文件详解:
Chart.yaml:
apiVersion(Chart API 版本)、name(Chart 名称)、version(遵循语义化版本)、appVersion(所打包应用的版本)、description、dependencies(依赖列表)等。values.yaml:
replicaCount: 2、image.repository: nginx、image.tag: "latest"。values.yaml文件或命令行参数(--set)来覆盖这些默认值。templates/目录:
这是 Chart 的“引擎室”。里面的文件是标准的 Kubernetes YAML 资源清单,但使用了Go 模板语言进行增强。
模板中可以使用变量、函数和流程控制语句。
示例 (templates/deployment.yaml片段):
apiVersion:apps/v1kind:Deploymentmetadata:name:{{.Release.Name}}-{{.Chart.Name}}spec:replicas:{{.Values.replicaCount}}template:spec:containers:-name:{{.Chart.Name}}image:"{{ .Values.image.repository }}:{{ .Values.image.tag }}"{{ .Release.Name }}: 发布名称,由用户helm install [RELEASE_NAME]时指定。{{ .Chart.Name }}: 来自Chart.yaml的名称。{{ .Values.replicaCount }}: 来自values.yaml或用户覆盖的值。Chart: 如上所述,是应用包。Release: 是 Chart 在 Kubernetes 集群中的一个运行实例。同一个 Chart 可以安装多次,每次安装都会创建一个新的 Release(例如:为团队 A 和团队 B 分别安装myappchart,会创建两个独立的 Release:team-a-myapp和team-b-myapp)。Repository(Repo): Chart 的存储库,一个 HTTP 服务器,存放并共享 Charts。类似于 Docker Hub。基本工作流程:
helm install [RELEASE_NAME] [CHART]命令进行安装。templates/下的所有模板与 values 结合,渲染成纯 Kubernetes YAML 文件。Secret(默认存储驱动)来记录这次安装的 Release 状态、配置和版本。helm upgrade和helm rollback正是基于这个 Release 记录来实现的。
安装 Helm 客户端。
查找 Chart:
helm search hub wordpress# 在 Artifact Hub(官方中心仓库)查找helm repoaddbitnami https://charts.bitnami.com/bitnami# 添加第三方仓库helm search repo bitnami/mysql# 在已添加的仓库中查找安装 Chart:
# 使用默认配置安装helminstallmy-wordpress bitnami/wordpress# 使用自定义 values 文件安装helminstallmy-wordpress bitnami/wordpress -f my-values.yaml# 在安装时动态设置参数helminstallmy-wordpress bitnami/wordpress --setreplicaCount=3管理 Release:
helm list# 列出所有 Releasehelm status my-wordpress# 查看 Release 状态helm upgrade my-wordpress bitnami/wordpress -f new-values.yaml# 升级helm rollback my-wordpress1# 回滚到版本 1helm uninstall my-wordpress# 卸载| 方面 | 传统 kubectl | Helm Chart |
|---|---|---|
| 部署单元 | 零散的 YAML 文件 | 一个完整的、版本化的 Chart 包 |
| 配置管理 | 手动编辑/复制 YAML | 模板化,通过values.yaml集中配置 |
| 复用性 | 低,需大量复制修改 | 高,一次编写,多处参数化部署 |
| 生命周期 | 手动操作,易出错 | 完整的install/upgrade/rollback/uninstall命令 |
| 依赖管理 | 手动处理 | 声明式依赖,自动安装 |
| 共享与分发 | 困难(如通过 Git) | 容易,通过 Chart 仓库(Harbor, Artifact Hub) |
适用场景:
需要权衡的方面:
values.yaml的配置。总而言之,Helm Chart 是 Kubernetes 生态中实现“应用即代码”和“GitOps”实践的关键工具,它极大地提升了在 Kubernetes 上部署和管理应用的效率、可靠性和一致性。