- 一、概述">一、概述
- 二、Helm 仓库(
<font style="color:rgb(81, 81, 81);">helm repo</font>)">二、Helm 仓库(<font style="color:rgb(81, 81, 81);">helm repo</font>) - 三、创建 chart(
<font style="color:rgb(81, 81, 81);">helm create</font>)">三、创建 chart(<font style="color:rgb(81, 81, 81);">helm create</font>) - 四、chart 包安装(
<font style="color:rgb(81, 81, 81);">helm install</font>)">四、chart 包安装(<font style="color:rgb(81, 81, 81);">helm install</font>) - 五、管理 chart 依赖(
<font style="color:rgb(81, 81, 81);">helm dependency</font>)">五、管理 chart 依赖(<font style="color:rgb(81, 81, 81);">helm dependency</font>) - 六、Helm 列表(
<font style="color:rgb(81, 81, 81);">helm list</font>)">六、Helm 列表(<font style="color:rgb(81, 81, 81);">helm list</font>) - 七、升级版本(
<font style="color:rgb(81, 81, 81);">helm upgrade</font>)">七、升级版本(<font style="color:rgb(81, 81, 81);">helm upgrade</font>) - 八、发布历史(
<font style="color:rgb(81, 81, 81);">helm history</font>)">八、发布历史(<font style="color:rgb(81, 81, 81);">helm history</font>) - 九、回滚版本(
<font style="color:rgb(81, 81, 81);">helm rollback</font>)">九、回滚版本(<font style="color:rgb(81, 81, 81);">helm rollback</font>) - 十、展示 chart(
<font style="color:rgb(81, 81, 81);">helm show</font>)">十、展示 chart(<font style="color:rgb(81, 81, 81);">helm show</font>) - 十一、拉取 chart(
<font style="color:rgb(81, 81, 81);">helm pull</font>)">十一、拉取 chart(<font style="color:rgb(81, 81, 81);">helm pull</font>) - 十二、Helm 打包(
<font style="color:rgb(81, 81, 81);">helm package</font>)">十二、Helm 打包(<font style="color:rgb(81, 81, 81);">helm package</font>) - 十三、推送 chart 到 harbor(helm cm-push)">十三、推送 chart 到 harbor(helm cm-push)
- 十六、验证 chart(
<font style="color:rgb(81, 81, 81);">helm lint</font>)">十六、验证 chart(<font style="color:rgb(81, 81, 81);">helm lint</font>) - 十七、常用命令总结">十七、常用命令总结
一、概述
Helm 针对 Kubernetes 的 Helm 包管理器。Helm 的一般操作:<font style="color:rgb(1, 1, 1);">helm search</font>:搜索 chart<font style="color:rgb(1, 1, 1);">helm pull</font>:下载 chart 到本地目录查看<font style="color:rgb(1, 1, 1);">helm install</font>:上传 chart 到 Kubernetes<font style="color:rgb(1, 1, 1);">helm list</font>:列出已发布的 chart
# 查看帮助helm --help

