helm包管理工具
helm是k8s的包管理器。
我们知道在k8s上部署程序,我们需要做的就是制作镜像,然后编写YAML资源文件。如果只是基于k8s平台部署自己的程序还好,然而,如果程序部署流程非常复杂,尤其是涉及k8s平台管理类的资源,需要创建各种Deployment、Service、ServiceAccount、RoleBinding等,那么存在一堆超复杂的YAML资源定义就是不可避免的了。那么此时如何将这个程序分发给其他用户使用呢?最简单的办法就是使用helm包管理器。
由于helm程序还在快速发展中,以下介绍仅供参考,具体可以参考官方文档。
helm中的几个概念
- repo:软件包仓库,类比于Ubuntu的APT源
- helm:包管理器程序,可以类比于Ubuntu中的
apt命令行程序 - chart:程序包,可以类比于ubuntu中的
deb包 - ArtifactHub:该地址注册了各种公有库的chart包资源,相当于是repo的仓库
helm安装
Ubuntu下,我们可以通过如下操作安装helm程序。
curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
sudo apt-get install apt-transport-https --yes
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
helm基本使用方法
下面介绍如何使用helm命令行工具,以及如何通过helm安装、卸载k8s程序。
注意:我们访问的仓库可能国内网络无法使用,我们可以通过设置shell环境变量来让helm通过代理网络访问,下面是一个例子。
export http_proxy=192.168.1.103:10809
export https_proxy=192.168.1.103:10809
查询chart包
查询chart包可以使用如下格式命令。
helm search <仓库> <软件包>
下面是一个例子。

其中,hub是指ArtifactHub,包含多个公有库。如果需要访问私有仓库或指定的仓库,我们可以用命令helm repo add <仓库名> <仓库地址>先添加一个仓库,然后使用指定仓库名来搜索。
实际上,在命令行中查询chart比较难以观察,我们可以直接在网页上查询ArtifactHub。

添加仓库
安装软件包前我们需要先添加仓库。
helm repo add <仓库名> <仓库地址>
下面是一个例子。

更新仓库信息
添加了仓库后,可以使用update命令更新仓库信息,更新后才能安装软件包。
helm repo update
下面是一个例子。

安装chart包
使用如下格式命令安装chart包。
helm install <自定义release名字> <chart包名>
- 和APT包管理器等不同,安装chart包时我们需要指定一个自定义的名字。
注意:如果要安装到指定命名空间,可以用--namespace参数。
查看已安装chart包
helm ls
注意:如果要查询安装到指定命名空间的包,用--namespace参数。
卸载chart包
helm uninstall <自定义release名字>
--namespace问题同上。
升级chart包
helm upgrade <自定义release名字> <chart包名>
--namespace问题同上。