helm学习笔记

[label]结合传统应用的认知,Helm Chart 云原生应用包与传统应用包有以下几个维度的差异[/label]

属性维度 HELM CHART 传统应用
硬件平台 ARM、X86 ARM、X86
系统平台 Kubernetes Linux、Windows
可运行文件 java 程序、C 程序、Python 程序 java 程序、C 程序,Python 程序
可运行文件封装 Image 镜像、HelmChart rpm、deb、exe
管理工具 Helm YUM、APT
配置及环境信息 values.yaml /etc/nginx/nginx.conf、JVM 启动参数
说明文档 NOTES.txt、 README.md help 帮助、man 文档

Helm核心概念

1)Helm

Helm 是 Kubernetes 的包管理器。

按照惯例,当指项目时,Helm 使用首字母大写。

当指命令行时, helm 所有字母使用小写。

2)Helm Chart

Helm Chart 代表着 Helm 包。包涵盖了将 Kubernetes 应用安装到 Kubernetes 集群所需要的足够多的信息。它基于一定的模板规范、目录结构和文件格式进行打包后的 tar 和 gzip 压缩包(并且可选签名) 。

3)Chart Release

Helm Release 是运行在 Kubernetes 集群中的 Chart 的实例。一个 Chart 通常可以在同一个集群中安装多次,每一次安装都会创建一个新的 Release。

以 MySQL Chart 为例,如果你想在你的集群中运行两个数据库,你可以安装该 Chart 两次。每一个数据库都会拥有它自己的 Release 和 Release Name。

4)Chart Repository

Helm Repository(仓库) 是用来存放和共享 Charts 的地方。它就像 Perl 的 CPAN 档案库网络 或是 Fedora 的 软件包仓库,只不过它是供 Kubernetes 包所使用的。

Helm 官方默认的 Repository 是 https://artifacthub.io/

前置要求

Helm 通过 Kubernetes 的上下文 ~/.kube/config 来访问和管理 Kubernetes 集群中的 Chart Release。

想成功和正确地使用 Helm,需要以下前置条件。

Helm 安装与配置

根据 Kuberentes 的版本来选择对应的 Helm 版本。如,Helm 的 3.7.x 版本可以兼容 Kuberentes 的 1.22.x - 1.19.x 版本。

每一个版本的 Helm 提供多种操作系统的二进制版本,支持选择 Linux、Mac OS、Windows平台,以及 amd64、arm、i386、ppc64le、s390x 的 CPU 类型。这些二进制版本可以手动下载和安装。

所有历史版本管理地址:

选择需要的版本进行下,例如 Linux amd64 版的下载地址

下载完成后,解压安装:

wget https://get.helm.sh/helm-v3.7.2-linux-amd64.tar.gz
tar xf helm-v3.7.2-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/helm
chmod +x /usr/local/bin/helm

安装完成后,可以判断是否可正常使用。

可正常运行的输出示例:

$ helm version
version.BuildInfo{Version:"v3.7.2", GitCommit:"663a896f4a815053445eec4153677ddc24a0a361", 
GitTreeState:"clean", GoVersion:"go1.16.10"}

如果环境已经安装了 Kubernetes 集群,并配置了 /root/.kube/config 时,验证是否能够正常连接的方式可以通过

helm ls 命令。

异常连接时返回:

$ helm ls
Error: Kubernetes cluster unreachable

正常连接时返回:

$ helm ls
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION

配置 Helm Repository

当您已经安装并配置好 Helm 之后,可以添加一个 Helm Chart Repository 仓库。可从默认的 Artifact Hub 中查找有效的 Helm Chart 仓库,也可以自行添加一个新的 Repository 仓库

可以通过 helm repo add 来添加一个新的 Repository 仓库。例如,添加 bitnami 的 repo 仓库

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

添加成功后,可以通过 helm repo list 来查看本地已经支持的 Repository 仓库列表。

$ helm repo list
NAME            URL 
stable          https://charts.helm.sh/stable 
bitnami         https://charts.bitnami.com/bitnami

