下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

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

作者:匿名     来源: 云计算点击数:2005发布时间: 2023-02-11 16:48:06

标签: Helm常用命令回滚

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

  一、概述

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

  helm search:   搜索chart

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

  helm install:   上传chart到Kubernetes

  helm list:     列出已发布的chart

  复制

  1.  # 查看帮助

  2.  helm --help

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

  Helm 架构和基础语法讲解可以参考我这篇文章:【云原生】Helm 架构和基础语法详解

  二、Helm 仓库(helm repo)

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

  1)添加chart仓库

  复制

  1.  helm repo add bitnami https://charts.bitnami.com/bitnami

  2)列出已添加的仓库

  复制

  1.  helm repo list

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

  复制

  1.  helm repo update bitnami

  4)删除一个或多个仓库

  复制

  1.  helm repo remove bitnami

  三、创建chart(helm create)

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

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

  复制

  1.  $ helm create foo

  2.  foo/

  3.  ├── .helmignore # Contains patterns to ignore when packaging Helm charts.

  4.  ├── Chart.yaml # Information about your chart

  5.  ├── values.yaml # The default values for your templates

  6.  ├── charts/ # Charts that this chart depends on

  7.  └── templates/ # The template files

  8.  └── tests/ # The test files

  四、chart 包安装(helm install)

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

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

  复制

  1.  helm install -f myvalues.yaml myredis ./redis

      2.

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

      4.

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

      6.

  7.  helm install --set-file my_script=dothings.sh myredis ./redis

  五、管理chart依赖(helm dependency)

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

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

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

  复制

  1.  # Chart.yaml

  2.  dependencies:

  3.  - name: nginx

  4.  version: "1.2.3"

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

  6.  - name: memcached

  7.  version: "3.2.1"

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

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

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

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

  复制

  1.  # Chart.yaml

  2.  dependencies:

  3.  - name: nginx

  4.  version: "1.2.3"

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

  1)列举指定chart的依赖

  复制

  1.  # helm dependency list CHART

  2.  helm dependency list wordpress

  2)依赖升级

  基于Chart.yaml内容升级charts/

  复制

  1.  # helm dependency update CHART [flags]

  2.  helm dependency update wordpress

  六、Helm 列表(helm list)

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

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

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

  复制

  1.  # -A显示所有

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

  七、升级版本(helm upgrade)

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

  复制

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

  八、发布历史(helm history)

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

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

  复制

  1.  $ helm history angry-bird

  2.  REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION

  3.  1 Mon Oct 3 10:15:13 2016 superseded alpine-0.1.0 1.0 Initial install

  4.  2 Mon Oct 3 10:15:13 2016 superseded alpine-0.1.0 1.0 Upgraded successfully

  5.  3 Mon Oct 3 10:15:13 2016 superseded alpine-0.1.0 1.0 Rolled back to 2

  6.  4 Mon Oct 3 10:15:13 2016 deployed alpine-0.1.0 1.0 Upgraded successfully

  九、回滚版本(helm rollback)

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

  复制

  1.  # helm rollback [REVISION] [flags]

  2.  # 先查看历史版本

  3.  helm history myharbor -n harbor

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

  5.  helm rollback myharbor 1 -n harbor

  6.  helm rollback myharbor -n harbor

  十、展示chart(helm show)

  复制

  1.  # helm show all [CHART] [flags]

  2.  # 该命令检查chart(目录、文件或URL)并显示所有的内容(values.yaml, Chart.yaml, README)

  3.  helm show all mysql

      4.

  5.  # helm show values [CHART] [flags]

  6.  # 该命令检查chart(目录、文件或URL)并显示values.yaml文件的内容

  7.  helm show values mysql

  十一、拉取chart(helm pull)

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

  复制

  1.  # helm pull [chart URL | repo/chartname] [...] [flags]

  2.  # 仅下载

  3.  helm pull bitnami/redis

  4.  # 下载并解压到当前目录

  5.  helm pull bitnami/redis --untar

  十二、Helm 打包(helm package)

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

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

  复制

  1.  helm package mysql/

  2.  # Successfully packaged chart and saved it to: /opt/k8s/helm/mysql-9.3.1.tgz

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

  复制

  1.  # .helmignore

  2.  .git

  3.  */temp*

  4.  */*/temp*

  5.  temp?

  十三、推送chart到harbor(helm cm-push)

  将chart推送到远程。

  1)在线安装

  复制

  helm plugin install https://github.com/chartmuseum/helm-push1.

  2)离线安装

  下载地址:https://github.com/chartmuseum/helm-push/tags

  复制

  1.  # 1、下载安装包

  2. wget https://github.com/chartmuseum/helm-push/releases/tag/v0.10.3

      3.

  4.  # 2、查看helm的plugin路径:helm env

  5.  helm env

      6.

  7.  # 3、在该路径下创建helm-push文件夹,并将安装包拷贝到该文件夹下解压即可

  8.  mkdir /root/.local/share/helm/plugins/helm-push

      9.

  10.  wget https://github.com/chartmuseum/helm-push/releases/download/v0.10.3/helm-push_0.10.3_linux_amd64.tar.gz

      11. 

  12.  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

  查看插件

  复制

  1.  helm plugin list

  3)helm 增加harbor repo

  复制

  1.  # chartrepo,固定参数,bigdata自定义项目

  2.  helm repo add local-harbor --username=admin --password=Harbor12345 https://myharbor.com/chartrepo/bigdata/ --ca-file /opt/k8s/helm/ca.crt1.2.

  证书直接在harbor上下载

  4)示例演示

  复制

  1.  # 查看帮助

  2.  helm cm-push --help

      3.

  4.  # 推送,接【目录】

  5.  helm cm-push mysql/ local-harbor --ca-file /opt/k8s/helm/ca.crt

      6.

  7.  # 推送,接【压缩包】

  8.  helm cm-push wordpress-15.1.5.tgz local-harbor --ca-file /opt/k8s/helm/ca.crt

      9.

  10.  # 推送,指定版本,--version

  11.  helm cm-push mychart/ --versinotallow="1.2.3" local-harbor --ca-file /opt/k8s/helm/ca.crt

      12.

  13.  # 强制推送,--force

  14.  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/

  复制

  1.  # 不带参数,列出所有

  2.  helm search hub

      3.

  4.  # 指定chart

  5.  helm search hub mysql

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

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

  复制

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

  2.  $ helm search repo nginx

      3.

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

  5.  $ helm search repo nginx --devel

      6.

  7.  # Search for the latest stable release for nginx-ingress with a major version of 1

  8.  $ helm search repo nginx-ingress --version ^1.0.0

  十六、验证chart(helm lint)

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

  复制

  1.  # helm lint PATH [flags]

  2.  helm lint ./mysql

  十七、常用命令总结

  复制

  1.  helm version // 查看helm版本

  2.  helm create xxx // 创建一个xxx charts

  3.  helm lint ./xxx // 检查包的格式或信息是否有问题

  4.  helm install xxx1 ./xxx // 部署安装xxx,设置名称为xxx1

  5.  helm list // 列出已经部署的charts

  6.  helm history // 发布历史

  7.  helm upgrade // 更新版本

  8.  helm rollback // 回滚版本

  9.  helm package ./xxx // 打包charts

  10.  helm repo add --username admin --password password myharbor xxx // 增加repo

  11.  helm uninstall xxx1 // 卸载删除xxx1

  12.  helm pull // 拉取chart包

  13.  helm cm-push // 推送chart包

  14.  helm repo update // 更新仓库资源

  15.  helm search hub // 从 Artifact Hub 中查找并列出 helm charts。Artifact Hub中存放了大量不同的仓库

  16.  helm search repo // 从你添加(使用 helm repo add)到本地 helm 客户端中的仓库中进行查找。该命令基于本地数据进行搜索,无需连接互联网

  Helm 常用命令(chart 安装、升级、回滚、卸载等操作)就先到这里。

  来源: 大数据与云原生技术分享

    >>>>>>点击进入计算专题

赞(7)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程