简介

Helm 是一个强大的工具,帮助你管理 Kubernetes 应用程序。通过 Helm Charts,可以定义、安装和升级即使是最复杂的 Kubernetes 应用程序。
Helm Charts 易于创建、版本控制、共享和发布。这意味着你可以更高效地使用 Helm,避免手动复制粘贴配置文件的繁琐过程。
Helm 已成为 CNCF(云原生计算基金会)的毕业项目,并由 Helm 社区持续维护,确保其稳定性和持续发展。
- 管理复杂性
Helm Charts 可以描述即使是最复杂的应用程序,提供可重复的应用安装流程,并作为应用配置的单一权威来源,确保一致性和可靠性。
- 轻松更新
使用 Helm,你可以通过原地升级和自定义钩子,轻松管理应用的更新过程,减少因更新带来的困扰。
- 简单共享
Helm Charts 易于版本控制、共享,并且可以托管在公共或私有服务器上,方便团队协作和应用分发。
- 回滚
如果更新出现问题,使用 helm rollback 命令可以轻松回滚到之前的发布版本,确保应用的稳定运行。
Helm 的工作原理
结合以上概念,Helm 的工作流程可以这样理解:
- 安装 Charts: Helm 将 Charts 安装到 Kubernetes 集群中,每次安装都会创建一个新的 Release。
- 管理 Releases: 每个 Release 独立管理,允许同一个 Chart 被多次部署,满足不同的需求。
- 查找 Charts: 通过搜索 Helm 的 Chart Repository,可以找到并获取新的 Charts 来部署。
整体图表示意:
|
|
三个核心概念
Chart(图表)
Chart 是 Helm 的一个包。它包含了在 Kubernetes 集群中运行一个应用、工具或服务所需的所有资源定义。可以将其类比为 Kubernetes 版本的 Homebrew 配方、Apt 的 dpkg 或 Yum 的 RPM 文件。
图表示意:
|
|
Helm 会按照一下顺序部署:
Namespace —> NetworkPolicy —> ResourceQuota —> LimitRange —> PodSecurityPolicy —> PodDisruptionBudget —> ServiceAccount —> Secret —> SecretList —> ConfigMap —> StorageClass —> PersistentVolume —> PersistentVolumeClaim —> CustomResourceDefinition —> ClusterRole —> ClusterRoleList —> ClusterRoleBinding —> ClusterRoleBindingList —> Role —> RoleList —> RoleBinding —> RoleBindingList —> Service —> DaemonSet —> Pod —> ReplicationController —> ReplicaSet —> Deployment —> HorizontalPodAutoscaler —> StatefulSet —> Job —> CronJob —> Ingress —> APIService
Repository(仓库)
Repository 是存放和共享 Charts 的地方。它类似于 Perl 的 CPAN 存档或 Fedora 的软件包数据库,但专门用于 Kubernetes 的包。
图表示意:
|
|
Release(发布版本)
Release 是在 Kubernetes 集群中运行的 Chart 的一个实例。一个 Chart 通常可以在同一个集群中安装多次。每次安装都会创建一个新的 Release。例如,假设有一个 MySQL Chart。如果你希望在集群中运行两个数据库实例,可以安装该 Chart 两次,每次都会有自己独立的 Release 和 Release 名称。
图表示意:
|
|
安装
Every release of Helm provides binary releases for a variety of OSes. These binary versions can be manually downloaded and installed.
- Download your desired version
- Unpack it (
tar -zxvf helm-v3.0.0-linux-amd64.tar.gz) - Find the
helmbinary in the unpacked directory, and move it to its desired destination (mv linux-amd64/helm /usr/local/bin/helm)
创建项目模板
通过命令可以创建一个 Helm 项目模板。
|
|
生成以下文件和目录:
|
|
总结
Helm 通过 Charts、Repositories 和 Releases 三个核心概念,简化了在 Kubernetes 集群中应用、工具和服务的部署与管理。Charts 提供了应用的定义,Repositories 便于 Charts 的共享和分发,而 Releases 则负责在集群中具体运行和管理这些应用实例。