跳至主要內容

k8s 软件管理工具-Helm

blogreskubernetesLinuxk8s约 1451 字大约 5 分钟

k8s 软件管理工具-Helm

k8s-软件管理工具-Helm

Helm 是 Kubernetes 的包管理器

Helm 版本选择

Helm版本支持策略: https://helm.sh/zh/docs/topics/version_skew/open in new window

Helm 版本支持的 Kubernetes 版本
3.14.xopen in new window1.27.x - 1.24.x
3.13.xopen in new window1.27.x - 1.24.x
3.12.xopen in new window1.27.x - 1.24.x
3.11.xopen in new window1.26.x - 1.23.x
3.10.xopen in new window1.25.x - 1.22.x
3.9.xopen in new window1.24.x - 1.21.x
3.8.xopen in new window1.23.x - 1.20.x
3.7.xopen in new window1.22.x - 1.19.x
3.6.xopen in new window1.21.x - 1.18.x
3.5.x1.20.x - 1.17.x
3.4.x1.19.x - 1.16.x

安装 Helm

安装 Helmopen in new window

说明文档:docs.helm.sh/zh/open in new windowv3.helm.sh/zh/docs/open in new window

仓库:github.com/helm/helmopen in new windowgitee.com/k8s_s/helmopen in new window

包资源下载:releases/v3.14.3open in new windowHelm 下载提取码:1234open in new window

a、从二进制安装

第 1 步: 前往:releases/v3.14.3open in new window 或者上面的地址

第 2 步: 使用 wget 下载二进制文件。

wget -O https://get.helm.sh/helm-v3.14.3-linux-amd64.tar.gz

第 3 步: 解压下载的文件。

chmod -R 777 helm-v3.14.3-linux-amd64.tar.gz && tar -zxvf helm-v3.14.3-linux-amd64.tar.gz &&   chmod +x /root/linux-amd64/helm && cp /root/linux-amd64/helm /usr/bin/ && ln -s /usr/bin/helm /usr/local/bin/ && rm -rf /root/linux-amd64 && ls -all /usr/local/bin/helm && helm version

第 6 步: 添加repo

添加稳定的HelmRepo

第 7 步: 查看存储类型

kg sc --all-namespaces

helm3 变化:

  1. 去除Tiller 和 helm serve

  2. 预定义仓库被移除,添加helm hub

helm search 现在区分 repo 和hub

repo 是自己手动添加的源

比如官方的有稳定版和在建设的

helm repo add stable https://kubernetes-charts.storage.googleapis.com
helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/
helm repo add ibmstable https://raw.githubusercontent.com/IBM/charts/master/repo/stable
# 此处 repo add 的时候,如果名称已存在了也不提醒,居然直接覆盖了,是bug吧

可以把 hub 和 google repo 配合起来食用,效果更佳

helm search hub mysql
  1. Values 支持 JSON Schema 校验器

  2. 代码复用 - Library Chart 支持

当一个 Chart 想要使用该 Library Chart内的一些模板时,可以在 Chart.yaml 的 dependencies 依赖项中指定

  1. requirements.yaml 被整合到了 Chart.yaml 中,但格式保持不变

helm2/3 命令差异

常用命令一览

命令Helm2Helm3对应h3增强、区别命令说明
create创建具有给定名称的新图表
delete-给定发布名称,从Kubernetes中删除该发布
dependency管理图表的依赖项
fetch- pull从存储库下载图表,并(可选)将其解压缩到本地目录中
get下载命名版本
history获取发布历史记录
home- env显示HELM_HOME的位置
init-在客户端和服务器上初始化Helm
inspect- show查阅图表
install安装图表存档
lint检查图表中可能出现的问题
list列表发布
package将图表目录打包到图表存档中
plugin添加、列出或删除头盔插件
repo添加、列出、删除、更新和索引图表存储库
reset-从集群卸载Tiller
rollback将发布回滚到以前的版本
search在图表中搜索关键字
serve-启动本地http web服务器
status显示命名版本的状态
template本地渲染模板
test测试发布
upgrade升级发行版
verify验证给定路径上的图表是否已签名且有效
version打印客户端/服务器版本信息
env-Helm客户端环境信息
help-关于任何命令的帮助
pull-从存储库下载图表,并(可选)将其解压缩到本地目录中
show-显示图表的信息
uninstall-卸载发行版
  • env是对被删除的命令home的强化
  • pull是对被删除的命令fetch的替换
  • show是对被删除的命令inspect的替换
  • help命令本身在Helm 2时代就可以使用,只是helm --help里面没有显示,算是文档自包含的强化
  • uninstall是功能特性的增强

Helm 3: 命令发生的变化

命令Helm 2Helm 3命令说明区别Helm 2 命令说明Helm 3命令说明
get下载命名版本下载命名版本的扩展信息
install安装图表存档安装图表
plugin添加、列出或删除头盔插件安装、列出或卸载Helm插件
test测试发布为发布运行测试
version打印客户端/服务器版本信息打印客户端版本信息

b、从sh文件安装

第一步: 下载最新的 helm 安装脚本。 get_helm.sh可以修改:downloadFile()方法的 DOWNLOAD_URL :指定可以下载的helm文件地址

curl -fsSL -o get_helm3.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
checkDesiredVersion方法返回:TAG="v3.14.3"
helm-${TAG}-${OS}-${ARCH}.换成 helm-v3.14.3-linux-amd64.
HELM_TMP_ROOT="$(mktemp -dt helm-installer-XXXXXX)" 换成 HELM_TMP_ROOT="helm-installer-T53LxQ"
local github_release_url="https://github.com/helm/helm/releases/download/${TAG}" 换成 https://github.com/helm/

手动下载:
curl -SsL https://github.com/helm/helm-v3.14.3-linux-amd64.tar.gz.sha256 -o /tmp/helm-installer-T53LxQ/helm-v3.14.3-linux-amd64.tar.gz.sha256

curl -SsL https://github.com/helm/helm-v3.14.3-linux-amd64.tar.gz -o /tmp/helm-installer-T53LxQ/helm-v3.14.3-linux-amd64.tar.gz
chmod 777 get_helm3.sh && chmod +x get_helm3.sh
./get_helm3.sh
helm |  helm version

c、添加稳定的HelmRepo

# 添加阿里云的 chart 仓库
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo add stable http://mirror.azure.cn/kubernetes/charts   推荐
helm repo add bitnami https://charts.bitnami.com/bitnami
删除:helm repo remove bitnami

# 更新chart仓库
a@node1:~$ helm repo update

# 查看配置的 chart 仓库有哪些
a@node1:~$ helm repo list
NAME    URL
aliyun  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
stable  http://mirror.azure.cn/kubernetes/charts

# 从指定 chart 仓库地址搜索 chart
a@node1:~$ helm search repo aliyun | grep redis
aliyun/redis                    1.1.15          4.0.8           Open source, advanced key-value store. It is of...
aliyun/redis-ha                 2.0.1                           Highly available Redis cluster with multiple se...

a@node1:~$ helm search repo stable | grep redis
stable/prometheus-redis-exporter        3.5.1           1.3.4                   DEPRECATED Prometheus exporter for Redis metrics
stable/redis                            10.5.7          5.0.7                   DEPRECATED Open source, advanced key-value stor...
stable/redis-ha                         4.4.6           5.0.6                   DEPRECATED - Highly available Kubernetes implem...

a@node1:~$ helm search repo bitnami | grep redis
bitnami/redis                                   15.6.4          6.2.6           Open source, advanced key-value store. It is of...
bitnami/redis-cluster                           7.0.13          6.2.6           Open source, advanced key-value store. It is of...