helm是k8s的包管理器。
我们知道在k8s上部署程序,我们需要做的就是制作镜像,然后编写yaml
资源文件。如果只是基于k8s平台部署自己的程序还好,然而,如果程序部署流程非常复杂,尤其是涉及k8s平台管理类的资源,需要创建各种Deployment
、Service
、ServiceAccount
、RoleBinding
等,那么存在一堆超复杂的yaml
资源定义就是不可避免的了。那么此时如何将这个程序分发给其他用户使用呢?最简单的办法就是使用helm
包管理器。
由于helm
程序还在快速发展中,以下介绍仅供参考,具体可以参考官方文档。
apt
程序deb
包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安装、卸载k8s程序。
注意:我们访问的仓库可能国内网络无法使用,我们可以通过设置shell环境变量来让helm通过代理网络访问,例子如下:
export http_proxy=192.168.1.103:10809
export https_proxy=192.168.1.103:10809
helm search <仓库> <软件包>
例子:
其中,hub
是指ArtifactHub,包含多个公有库。如果需要访问私有仓库或指定的仓库,我们可以用命令helm repo add <仓库名> <仓库地址>
先添加一个仓库,然后使用指定仓库名来搜索。
实际上,在命令行中查询chart比较难以观察,我们可以直接在网页上查询ArtifactHub。
安装软件包前我们需要先添加仓库。
helm repo add <仓库名> <仓库地址>
例子:
添加了仓库后,可以使用update
命令更新仓库信息,更新后才能安装软件包。
helm repo update
例子:
helm install <自定义release名字> <chart包名>
apt
包管理器等不同,安装helm时,我们需要指定一个自定义的名字。注意:如果要安装到指定命名空间,可以用--namespace
参数。
helm ls
注意:如果要查询安装到指定命名空间的包,用--namespace
参数。
helm uninstall <自定义release名字>
--namespace
问题同上。
helm upgrade <自定义release名字> <chart包名>
--namespace
问题同上。