当完成 Repository 添加,您将可以通过 helm search 看到可安装使用的 Charts 列表:

$ helm search repo bitnami
NAME                    CHART VERSION    APP VERSION   DESCRIPTION
bitnami/bitnami-common  0.0.9            0.0.9         DEPRECATED Chart with custom templates used in ...
bitnami/airflow         8.0.2            2.0.0         Apache Airflow is a platform to programmaticall...
bitnami/apache          8.2.3            2.4.46        Chart for Apache HTTP Server
bitnami/aspnet-core     1.2.3            3.1.9         ASP.NET Core is an open-source framework create...
# ... and many more

安装 Chart 示例

在安装具体 Chart 前,建议先通过 helm repo update 命令同步本地缓存信息,核心是更新本地 Repository 的 index.yaml 缓存文件,该文件中包含可以获取到的最新 Charts 列表以及仓库中每个 Chart 的 Metadata 信息,以及相关的版本信息等。

$ helm repo update

通过 helm install 命令安装 Chart。 Helm 可以通过多种途径查找和安装 Chart, 但最简单的是安装方式还是直接安装在线的 Charts。

$ helm install bitnami/mysql --generate-name
NAME: mysql-1612624192
LAST DEPLOYED: Sat Feb 6 16:09:56 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES: ...

在上面的例子中,bitnami/mysql 这个 Chart 被安装发布成 Release,名字是 mysql-1612624192

每当您执行 helm install 的时候,都会创建一个新的 Release。 所以一个 Chart 在同一个集群里面可以被安装多次,每一个都可以被独立的管理和升级。

您可以通过执行 helm show chart bitnami/mysql 命令简单了解到这个 Chart 的基本信息。 或者您可以执行 helm show all bitnami/mysql 获取关于该 Chart 的所有信息。

管理 Release

通过 helm list 您可以很容易看到哪些 Chart 被发布安装到 Kubernetes 集群中:

$ helm list
NAME             NAMESPACE  REVISION  UPDATED     STATUS                      CHART      APP VERSION
mysql-1612624192 default    1         2021-02-06  16:09:56.283059 +0100 CET   deployed   mysql-8.3.0 8.0.23

如果环境中的 Release 已经达到目的或不满足使用需求时,可以使用 helm uninstall 命令卸载你的 Release

$ helm uninstall mysql-1612624192
release "mysql-1612624192" uninstalled

该命令会从 Kubernetes 中卸载 mysql-1612624192, 它将删除和该版本相关的所有相关资源(service、deployment、 pod等等)甚至版本历史。

如果您在执行 helm uninstall 的时候提供 --keep-history 选项, Helm 将会保存版本历史。

可以通过 helm status 命令查看指定的 Release 版本信息

$ helm status mysql-1612624192
Status: UNINSTALLED
...

在删除 Release 指定的 --keep-history 选项会让 Helm 跟踪你的版本(即使你卸载了他们), 所以你可以审计集群历史甚至使用 helm rollback 回滚版本。

如果您想通过 Helm 命令查看更多的有用的信息,请使用 helm help 命令,或者在任意命令后添加 -h 选项:

$ helm get -h

Helm Chart

Helm Chart 组成

基于模板创建示例(helm create)

$ helm create mychart
Creating mychart

Helm Chart 组成

$ tree mychart
mychart
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml

$ tree mychart

