一、概述

Helm 针对Kubernetes的Helm包办理器。Helm的一般操作:

  • helm search:   查找chart
  • helm pull:    下载chart到本地目录查看
  • helm install:   上传chart到Kubernetes
  • helm list:     列出已发布的chart
# 查看帮助
helm --help

【云原生】Helm 常用命令(chart 安装、升级、回滚、卸载等操作)
官方文档:helm.sh/zh/docs/hel… Helm 架构和根底语法解说能够参阅我这篇文章:【云原生】Helm 架构和根底语法详解

二、Helm 库房(helm repo)

增加、列出、删去、更新和索引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(helm create)

运用给定称号创立新的chart,该指令创立chart目录和chart用到的公共文件目录

比方’helm create foo’会创立一个目录结构看起来像这样:

$ helm create foo
foo/
├── .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 包装置(helm install)

该指令用于装置chart包。装置参数有必要是chart的引证,一个打包后的chart途径未打包的chart目录或许是一个URL

要重写chart中的值,运用--values参数传递一个文件或许运用--set参数在指令行传递装备,强制运用字符串要用--set-string。 当值本身关于指令行太长或许是动态生成的时分,能够运用--set-file设置独立的值。

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 my_script=dothings.sh 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参数能够翻页显现。

# -A显现一切
helm list --max=10 --offset=2 -A

七、晋级版别(helm upgrade)

该指令将发布晋级到新版的chart。晋级参数有必要是发布和chart。chart参数能够是:chart引证('example/mariadb')chart目录途径,打包的chart或许完好URL。 关于chart引证,除非运用’–version’参数指定,不然会运用最新版别。

helm upgrade --set foo=bar --set foo=newbar redis ./redis

八、发布前史(helm history)

检索发布前史,打印给定版别的前史修订。默许会回来最大的256个前史版别。设置--max装备回来前史列表的最大长度。

前史发布调集会被打印成格局化的表格,例如:

$ helm history angry-bird
REVISION    UPDATED                     STATUS          CHART             APP VERSION     DESCRIPTION
1           Mon Oct 3 10:15:13 2016     superseded      alpine-0.1.0      1.0             Initial install
2           Mon Oct 3 10:15:13 2016     superseded      alpine-0.1.0      1.0             Upgraded successfully
3           Mon Oct 3 10:15:13 2016     superseded      alpine-0.1.0      1.0             Rolled back to 2
4           Mon Oct 3 10:15:13 2016     deployed        alpine-0.1.0      1.0             Upgraded successfully

九、回滚版别(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文件)然后将目录打包。
  • 要签名一个chart,运用--sign参数,在大多数场景中,也要供给--keyring path/to/secret/keys--key keyname
helm package mysql/
# Successfully packaged chart and saved it to: /opt/k8s/helm/mysql-9.3.1.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)离线装置

下载地址:github.com/chartmuseum…

# 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

# chartrepo,固定参数,bigdata自界说项目
helm repo add local-harbor --username=admin --password=Harbor12345 https://myharbor.com/chartrepo/bigdata/ --ca-file /opt/k8s/helm/ca.crt

证书直接在harbor上下载

【云原生】Helm 常用命令(chart 安装、升级、回滚、卸载等操作)

4)示例演示

# 查看帮助
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

查看

【云原生】Helm 常用命令(chart 安装、升级、回滚、卸载等操作)

十四、查找 hub(helm search hub)

在Artifact Hub或自己的hub实例中查找chart。Artifact Hub根据web页面的使用,支撑CNCF项目的查找、装置和发布包及装备项,包含了公开发布的Helm chart。它是CNCF的沙盒项目。能够拜访artifacthub.io/

# 不带参数,列出一切
helm search hub 
# 指定chart
helm search hub mysql

【云原生】Helm 常用命令(chart 安装、升级、回滚、卸载等操作)

十五、查找库房(helm search repo)

用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(helm lint)

该指令运用一个chart途径并运行一系列的测验来验证chart的格局是否正确。如果遇到引起chart装置失利的情况,会触发[ERROR]信息,如果遇到违反常规或建议的问题,会触发[WARNING]。

# helm lint PATH [flags]
helm lint ./mysql

【云原生】Helm 常用命令(chart 安装、升级、回滚、卸载等操作)
【云原生】Helm 常用命令(chart 安装、升级、回滚、卸载等操作)

十七、常用指令总结

helm version                            // 查看helm版别
helm create xxx                         // 创立一个xxx charts
helm lint ./xxx                         // 查看包的格局或信息是否有问题
helm install xxx1 ./xxx                 // 布置装置xxx,设置称号为xxx1
helm list                               // 列出现已布置的charts
helm history                            // 发布前史
helm upgrade                            // 更新版别
helm rollback                           // 回滚版别
helm package ./xxx                      // 打包charts
helm repo add --username admin --password password myharbor xxx  // 增加repo
helm uninstall xxx1                     // 卸载删去xxx1
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 客户端中的库房中进行查找。该指令根据本地数据进行查找,无需衔接互联网

Helm 常用指令(chart 装置、晋级、回滚、卸载等操作)就先到这里,有疑问的小伙伴,欢迎给我留言哦,后面会有很多的企业事例,请耐心等待哦~