如何在 K8S 集群中安装 Helm ?

作者: 王炳明 分类: Kubernetes 发布时间: 2021-04-30 13:53 热度:1,932

Helm 官方文档:https://helm.sh/zh/docs/

1. 为什么需要 Helm?

每个成功的软件平台都有一个优秀的打包系统,比如 Debian、Ubuntu 的 apt,Redhat、Centos 的 yum。而 Helm 则是 Kubernetes 上的包管理器。

如果只是部署单台或者少数的几台应用,那么使用 kubectl apply 这样的方式就已经足够。

但如果应用组成的服务多达几十上百呢?一个一个 apply 就显得太过麻烦,问题在于人工管理,有如下问题

  1. 人工管理,很难保存大量服务、应用之间的依赖关系。
  2. 服务应用的 yaml 配置无法模板化、参数化,导致配置文件无法复用,细微的改变都要新建一个 yaml 文件
  3. 无法支持应用级别的版本管理,只能对单个 Deployment 进行回滚。
  4. 无法对服务层级的应用状态进行验证,健康检查只对单个容器有用。

这时候,就需要一个更高层级的、用来管理大批量应用的工具,而这个工具就是 Helm

2. Helm 中的基本概念?

Helm 中有两个最重要的概念:

  • chart:k8s 中对象的模板、参数关系、依赖关系、文档说明。类似于 Python编程中的 类
  • release:chart 的具体运行实例,类似于 Python编程中的实例

Helm 中的组件有两个:

  1. Helm 客户端:helm 的命令行工具,与后端 Tiller 服务器交互,用来管理(从零新建、从k8s集群中安装) chart 的。
  2. Tiller 服务器:处理 helm 客户端的请求,负责管理(构建、升级、卸载) release 的

3. 如何部署 Helm?

具体查看:https://helm.sh/zh/docs/intro/install/

在安装有 kubectl 命令的节点上(我这里选 Master)

第一种方法:一条命令搞定

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

第二种方法:

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

第三种方法:

去 https://github.com/helm/helm/releases ,根据自身平台下载安装包

这里以 Linux amd64 为例

wget https://get.helm.sh/helm-v3.5.4-linux-arm64.tar.gz
tar -zxvf helm-v3.5.4-linux-amd64.tar
mv linux-amd64/helm /usr/local/bin/helm

安装完成后,执行 helm version 检测是否安装成功。

helm 有很多子命令和参数,为了提高使用命令行的效率,通常建议安装 helm 的 bash 命令补全脚本,方法如下:

helm completion bash > .helmrc
echo "source .helmrc" >> .bashrc

接下来安装 helm 的 Tiller 服务器?

我安装的是 v3.5.3 的 helm,安装方法与之前 v2 的版本不一样

如何在 K8S 集群中安装 Helm ?

点进去一看,才发现 v3 的 helm 移除了 Tiller,所以也不用再安装它了。

4. 使用 helm ?

添加镜像仓库(注意不要用网上很多人推荐阿里源,已经很久没有更新了)

helm repo add stable http://mirror.azure.cn/kubernetes/charts/

再查看仓库列表

helm repo list

查看源里可安装的包(chart)

helm search repo stable

安装一个包

helm install stable/mysql --generate-name

如何在 K8S 集群中安装 Helm ?

查询已经安装的 chart(应该叫release)

helm list

文章有帮助,请作者喝杯咖啡?

发表评论