文件介绍

  • mychart/: 一个 Chart 的根目录。目录名称没有限制要求,但推荐命名为和功能一致的组建名称,如 wordpress/

  • mychart/charts/: 管理子 Chart 的目录,在 Charts.yaml 中 dependency 依赖的 Chart 通过 helm dependency build 可以缓存到 charts 目录中。

  • mychart/Chart.yaml: 有关 chart 的信息存储在名为 Chart.yaml 的特殊文件中。Chart.yaml 文件与 Chart 对象。

  • mychart/templates: 待渲染的 Kubernetes 清单文件存放的位置,会将该目录中的内容 {{}} 内容渲染后生存 Kubernetes 文件。

  • mychart/templates/_helps.tpl: 在 templates 中特例是以下划线 _ 开头的文件,该文件在安装升级时不会渲染。

  • mychart/templates/NOTES.txt: 在 Helm 安装和升级完成后,在终端中显示出的提示信息,该文件中的变量 {{}} 内容也会被渲染,该内容应该保持精简。

  • mychart/templates/tests/: Helm 支持在安装或完成后提供测试的支持,测试的服务保存在该目录中,通过 helm test 执行测试。

  • mychart/values.yaml: 使用 values.yaml 文件 来配置和保存变量,使用 .Values 对象 在模板中引用该变量。

  • .helmignore: Helm 支持在打包时可以忽略一些文件,类似 git 的 .gitignore 文件。

  • mychart/crds: 保存 CRD 的目录,为了保障安装, CRD 的文件只支持自动安装,不支持自动卸载。

  • mychart/requirements.yaml: Helm V2 版本声明 Chart 依赖的文件,Helm V3 版本已经弃用,由 Chart.yaml 中的 dependency 替代。

Helm Chart 仓库

在高层级中,Chart 仓库是打包的 Chart 存储和分享的位置。

不过 Helm 也可以创建并运行你自己的 Chart仓 库。

由于 Chart 仓库可以是任何服务于 YAML 和 tar 文件并响应 GET 请求的 HTTP 服务器,

托管你自己的 Chart 仓库时就有很多选择。比如可以使用 Google Cloud Storage(GCS), Amazon S3,

GitHub 页面,甚至创建自己的 Web 服务器。

Chart 仓库结构

Chart 仓库是一个配置了 index.yaml 文件和一些已经打包 Chart 的 HTTP 服务器。当你准备好分享 Chart 时,最好的方法是将 Chart 上传到 Chart 仓库。

Chart 仓库由 Chart 包和包含了仓库中所有 Chart 索引的特殊文件 index.yaml。

通常描述 Chart 的 index.yaml 也托管在同一个服务器上作为来源文件。

比如,https://example.com/charts 仓库布局可能看起来像这样:

charts/
|
|- index.yaml
|
|- alpine-0.1.2.tgz
|
|- alpine-0.1.2.tgz.prov

在这个案例中,index 文件包含了 Alpine 这一个 Chart 的信息,并提供了下载地址:

index.yaml 文件不是必须和 Chart 包放在同一个服务器上,但是这样是最方便的。

index文件

index.yaml 文件是一个 yaml 格式的文件。包含了一些包的元信息,包括 Chart 中 Chart.yaml 文件的内容。 一个合法的 Chart 仓库必须有一个 index 文件,包含了 Chart 仓库中每一个 Chart 的信息。 helm repo index 命令会基于给定的包含 Chart 包的本地目录生成一个 index 文件。

index文件类似于这样:

apiVersion: v1
entries:
  alpine:
    - created: 2016-10-06T16:23:20.499814565-06:00
      description: Deploy a basic Alpine Linux pod
      digest: 99c76e403d752c84ead610644d4b1c2f2b453a74b921f422b9dcb8a7c8b559cd
      home: https://helm.sh/helm
      name: alpine
      sources:
      - https://github.com/helm/helm
      urls:
      - https://technosophos.github.io/tscharts/alpine-0.2.0.tgz
      version: 0.2.0
    - created: 2016-10-06T16:23:20.499543808-06:00
      description: Deploy a basic Alpine Linux pod
      digest: 515c58e5f79d8b2913a10cb400ebb6fa9c77fe813287afbacf1a0b897cd78727
      home: https://helm.sh/helm
      name: alpine
      sources:
      - https://github.com/helm/helm
      urls:
      - https://technosophos.github.io/tscharts/alpine-0.1.0.tgz
      version: 0.1.0
  nginx:
    - created: 2016-10-06T16:23:20.499543808-06:00
      description: Create a basic nginx HTTP server
      digest: aaff4545f79d8b2913a10cb400ebb6fa9c77fe813287afbacf1a0b897cdffffff
      home: https://helm.sh/helm
      name: nginx
      sources:
      - https://github.com/helm/charts
      urls:
      - https://technosophos.github.io/tscharts/nginx-1.1.0.tgz
      version: 1.1.0
