Helm 常用命令

小柒博客 Helm评论3967字数 7476阅读24分55秒阅读模式

一、Helm 概述

helm是kubernetes生态系统中的一个软件包管理工具,类似ubuntu的apt,centos的yum或python的pip一样,专门负责管理kubernetes应用资源;使用helm可以对kubernetes应用进行统一打包、分发、安装、升级以及回退等操作。

Helm的一般操作:

helm search: 搜索chart

helm pull: 下载chart到本地目录查看

helm install: 上传chart到Kubernetes

helm list: 列出已发布的chart

# 查看帮助

helm --help

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

二、Helm 仓库(helm repo)

添加、列出、删除、更新和索引chart仓库。

1、添加chart仓库

[root@k8s-master ~]# helm repo add bitnami https://charts.bitnami.com/bitnami

"bitnami" has been added to your repositories

2、列出已添加的仓库

[root@k8s-master ~]# helm repo list

NAME    URL                               

bitnami https://charts.bitnami.com/bitnami

3、从chart仓库中更新本地可用chart的信息

[root@k8s-master ~]# helm repo update bitnami

Hang tight while we grab the latest from your chart repositories...

...Successfully got an update from the "bitnami" chart repository

Update Complete. ⎈Happy Helming!⎈

4、删除一个或多个仓库

[root@k8s-master ~]# helm repo remove bitnami

"bitnami" has been removed from your repositories

三、创建chart(helm create)

使用给定名称创建新的chart,该命令创建chart目录和chart用到的公共文件目录。

语法格式:helm create NAME [flags]

比如'helm create test'会创建一个目录结构看起来像这样

[root@k8s-master ~]# helm create test

Creating test

[root@k8s-master ~]# tree test

test

├── charts # Charts that this chart depends on

├── Chart.yaml # Information about your chart

├── templates # The template files

│   ├── deployment.yaml

│   ├── _helpers.tpl

│   ├── hpa.yaml

│   ├── ingress.yaml

│   ├── NOTES.txt

│   ├── serviceaccount.yaml

│   ├── service.yaml

│   └── tests # The test files

│       └── test-connection.yaml

└── values.yaml # The default values for your templates

四、chart 包安装(helm install)

该命令用于安装chart包。安装参数必须是chart的引用,一个打包后的chart路径,未打包的chart目录或者是一个URL。

要重写chart中的值,使用--values参数传递一个文件或者使用--set参数在命令行传递配置,强制使用字符串要用--set-string。 当值本身对于命令行太长或者是动态生成的时候,可以使用--set-file设置独立的值。

语法格式:helm install [CHART] [flags]

helm install -f myvalues.yaml myredis ./redis

helm install --set name=prod myredis ./redis

helm install --set-string long_int=1234567890 myredis ./redis

helm install --set-file multiline-text=path/to/textfile myredis ./redis

五、管理chart依赖(helm dependency)

Helm chart将依赖存储在'charts/'。对于chart开发者,管理依赖比声明了所有依赖的'Chart.yaml'文件更容易。

依赖命令对该文件进行操作,使得存储在'charts/'目录的需要的依赖和实际依赖之间同步变得很容易。

# 比如Chart.yaml声明了两个依赖

# Chart.yaml

dependencies:

- name: nginx

    version: "1.2.3"

    repository: "https://example.com/charts"

- name: memcached

    version: "3.2.1"

    repository: "https://another.example.com/charts"

name 是chart名称,必须匹配Chart.yaml文件中名称。

version 字段应该包含一个语义化的版本或版本范围。

从2.2.0开始,仓库可以被定义为本地存储的依赖chart的目录路径。路径应该以"file://"前缀开头,比如:

# Chart.yaml

dependencies:

- name: nginx

    version: "1.2.3"

    repository: "file://../dependency_chart/nginx"

1、列举指定chart的依赖

# helm dependency list CHART

helm dependency list wordpress

2、依赖升级

基于Chart.yaml内容升级charts/

# helm dependency update CHART [flags]

helm dependency update wordpress

六、Helm 列表(helm list)

列举发布版本,该命令会列举出指定命名空间的所有发布版本,(如果没有指定命名空间,会使用当前命名空间)。

默认情况下,只会列举出部署的或者失败的发布,像--uninstalled或者--all会修改默认行为。这些参数可以组合使用:--uninstalled --failed。

默认情况下,最多返回256项,使用--max限制数量,--max设置为0不会返回所有结果,而是返回服务器默认值,可能要比256更多。 同时使用--max和--offset参数可以翻页显示。

语法格式:helm list [flags] [FILTER]

# -A显示所有

helm list -A

helm list --max=10 --offset=2 -A

# 显示指定命名空间

helm list -n wordpress

七、升级版本(helm upgrade)

该命令将发布升级到新版的chart。升级参数必须是发布和chart。chart参数可以是:chart引用('example/mariadb'),chart目录路径,打包的chart或者完整URL。 对于chart引用,除非使用'–version'参数指定,否则会使用最新版本。

语法格式:helm upgrade [RELEASE] [CHART] [flags]

helm upgrade --set version=6.2 --set appVersion=6.2 -n kube-wordpress wordpress ./wordpress

八、发布历史(helm history)

检索发布历史,打印给定版本的历史修订。默认会返回最大的256个历史版本。设置--max配置返回历史列表的最大长度。

语法格式:helm history [flags] RELEASE-NAME

历史发布集合会被打印成格式化的表格,例如:

[root@k8s-master ~]# helm history wordpress

REVISION UPDATED                  STATUS     CHART              APP VERSION DESCRIPTION     