官方文档:https://helm.sh/zh/docs/helm/helm/
二、Helm 仓库(<font style="color:rgb(81, 81, 81);">helm repo</font>)
添加、列出、删除、更新和索引 chart 仓库。
1)添加 chart 仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
2)列出已添加的仓库
helm repo list
3)从 chart 仓库中更新本地可用 chart 的信息
helm repo update bitnami
4)删除一个或多个仓库
helm repo remove bitnami
三、创建 chart(<font style="color:rgb(81, 81, 81);">helm create</font>)
使用给定名称创建新的 chart,该命令创建 chart 目录和 chart 用到的公共文件目录。
比如’<font style="color:rgb(58, 58, 58);">helm create foo</font>‘会创建一个目录结构看起来像这样:
$ helm create foofoo/├── .helmignore # Contains patterns to ignore when packaging Helm charts.├── Chart.yaml # Information about your chart├── values.yaml # The default values for your templates├── charts/ # Charts that this chart depends on└── templates/ # The template files└── tests/ # The test files
四、chart 包安装(<font style="color:rgb(81, 81, 81);">helm install</font>)
该命令用于安装 chart 包。安装参数必须是 chart 的引用,一个打包后的 chart 路径,未打包的 chart 目录或者是一个 URL。
要重写 chart 中的值,使用<font style="color:rgb(155, 110, 35);background-color:rgb(255, 245, 227);">--values</font>参数传递一个文件或者使用<font style="color:rgb(155, 110, 35);background-color:rgb(255, 245, 227);">--set</font>参数在命令行传递配置,强制使用字符串要用<font style="color:rgb(155, 110, 35);background-color:rgb(255, 245, 227);">--set-string</font>。当值本身对于命令行太长或者是动态生成的时候,可以使用<font style="color:rgb(155, 110, 35);background-color:rgb(255, 245, 227);">--set-file</font>设置独立的值。
helm install -f myvalues.yaml myredis ./redishelm install --set name=prod myredis ./redishelm install --set-string long_int=1234567890 myredis ./redishelm install --set-file my_script=dothings.sh myredis ./redis
五、管理 chart 依赖(<font style="color:rgb(81, 81, 81);">helm dependency</font>)
- Helm chart 将依赖存储在’charts/‘。对于 chart 开发者,管理依赖比声明了所有依赖的’Chart.yaml’文件更容易。
- 依赖命令对该文件进行操作,使得存储在’charts/‘目录的需要的依赖和实际依赖之间同步变得很容易。
比如 Chart.yaml 声明了两个依赖:
# Chart.yamldependencies:- name: nginxversion: "1.2.3"repository: "https://example.com/charts"- name: memcachedversion: "3.2.1"repository: "https://another.example.com/charts"
- name 是 chart 名称,必须匹配**Chart.yaml**文件中名称。
- version 字段应该包含一个语义化的版本或版本范围。
# Chart.yamldependencies:- name: nginxversion: "1.2.3"repository: "file://../dependency_chart/nginx"
1)列举指定 chart 的依赖
# helm dependency list CHARThelm dependency list wordpress
2)依赖升级
基于 Chart.yaml 内容升级 charts/
# helm dependency update CHART [flags]helm dependency update wordpress
六、Helm 列表(<font style="color:rgb(81, 81, 81);">helm list</font>)
- 列举发布版本,该命令会列举出指定命名空间的所有发布版本,(如果没有指定命名空间,会使用当前命名空间)。
- 默认情况下,只会列举出部署的或者失败的发布,像
<font style="color:rgb(155, 110, 35);background-color:rgb(255, 245, 227);">--uninstalled</font>或者<font style="color:rgb(155, 110, 35);background-color:rgb(255, 245, 227);">--all</font>会修改默认行为。这些参数可以组合使用:<font style="color:rgb(155, 110, 35);background-color:rgb(255, 245, 227);">--uninstalled --failed</font>。 - 默认情况下,最多返回256项,使用
<font style="color:rgb(155, 110, 35);background-color:rgb(255, 245, 227);">--max</font>限制数量,<font style="color:rgb(155, 110, 35);background-color:rgb(255, 245, 227);">--max</font>设置为0 不会返回所有结果,而是返回服务器默认值,可能要比 256 更多。同时使用<font style="color:rgb(155, 110, 35);background-color:rgb(255, 245, 227);">--max</font>和<font style="color:rgb(155, 110, 35);background-color:rgb(255, 245, 227);">--offset</font>参数可以翻页显示。
# -A显示所有helm list --max=10 --offset=2 -A
七、升级版本(<font style="color:rgb(81, 81, 81);">helm upgrade</font>)
该命令将发布升级到新版的 chart。升级参数必须是发布和 chart。chart 参数可以是:chart引用(‘example/mariadb’),chart目录路径,打包的 chart 或者完整 URL。对于 chart 引用,除非使用’<font style="color:rgb(89, 89, 89);background-color:rgb(255, 245, 227);">--version</font>‘参数指定,否则会使用最新版本。
helm upgrade --set foo=bar --set foo=newbar redis ./redis
八、发布历史(<font style="color:rgb(81, 81, 81);">helm history</font>)
检索发布历史,打印给定版本的历史修订。默认会返回最大的256个历史版本。设置<font style="color:rgb(155, 110, 35);background-color:rgb(255, 245, 227);">--max</font>配置返回历史列表的最大长度。
历史发布集合会被打印成格式化的表格,例如:
$ helm history angry-birdREVISION UPDATED STATUS CHART APP VERSION DESCRIPTION1 Mon Oct 3 10:15:13 2016 superseded alpine-0.1.0 1.0 Initial install2 Mon Oct 3 10:15:13 2016 superseded alpine-0.1.0 1.0 Upgraded successfully3 Mon Oct 3 10:15:13 2016 superseded alpine-0.1.0 1.0 Rolled back to 24 Mon Oct 3 10:15:13 2016 deployed alpine-0.1.0 1.0 Upgraded successfully
九、回滚版本(<font style="color:rgb(81, 81, 81);">helm rollback</font>)
回滚发布到上一个版本,回滚命令的第一个参数是发布的名称,第二是修订(版本)号,如果省略此参数,会回滚到上一个版本。
# helm rollback <RELEASE> [REVISION] [flags]# 先查看历史版本helm history myharbor -n harbor# 不指定版本就回退上个版本helm rollback myharbor 1 -n harborhelm rollback myharbor -n harbor
十、展示 chart(<font style="color:rgb(81, 81, 81);">helm show</font>)
# helm show all [CHART] [flags]# 该命令检查chart(目录、文件或URL)并显示所有的内容(values.yaml, Chart.yaml, README)helm show all mysql# helm show values [CHART] [flags]# 该命令检查chart(目录、文件或URL)并显示values.yaml文件的内容helm show values mysql
十一、拉取 chart(<font style="color:rgb(81, 81, 81);">helm pull</font>)
从仓库下载并(可选)在本地目录解压。
# helm pull [chart URL | repo/chartname] [...] [flags]# 仅下载helm pull bitnami/redis# 下载并解压到当前目录helm pull bitnami/redis --untar
十二、Helm 打包(<font style="color:rgb(81, 81, 81);">helm package</font>)
- 将 chart 目录打包到 chart 归档中,该命令将 chart 打包成一个 chart 版本包文件。如果给定路径,就会在该路径中查找 chart(必须包含 Chart.yaml 文件)然后将目录打包。
- 要签名一个 chart,使用
<font style="color:rgb(155, 110, 35);background-color:rgb(255, 245, 227);">--sign</font>参数,在大多数场景中,也要提供<font style="color:rgb(155, 110, 35);background-color:rgb(255, 245, 227);">--keyring path/to/secret/keys</font>和<font style="color:rgb(155, 110, 35);background-color:rgb(255, 245, 227);">--key keyname</font>。
如果想忽略 helm 中的文件,可以在.helmignore进行匹配,该.helmignore 文件支持 Unix shell 全局匹配,相对路径匹配和否定(以!前缀反向匹配)。每行仅考虑一种模式。示例如下:
helm package mysql/# Successfully packaged chart and saved it to: /opt/k8s/helm/mysql-9.3.1.tgz
# .helmignore.git*/temp**/*/temp*temp?
十三、推送 chart 到 harbor(helm cm-push)
将 chart 推送到远程。1)在线安装
helm plugin install https://github.com/chartmuseum/helm-push
2)离线安装
下载地址:https://github.com/chartmuseum/helm-push/tagsbash
# 1、下载安装包
wget https://github.com/chartmuseum/helm-push/releases/tag/v0.10.3
# 2、查看helm的plugin路径:helm env
helm env
# 3、在该路径下创建helm-push文件夹,并将安装包拷贝到该文件夹下解压即可
mkdir /root/.local/share/helm/plugins/helm-push
wget https://github.com/chartmuseum/helm-push/releases/download/v0.10.3/helm-push_0.10.3_linux_amd64.tar.gz
tar zxvf /root/.local/share/helm/plugins/helm-push/helm-push_0.10.3_linux_amd64.tar.gz -C /root/.local/share/helm/plugins/helm-push
查看插件
helm plugin list
3)helm 增加 harbor repo
证书直接在 harbor 上下载
# chartrepo,固定参数,bigdata自定义项目helm repo add local-harbor --username=admin --password=Harbor12345 https://myharbor.com/chartrepo/bigdata/ --ca-file /opt/k8s/helm/ca.crt
### 4)示例演示
bash
# 查看帮助
helm cm-push --help
# 推送,接【目录】
helm cm-push mysql/ local-harbor --ca-file /opt/k8s/helm/ca.crt
# 推送,接【压缩包】
helm cm-push wordpress-15.1.5.tgz local-harbor --ca-file /opt/k8s/helm/ca.crt
# 推送,指定版本,--version
helm cm-push mychart/ --version="1.2.3" local-harbor --ca-file /opt/k8s/helm/ca.crt
# 强制推送,--force
helm cm-push --force mychart-0.3.2.tgz local-harbor
查看
## 十四、搜索 hub(helm search hub)
在Artifact Hub或自己的 hub 实例中搜索 chart。
Artifact Hub 是基于 web 页面的应用,支持 CNCF 项目的查找、安装和发布包及配置项,包括了公开发布的 Helm chart。它是 CNCF 的沙盒项目。可以访问https://artifacthub.io/
bash
# 不带参数,列出所有
helm search hub
# 指定chart
helm search hub mysql
## 十五、搜索仓库(<font style="color:rgb(81, 81, 81);">helm search repo</font>)
用 chart 中关键字搜索仓库,搜索会读取系统上配置的所有仓库,并查找匹配。搜索这些仓库会使用存储在系统中的元数据。它会展示找到最新稳定版本的 chart。如果指定了—devel参数,输出会包括预发布版本。
# Search for stable release versions matching the keyword "nginx"$ helm search repo nginx# Search for release versions matching the keyword "nginx", including pre-release versions$ helm search repo nginx --devel# Search for the latest stable release for nginx-ingress with a major version of 1$ helm search repo nginx-ingress --version ^1.0.0
十六、验证 chart(<font style="color:rgb(81, 81, 81);">helm lint</font>)
该命令使用一个 chart 路径并运行一系列的测试来验证 chart 的格式是否正确。如果遇到引起 chart 安装失败的情况,会触发[ERROR]信息,如果遇到违反惯例或建议的问题,会触发[WARNING]。
# helm lint PATH [flags]helm lint ./mysql


十七、常用命令总结
Helm 常用命令(chart 安装、升级、回滚、卸载等操作)就先到这里。
helm version // 查看helm版本helm create xxx // 创建一个xxx chartshelm lint ./xxx // 检查包的格式或信息是否有问题helm install xxx1 ./xxx // 部署安装xxx,设置名称为xxx1helm list // 列出已经部署的chartshelm history // 发布历史helm upgrade // 更新版本helm rollback // 回滚版本helm package ./xxx // 打包chartshelm repo add --username admin --password password myharbor xxx // 增加repohelm uninstall xxx1 // 卸载删除xxx1helm pull // 拉取chart包helm cm-push // 推送chart包helm repo update // 更新仓库资源helm search hub // 从 Artifact Hub 中查找并列出 helm charts。Artifact Hub中存放了大量不同的仓库helm search repo // 从你添加(使用 helm repo add)到本地 helm 客户端中的仓库中进行查找。该命令基于本地数据进行搜索,无需连接互联网