generated: 2016-10-06T16:23:20.499029981-06:00

自建 Chart 仓库

由于 Chart 仓库可以是任何服务于 YAML 和 tar 文件并响应 GET 请求的 HTTP 服务器。因此在自己搭建 Chart 仓库时可以通过 Nginx 提供 HTTP 服务。

安装并启动 Nginx 服务器

根据操作系统的发型版本不通,可以选择使用不同的工具来安装 Web 服务器。

例如,在 CentOS7 系统中通过如下命令安装并启动基于 nginx 的 WEB 服务器。

$ yum install nginx -y
$ systemctl enabled nginx
$ systemctl start nginx

制作 Chart 源

作为 Chart 源下载的文件,需要将 Chart 目录按照格式 {{ .Chart.Name}}-{{ .Chart.Version}}.tgz 打包成 tgz 的包。

可以使用 helm package 命令自动按照格式打包

$ mkdir fantastic-charts
$ helm create alpine
$ helm package fantastic-charts/alpine/

Chart 源中除了各个应用的 Chart 包之外,还依赖 index.yaml 的索引文件。

可以通过 helm repo index 命令来创建 index.yaml 文件,参考命令如:

$ helm repo index fantastic-charts --url https://fantastic-charts.storage.googleapis.com

--url 参数指定 Chart 源服务器地址,可以防止 Chart 源被非法引用。

复制到 Web 服务器

将制作好的 Chart 包和 index.yaml 文件复制到 Web 服务器目录。

确保 index.yaml 文件无需验证即可访问