1        Fri Nov  4 10:39:15 2022 superseded wordpress-6.1 6.1         Install complete

2        Fri Nov  4 15:13:48 2022 superseded wordpress-6.2 6.2         Upgrade complete

3        Fri Nov  4 15:13:54 2022 superseded wordpress-6.2 6.2         Upgrade complete

4        Fri Nov  4 15:14:00 2022 superseded wordpress-6.2 6.2         Upgrade complete

5        Fri Nov  4 15:14:57 2022 deployed   wordpress-6.3 6.3         Upgrade complete

九、回滚版本(helm rollback)

回滚发布到上一个版本,回滚命令的第一个参数是发布的名称,第二是修订(版本)号,如果省略此参数,会回滚到上一个版本。

语法格式:helm rollback <RELEASE> [REVISION] [flags]

# 先查看历史版本

helm history myharbor -n harbor

# 不指定版本就回退上个版本

helm rollback myharbor 1 -n harbor

helm rollback myharbor -n harbor

十、展示chart(helm show)

语法格式: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(helm pull)

从仓库下载并(可选)在本地目录解压。

语法格式:helm pull [chart URL | repo/chartname] [...] [flags]

# 仅下载

helm pull bitnami/redis

# 下载并解压到当前目录

helm pull bitnami/redis --untar

十二、Helm 打包(helm package)

将chart目录打包到chart归档中,该命令将chart打包成一个chart版本包文件。如果给定路径,就会在该路径中查找chart(必须包含Chart.yaml文件)然后将目录打包。

语法格式:helm package [flags] [CHART-PATH] [...]

要签名一个chart,使用--sign参数,在大多数场景中,也要提供--keyring path/to/secret/keys和--key keyname。

[root@k8s-master ~]# helm package wordpress

Successfully packaged chart and saved it to: /root/wordpress-6.3.tgz

如果想忽略helm中的文件,可以在.helmignore进行匹配,该.helmignore文件支持Unix shell全局匹配,相对路径匹配和否定(以!前缀反向匹配)。每行仅考虑一种模式。示例如下:

# .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/tags

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 xf /root/.local/share/helm/plugins/helm-push/helm-push_0.10.3_linux_amd64.tar.gz -C /root/.local/share/helm/plugins/helm-push

3、查看插件

helm plugin list

1)helm 增加harbor repo

# chartrepo为固定参数,wordpress为自定义项目

helm repo add harbor http://10.10.50.24/chartrepo/wordpress --username=admin --password=Aa123456

4)示例演示

# 查看帮助

helm cm-push --help

# 推送目录

helm cm-push wordpress/ harbor --host=10.10.50.24 --username=admin --password=Aa123456

# 推送压缩包

helm cm-push wordpress-6.3.tgz harbor --host=10.10.50.24 --username=admin --password=Aa123456

# 推送指定版本,--version

helm cm-push wordpress/ --version="6.3" harbor --host=10.10.50.24 --username=admin --password=Aa123456

# 强制推送--force

helm cm-push --force wordpress-6.3.tgz harbor --host=10.10.50.24 --username=admin --password=Aa123456

十四、搜索 hub(helm search hub)

在Artifact Hub或自己的hub实例中搜索chart。Artifact Hub 是基于web页面的应用,支持CNCF项目的查找、安装和发布包及配置项,包括了公开发布的Helm chart。它是CNCF的沙盒项目。可以访问https://artifacthub.io/

语法格式:helm search [keyword] [flags]

# 不带参数,列出所有

helm search hub

# 指定chart

helm search hub mysql

十五、搜索仓库(helm search repo)

用chart中关键字搜索仓库,搜索会读取系统上配置的所有仓库,并查找匹配。搜索这些仓库会使用存储在系统中的元数据。它会展示找到最新稳定版本的chart。如果指定了--devel参数,输出会包括预发布版本。

# Search for stable release versions matching the keyword "nginx"

[root@k8s-master ~]# helm search repo nginx

# Search for release versions matching the keyword "nginx", including pre-release versions

[root@k8s-master ~]# helm search repo nginx --devel

# Search for the latest stable release for nginx with a major version of 13

[root@k8s-master ~]# helm search repo nginx --version 13.2.13

十六、验证chart(helm lint)

该命令使用一个chart路径并运行一系列的测试来验证chart的格式是否正确。如果遇到引起chart安装失败的情况,会触发[ERROR]信息,如果遇到违反惯例或建议的问题,会触发[WARNING]。

语法格式:helm lint PATH [flags]

[root@k8s-master ~]# helm lint wordpress

十七、常用命令总结

helm version # 查看helm版本

helm create wordpress # 创建一个xxx charts

helm lint wordpress # 检查包的格式或信息是否有问题

helm install wordpress wordpress # 部署安装wordpress,设置名称为wordpress

helm list # 列出已经部署的charts

helm history # 发布历史

helm upgrade # 更新版本

helm rollback # 回滚版本

helm package wordpress # 打包charts

helm repo add --username admin --password password harbor xxx  # 增加repo

helm uninstall wordpress # 卸载删除wordpress

helm 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客户端中的仓库中进行查找。该命令基于本地数据进行搜索,无需连接互联网

继续阅读
若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!如果喜欢本站,请打赏支持本站,谢谢!
  • 微信号
  • 微信扫一扫加我!
  • weinxin
  • 微信公众号
  • 微信扫一扫关注我!
  • weinxin
Helm最后更新:2022-11-25
小柒博客
  • 本文由 发表于 2022-11-04 16:23:23
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: