[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,需要以下前置条件。
- 一个 Kubernetes 集群。快速体验可以 使用 minikube 来快速搭建一套 Kubernetes 集群
- 确定你安装版本的安全配置。Helm 版本与 Kubernetes 版本有一定的版本匹配依赖,详情见 Helm 版本与 K8s 版本对应关系
- 安装和配置 Helm。Helm3 下载安装
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.yaml
和 override.yaml
都包含名为 ‘Test’的可以,override.yaml
中的值优先:
$ helm install -f myvalues.yaml -f override.yaml myredis ./redis
可以指定 --set
参数多次,最右边的参数优先级最高,比如,bar
和 newbar
都设置了一个名为 foo
的可以,newbar
的值优先:
$ helm install --set foo=bar --set foo=newbar myredis ./redis
为了检测生成的清单,但并不安装到 chart ,可以将 --debug
和 --dry-run
组合使用。
如果设置了 --verify
,chart必须有出处文件,且出处文件必须传递所有的验证步骤。
有五种不同的方式来标识需要安装的chart:
- 通过 chart 引用:
helm install mymaria example/mariadb
- 通过 chart 包:
helm install mynginx ./nginx-1.2.3.tgz
- 通过未打包 chart 目录的路径:
helm install mynginx ./nginx
- 通过 URL 绝对路径:
helm install mynginx https://example.com/charts/nginx-1.2.3.tgz
- 通过 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 search
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.yaml
和 override.yaml
同时包含了名为 Test
的key,override.yaml
中的设置会优先使用:
$ helm upgrade -f myvalues.yaml -f override.yaml redis ./redis
可以多次指定 --set
参数,最后(最右边)指定的优先级最高。比如 bar
和 newbar
都设置了一个名为 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]