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
等都要放到这里。