java 使用 maven;前端使用 npm;python 使用 pip;运维使用 yum 或 apt。分工不同,诉求却相同,都希望有一种资源管理工具,可以方便查找、下载、安装、使用和分发程序包。
helm 也一样,它是 k8s 的资源包管理工具。它使我们操作的对象不再是单个资源,而是一个实体。比如我们需要一个负载均衡的 web 服务,如果不使用 helm,我们需要写 deployment,service 和 ingress 才可以让集群外部的客户使用。但是如果使用 helm,直接使用一个 install 命令便可以实现相同的功能。
推荐使用 helm 的 3.0 版本。
chart 是 k8s 的资源包。可以将其类比为程序的源代码。比如 .java, .sh, .py。
release 是 k8s 运行的资源。可以将其类比为进程。只不过在 k8s 中,运行的实体是一个一个的资源,比如 deployment、pod、configmap、secret 等。
$ wget https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz
$ tar -zxvf helm-v3.0.0-linux-amd64.tar.gz
$ mv linux-amd64/helm /usr/local/bin/
$ helm version version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}
$ yum install -y bash-completion $ source /usr/share/bash-completion/bash_completion $ source <(helm completion bash) $ echo "source <(helm completion bash)" >> ~/.bashrc