helm基础
helm基础
简介
Helm 是 Kubernetes 的包管理器,类似 python 的 pip 和 centos 中的 yum。
具体文档可以看这个: helm.sh 。
使用的先决条件
- 一个
Kubernetes集群 - 确定你安装版本的安全配置
- 安装和配置
Helm
安装
可以通过系统的包管理器安装,比如
apt或者dnf。也可以通过下述方法安装:
1
2
3curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh也可以直接下载
Canary构建。
这些不是官方版本,可能不稳定。但是这提供测试边缘特性的条件。地址如下:
使用
三个基本概念
Chart 代表着 Helm 包。它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。你可以把它看作是 Homebrew formula,Apt dpkg,或 Yum RPM 在 Kubernetes 中的等价物。
Repository(仓库) 是用来存放和共享 charts 的地方。它就像 Perl 的 CPAN 档案库网络或是 Fedora 的软件包仓库,只不过它是供 Kubernetes 包所使用的。
Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。以 MySQL chart 为例,如果你想在你的集群中运行两个数据库,你可以安装该 chart 两次。每一个数据库都会拥有它自己的 release 和 release name。
使用 helm 安装软件即:Helm 安装 charts 到 Kubernetes 集群中,每次安装都会创建一个新的 release。你可以在 Helm 的 chart repositories 中寻找新的 chart。
常用命令
1 | helm completion # 为指定的shell生成自动补全脚本 |
完成一个自己的helm chart
关于chart的个人理解
chart 在我感觉就是一个模板化的 k8s 中的 deploy 文件集合。
在原来使用 k8s 时,会提前定义好比如 service.yml,deployment.yml 等文件,然后通过 kubectl apply -f . 的方式部署。
这里有个问题就是,比如我需要升级项目,镜像版本从 v1 变成了 v2,就需要更改对应的文件,如果我想更改某个 deployment 的部署个数,也要修改配置文件,然后通过 kubectl 进行更新。
这样需要频繁修改 yml 文件,一不注意 yml 就会解析异常。而且除了手动备份 yml 之外,没有备份和历史记录.
如果有个回退到某个时间的需要,需要寻找整个项目组所有当时的文件备份,很容易出错。
而 helm 就优化了这一流程。对于仅仅是镜像版本的更新或者部署个数的修改,都可以通过变量的方式传入,这样只需要一条 helm 命令,而不需要修改文件来进行操作。
对于不同版本的管理,helm 更是有自己的部署历史,可以很方便的回退到特定的版本。
总结来说,Helm简化了 Kubernetes 应用程序的部署和管理过程,通过使用模板化的 Chart 和值的动态传递,减少了手动修改 YAML文件 的频率,并提供了版本管理和回滚的功能,方便管理不同版本的应用程序。
创建一个helm chart
可以在安装好的 helm 服务器上使用 helm create demo 命令来创建一个名叫 demo 的 helm chart 项目。
调试模板
1 | helm lint # 是验证chart是否遵循最佳实践的首选工具。 |
更多使用
可以参考这个 helm 中文文档 。
不同文件分析
需要特别说明, helm 并没有强制要求文件名,但是为了方便维护和团队合作,请不要随意命名。
Chart.yaml
这个文件定义了整个chart的基本信息values.yaml
这里是安装时用来读取的参数列表,或者叫配置文件。但是他的优先级是最低的。
默认使用values.yaml,可以被父 chart的values.yaml覆盖,继而被用户提供 values 文件覆盖, 最后会被--set 参数覆盖,优先级为values.yaml最低,--set 参数最高。templates
这里放的就是helm chart的模板文件。项目需要用到的比如deployment.yaml,service.yaml等都要放到这里。