$ mv fantastic-charts/* /var/www/web/

至此已经搭建好了一套 Chart 源服务。

测试验证

添加该 Chart 源作为 repo

$ helm repo add myrepo https://fantastic-charts.storage.googleapis.com
$ helm update

Helm 命令

helm completion

为指定的 shell 生成自动补全脚本。

为 Helm 生成针对于指定 shell 的自动补全脚本

helm completion bash > /etc/bash_completion.d/helm
bash

子命令

  • helm completion bash - 为bash生成自动补全脚本
  • helm completion fish - 为fish生成自动补全脚本
  • helm completion powershell - 为powershell生成自动补全脚本
  • helm completion zsh - 为zsh生成自动补全脚本

helm chart

helm chart 是管理 Chart 包的命令。

子命令

  • helm chart export 导出 chart 包。于 Helm 3.7.0 版本中移除
  • helm chart list 列出当前chart包
  • helm chart pull 下载chart包
  • helm chart push 推送chart包
  • helm chart remove 删除chart包
  • helm chart save 保存chart包

helm create

使用给定名称创建新的 Chart

该命令创建 Chart 目录和 Chart 用到的公共文件目录

比如 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

helm create 使用一个目录作为参数。如果给定目录路径不存在,Helm 会自动创建。如果给定目录存在且非空,冲突文件会被覆盖,其他文件会被保留。

$ helm create NAME [flags]

helm delete

删除指定chart

该命令被重命名。 helm uninstall

helm env

helm 客户端环境信息

Env 打印所有 Helm 使用的环境信息

$ helm env [flags]

helm get

查看已经部署到环境中的 Release 信息

该命令有多个子命令组成,用来获取发布版本的扩展信息,包括:

  • 生成版本的值
  • 生成的清单文件
  • 发布的chart提供的注释
  • 与版本关联的钩子

注意与 helm get 命令的差异。 helm get 是获取部署到环境中的 Release 的信息,helm show 是查看 Chart 仓库中 Chart 包的信息。

helm get all

获取已经安装的 Release 所有信息

该命令打印一个具有可读性的信息集合,包括注释,钩子,提供的 values,以及给定版本生成的清单文件。

$ helm get all RELEASE_NAME [flags]

helm get hooks

获取已发布 Release 的 hooks 信息

该命令下载指定版本的钩子

钩子被格式化为YAML格式并以YAML的’—\n’分隔符分隔

$ helm get hooks RELEASE_NAME [flags]

helm get manifest

获取已发布 Release 的 Kubernetes manifest 资源文件

该命令用来获取指定版本的清单文件

清单是由该版本的 chart 生成的 Kubernetes 资源的 YAML 编码表示。

$ helm get manifest RELEASE_NAME [flags]

helm get notes

获取已发布 Release 的 notes.txt 的内容

该命令显示了由指定版本chart提供的注释

$ helm get notes RELEASE_NAME [flags]

helm get values

获取已发布 Rlease 的 values.yaml 信息

该命令下载给定版本的values文件

$ helm get values RELEASE_NAME [flags]

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 history RELEASE_NAME [flags]

helm install

该命令用于安装 chart 包。

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

要重写 chart 中的值,

使用 ‘–values’ 参数传递一个文件或者

使用 ‘–set’ 参数在命令行传递配置,

强制使用字符串要用’–set-string’。 示例中要是值太大,则您既不想用’–values’也不想用’–set’,

使用’–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

你可以多次指定 --values/-f 参数。最右侧指定的文件优先级最高。

比如,如果两个文件 myvalues.yamloverride.yaml 都包含名为 ‘Test’的可以,override.yaml 中的值优先:

$ helm install -f myvalues.yaml -f override.yaml myredis ./redis

可以指定 --set 参数多次,最右边的参数优先级最高,比如,barnewbar 都设置了一个名为 foo 的可以,newbar 的值优先:

$ helm install --set foo=bar --set foo=newbar myredis ./redis

为了检测生成的清单,但并不安装到 chart ,可以将 --debug--dry-run 组合使用。

如果设置了 --verify,chart必须有出处文件,且出处文件必须传递所有的验证步骤。

有五种不同的方式来标识需要安装的chart:

  1. 通过 chart 引用: helm install mymaria example/mariadb
  2. 通过 chart 包: helm install mynginx ./nginx-1.2.3.tgz
  3. 通过未打包 chart 目录的路径: helm install mynginx ./nginx
  4. 通过 URL 绝对路径: helm install mynginx https://example.com/charts/nginx-1.2.3.tgz
  5. 通过 chart 引用和仓库 url: helm install --repo https://example.com/charts/ mynginx nginx

helm lint

验证 chart 是否存在问题

该命令使用一个 chart 路径并运行一系列的测试来验证 chart 的格式是否正确。

如果遇到引起 chart 安装失败的情况,会触发 [ERROR] 信息,如果遇到违反惯例或建议的问题,会触发 [WARNING]

$ helm lint PATH [flags]

helm list

列举发布版本.

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

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

默认情况下,列表按字母排序。使用 -d 参数按照日期排序。

如果使用 --filter 参数,会作为一个过滤器。过滤器是应用于发布列表的正则表达式(兼容Perl)。只有过滤器匹配的才会返回。

$ helm list --filter 'ara[a-z]+'
NAME                 UPDATED                                   CHART
maudlin-arachnid     2020-06-18 14:17:46.125134977 +0000 UTC   alpine-0.1.0

如果未找到结果,helm list 会退出,但是没有输出(或者使用’-q’,只返回头部)。

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

$ helm list [flags]

helm package

将 chart 目录打包到 chart 归档中

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

chart 版本包会用于 Helm 包仓库。

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

$ helm package --sign ./mychart --key mykey --keyring ~/.gnupg/secring.gpg

如果 --keyring 未指定,除非配置了其他方式,不然 Helm 通常会指定公共秘钥环。

$ helm package [CHART_PATH] [...] [flags]

helm plugin

安装、列举或卸载 Helm 插件

管理客户端插件。

helm plugin install

安装一个或多个Helm插件

该命令允许您通过 VCS 仓库url或者本地路径安装插件。

$ helm plugin install [options] <path|url>... [flags]

helm plugin list

列举已安装的 Helm 插件

$ helm plugin list [flags]

helm plugin uninstall

卸载一个或多个 Helm 插件

$ helm plugin uninstall <plugin>... [flags]

helm plugin update

升级一个或多个Helm插件

$ helm plugin update <plugin>... [flags]

helm pull

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

从包仓库中检索包并下载到本地。

对于要获取检查,修改或重新打包的包很有用,还可以用于在不安装 chart 的情况下对 chart 进行加密验证。

下载 chart 之后有解压的选项,会为chart创建一个目录并解压到这个目录中。

如果指定了 --verify 参数,请求的 chart 必须有出处文件,且必须通过验证。任意部分的失败都会导致错误,且 chart 不会在本地保存。

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

helm repo

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

该命令由于chart仓库交互的多条子命令组成

可以用来添加、删除、列举和索引chart仓库

helm repo add

添加chart仓库

$ helm repo add [NAME] [URL] [flags]

helm repo index

基于包含打包 chart 的目录,生成索引文件

读取当前目录,并根据找到的 chart 生成索引文件。

这个工具用来为chart仓库创建一个’index.yaml’文件,使用’–url’参数创建一个chart的绝对URL。

要合并生成的索引和已经存在的索引文件时,使用’–merge’参数。在这个场景中,在当前目录中找到的chart会合并到已有索引中, 本地chart的优先级高于已有chart。

$ helm repo index [DIR] [flags]

helm repo list

列举 chart 仓库

$ helm repo list [flags]

helm repo remove

删除一个或多个仓库

$ helm repo remove [REPO1 [REPO2 ...]] [flags]

helm repo update

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

更新从各自chart仓库中获取的有关chart的最新信息。信息会缓存在本地,被诸如’helm search’等命令使用。

你可以指定需要更新的仓库列表。

$ helm repo update <repo_name> ...

使用 helm repo update 更新所有仓库。

$ helm repo update [REPO1 [REPO2 ...]] [flags]

helm rollback

回滚发布到上一个版本

该命令回滚发布到上一个版本

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

要查看修订号,执行 helm history RELEASE

$ helm rollback <RELEASE> [REVISION] [flags]

helm 中搜索关键字

搜索提供了可以在已经添加的 Artifact Hub 和仓库等多个位置搜索 Helm chart 的能力。

helm search hub

在 Artifact Hub 或自己的 hub 实例中搜索 Helm charts。

$ helm search hub [KEYWORD] [flags]

helm search repo

用 chart 中关键字搜索仓库

搜索会读取系统上配置的所有仓库,并查找匹配。搜索这些仓库会使用存储在系统中的元数据。

它会展示找到最新稳定版本的chart。如果指定了–devel参数,输出会包括预发布版本。

$ helm search repo [keyword] [flags]

helm show

显示chart信息

该命令由多条子命令组成来显示chart的信息

注意与 helm get 命令的差异。 helm get 是获取部署到环境中的 Release 的信息,helm show 是查看 Chart 仓库中 Chart 包的信息。

helm show all

显示chart的所有信息

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

$ helm show all [CHART] [flags]

helm show chart

显示 chart 定义

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

$ helm show chart [CHART] [flags]

helm show crds

显示 chart 的CRD

该命令检查 chart(目录、文件或URL)并显示自定义资源(CustomResourceDefintion)文件的内容。

$ helm show crds [CHART] [flags]

helm show readme

显示chart的README

该命令检查chart(目录、文件或URL)并显示README文件内容

$ helm show readme [CHART] [flags]

helm show values

显示chart的values

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

$ helm show values [CHART] [flags]

helm status

显示已命名发布的状态

该命令显示已命名发布的状态,状态包括:

  • 最后部署时间
  • 发布版本所在的k8s命名空间
  • 发布状态(可以是: unknown, deployed, uninstalled, superseded, failed, uninstalling, pending-install, pending-upgrade 或 pending-rollback)
  • 发布版本修订
  • 发布版本描述(可以是完成信息或错误信息,需要用–show-desc启用)
  • 列举版本包含的资源,按类型排序
  • 最后一次测试套件运行的详细信息(如果使用)
  • chart提供的额外的注释
$ helm status RELEASE_NAME [flags]

helm template

本地渲染模板

本地渲染模板并显示输出

通常在集群中查找或检索到的任何值都可以在本地伪造。另外,没有对chart有效性进行服务端测试。

$ helm template [NAME] [CHART] [flags]

helm test

执行发布版本的测试

测试命令执行发布版本的测试

该命令使用的参数是部署版本的名称,要运行的测试在已安装的chart中定义。

$ helm test [RELEASE] [flags]

helm uninstall

卸载版本

该命令使用版本名称卸载版本

会删除与最新版本chart相关的所有资源以及发布历史,释放以供将来使用

使用 --dry-run 参数查看哪些版本将在不实际卸载的情况下能够被卸载

$ helm uninstall RELEASE_NAME [...] [flags]

helm upgrade

升级版本

该命令将发布升级到新版的 chart。

升级参数必须是发布和 chart。chart 参数可以是:

  • chart引用(‘example/mariadb’),对于chart引用,除非使用’–version’参数指定,否则会使用最新版本。
  • chart目录路径
  • 打包的chart或者完整URL。

要在 chart 中重写 value,需要使用 --values 参数并传一个文件或者从命令行使用 --set 参数传个配置, 要强制字符串值,使用--set-string。在值很大而不想使用 --values--set 的场景中,使用 --set-file 从文件中读取单个的大值。

可以多次指定 --values/-f 参数,最后(最右边)指定的文件优先级最高。比如如果 myvalues.yamloverride.yaml 同时包含了名为 Test 的key,override.yaml 中的设置会优先使用:

$ helm upgrade -f myvalues.yaml -f override.yaml redis ./redis

可以多次指定 --set 参数,最后(最右边)指定的优先级最高。比如 barnewbar 都设置了一个名为 foo 的可以, newbar的值会优先使用:

$ helm upgrade --set foo=bar --set foo=newbar redis ./redis
helm upgrade [RELEASE] [CHART] [flags]

helm verify

验证给定路径的 chart 已经被签名且有效

验证指定的 chart 有合法的源文件。

源文件提供了加密验证保证chart未被篡改,且由可信提供商打包。

该命令用于验证本地chart,其他一些命令提供 --verify 参数执行同样的验证。要生成一个签名包,使用 helm package --sign 命令。

$ helm verify PATH [flags]

helm version

打印客户端版本信息

显示 Helm 的版本。

该命令会打印 Helm 的版本描述,输出如下:

version.BuildInfo{Version:"v3.2.1", GitCommit:"fe51cd1e31e6a202cba7dead9552a6d418ded79a",
GitTreeState:"clean", GoVersion:"go1.13.10"}
  • 版本是发布的语义化版本。
  • GitCommit 是用于生成此版本提交的SHA
  • 如果构建二级制包是没有本地代码修改,GitTreeState 就是”干净的”
  • GoVersion 是用于编译 Helm 的 Go 版本

当使用–template参数时,下列属性在模板中是可用的:

  • .Version 包含了 Helm 的语义化版本
  • .GitCommit 是 git 的提交
  • .GitTreeState 是 Helm 构建时的 git 树结构
  • .GoVersion 包含 Helm 编译时使用的 Go 版本

比如, --template='Version: {{.Version}}' 输出 Version: v3.2.1

$ helm version [flags]

[label]文章摘自https://www.zhaowenyu.com/helm-doc/[/label]

标题: helm学习笔记

链接: https://zhiyong0389.github.io/2023/03/11/Helm/

版权声明: 若无特殊标注皆为 智勇 原创版权, 转载请以链接形式注明作者及原始出处

最后编辑时间: 2023-06-29

本站由免费云加速(FreeCDN)提供网站加速和攻击防御服务