(一)Helm简介
一、Helm介绍
java使用maven;前端使用npm;python使用pip;运维使用yum或apt。分工不同,诉求却相同,都希望有一种资源管理工具,可以方便查找、下载、安装、使用和分发程序包。
helm 也一样,它是 k8s 的资源包管理工具。它使我们操作的对象不再是单个资源,而是一个实体。比如我们需要一个负载均衡的 web 服务,如果不使用 helm,我们需要写 deployment,service 和 ingress 才可以让集群外部的客户使用。但是如果使用 helm,直接使用一个 install 命令便可以实现相同的功能。
推荐使用 helm 的 3.0 版本。
二、Helm术语
2.1 Chart
chart 是 k8s 的资源包。一个 Helm 包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含 Kubernetes 集群中的服务定义,类似 Homebrew 中的 formula、APT 的 dpkg 或者 Yum 的 rpm 文件。
2.2 Release
release 是 k8s 运行的资源。可以将其类比为进程。只不过在 k8s 中,运行的实体是一个一个的资源。在 Kubernetes 集群上运行的 Chart 的一个实例。在同一个集群上,一个 Chart 可以安装很多次。每次安装都会创建一个新的 release。例如一个 MySQL Chart,如果想在服务器上运行两个数据库,就可以把这个 Chart 安装两次。每次安装都会生成自己的 Release,会有自己的 Release 名称。比如 deployment、pod、configmap、secret 等。
2.3 Repository
Repository用于发布和存储Chart的存储库
三、Helm架构
Chart Install 过程:
- Helm从指定的目录或者tgz文件中解析出Chart结构信息
- Helm将指定的Chart结构和Values信息通过gRPC传递给Tiller
- Tiller根据Chart和Values生成一个Release
- Tiller将Release发送给Kubernetes运行。
Chart Update过程:
- Helm从指定的目录或者tgz文件中解析出Chart结构信息
- Helm将要更新的Release的名称和Chart结构,Values信息传递给Tiller
- Tiller生成Release并更新指定名称的Release的History
- Tiller将Release发送给Kubernetes运行
四、下载安装Helm
4.1 下载Helm
wget https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz
4.2 Helm解压
tar -zxvf helm-v3.0.0-linux-amd64.tar.gz
4.3 Helm安装
# mv linux-amd64/helm /usr/local/bin/
4.4 Helm验证
# helm version
4.5 Helm快速命令补全
# yum install -y bash-completion
# source /usr/share/bash-completion/bash_completion
# source <(helm completion bash)
# echo "source <(helm completion bash)" >> ~/.bashrc