Helm
写在前面:
本文依据Helm官方文档helm进行编写,对Helm常用指令的运用,选项参数等进行了解说。阅览本文需求掌握Helm的根本运用。
Helm
是什么?正如在官方介绍的那样,是一款Kubernetes 包办理器。Helm 是查找、共享和运用软件构建 Kubernetes 的最优办法。
三大概念
-
Chart 代表着 Helm 包。它包括在 Kubernetes 集群内部运转应用程序,东西或服务所需的一切资源界说。你能够把它看作是 Homebrew formula,Apt dpkg,或 Yum RPM 在Kubernetes 中的等价物。
-
Repository(库房) 是用来寄存和共享 charts 的地方。它就像 Perl 的 CPAN 档案库网络 或是 Fedora 的 软件包库房,只不过它是供 Kubernetes 包所运用的。
-
Release 是运转在 Kubernetes 集群中的 chart 的实例。一个 chart 一般能够在同一个集群中装置屡次。每一次装置都会创立一个新的 release。以 MySQL chart为例,假如你想在你的集群中运转两个数据库,你能够装置该chart两次。每一个数据库都会拥有它自己的 release 和 release name。
在了解了上述这些概念以后,咱们就能够这样来解说 Helm:
Helm 装置 charts 到 Kubernetes 集群中,每次装置都会创立一个新的 release。你能够在 Helm 的 chart repositories 中寻觅新的 chart。
1. Install
# 下载helm
$ wget https://get.helm.sh/helm-v3.13.1-linux-amd64.tar.gz
# 解压helm 并将二进制包增加进bin下
$tar -zxvf helm-v3.13.1-linux-amd64.tar.gz
$ cp linux-amd64/helm /usr/local/bin/
# 查看helm版别
$ helm version
version.BuildInfo{Version:"v3.13.1", GitCommit:"3547a4b5bf5edb5478ce352e18858d8a552a4110", GitTreeState:"clean", GoVersion:"go1.20.8"}
2.Inner Objec
Helm
供给了许多内置方针供咱们在模板中进行运用。
Release方针描绘了版别发布自身。包括了以下方针:
-
Release.Name
: release称号 -
Release.Namespace
: 版别中包括的命名空间(假如manifest没有掩盖的话) -
Release.IsUpgrade
: 假如当时操作是晋级或回滚的话,该值将被设置为true
-
Release.IsInstall
: 假如当时操作是装置的话,该值将被设置为true
-
Release.Revision
: 此次修订的版别号。装置时是1,每次晋级或回滚都会自增 -
Release.Service
: 该service用来烘托当时模板。Helm里始终是Helm
Values: Values
方针是从values.yaml
文件和用户供给的文件传进模板的。默许为空
Chart: Chart.yaml
文件内容。 Chart.yaml
里的一切数据在这里都能够可拜访的。比如 {{ .Chart.Name }}-{{ .Chart.Version }}
会打印出 mychart-0.1.0
Files: 在chart中供给拜访一切的非特殊文件的方针。你不能运用它拜访Template
方针,只能拜访其他文件。 请查看这个文件拜访部分了解更多信息
-
Files.Get
经过文件名获取文件的办法。 (.Files.Getconfig.ini
) -
Files.GetBytes
用字节数组代替字符串获取文件内容的办法。 对图片之类的文件很有用 -
Files.Glob
用给定的shell glob形式匹配文件名回来文件列表的办法 -
Files.Lines
逐行读取文件内容的办法。迭代文件中每一行时很有用 -
Files.AsSecrets
运用Base 64编码字符串回来文件体的办法 -
Files.AsConfig
运用YAML格局回来文件体的办法
Template: 包括当时被履行的模板信息
-
Template.Name
: 当时模板的命名空间文件途径 (e.g.mychart/templates/mytemplate.yaml
) -
Template.BasePath
: 当时chart模板目录的途径 (e.g.mychart/templates
)
:fire:: 内置的值都是以大写字母开始, 这是符合Go的命名惯例。当你创立自己的称号时,能够依照团队约定自在设置。 就像许多你在 Artifact Hub 中看到的chart,其团队选择运用首字母小写将本地称号与内置方针区分开。
3.Command
Repository
helm repo
能够用来增加、删去、罗列和索引chart库房
List
helm repo list
列出一切Chart的库房
语法:
helm repo list [flags]
选项:
-o, --output format # 指定输出格局: table, json, yaml (默许为 table)
比如:
# 列出一切Chart库房
$ helm repo list
NAME URL
grafana https://grafana.github.io/helm-charts
bitnami https://charts.bitnami.com/bitnami
orange https://shyunny.github.io/orange-helm/charts/
# 以yaml格局列出一切库房
$ helm repo list -o yaml
helm repo list -o yaml
- name: grafana
url: https://grafana.github.io/helm-charts
- name: bitnami
url: https://charts.bitnami.com/bitnami
- name: orange
url: https://shyunny.github.io/orange-helm/charts/
Update
helm repo update
更新从各自Chart库房中获取的有关chart的最新信息。信息会缓存在本地,被比如helm search
等指令运用。
语法:
helm repo update [REPO1 [REPO2 ...]] [flags]
选项:
--fail-on-repo-update-fail # 假如任何存储库更新失利,则更新失利
比如:
# 更新binamiChart库房, 假如更新失利则以为失利
$ helm repo update bitnami --fail-on-repo-update-fail
Hang tight while we grab the latest from your chart repositories...
...Unable to get an update from the "bitnami" chart repository (https://charts.bitnami.com/bitnami):
context deadline exceeded (Client.Timeout or context cancellation while reading body)
Update Complete. ⎈Happy Helming!⎈
Index
helm repo index
基于打包chart的目录,生成索引文件。读取当时目录,并依据找到的 Chart 生成索引文件。这个东西用来为chart库房创立一个index.yaml
文件,运用--url
参数创立一个chart的绝对URL。
要兼并生成的索引和现已存在的索引文件时,运用--merge
参数。
语法:
helm repo index [DIR] [flags]
选项:
--merge string # 依据已有的index.yaml进行兼并
--url string # Chart库房的url
比如:
# 依据已有的index.yaml进行兼并, 一同设置库房url为www.example.com
$ helm repo index charts/ --merge charts/index.yaml --url www.example.com
Add
helm repo add
增加一个Chart库房
语法:
helm repo add [NAME] [URL] [flags]
选项:
--allow-deprecated-repos # 默许情况下,这个指令不答应增加现已被永久删去的正式库房。这将禁用该行为。
--ca-file string # 运用此CA包验证启用https的服务器的证书 (在内网自签名中会运用)
--cert-file string # 运用此SSL证书文件标识HTTPS客户端 (在内网自签名中会运用)
--force-update # 假如库房现已存在,则替换(掩盖)它
--insecure-skip-tls-verify # 越过对存储库的TLS证书查看 (这是不安全的, 主张仅在测验阶段进行运用)
--key-file string # 运用这个SSL密钥文件辨认HTTPS客户端 (在内网自签名中会运用)
--pass-credentials # 将凭据传递给一切domains
--password string # chart库房暗码
--password-stdin # 从stdin读取chart库房暗码
--username string # chart库房用户
比如:
# 增加一个chart私服
$ helm repo add orange https://shyunny.github.io/orange-helm/charts/ --force-update
"orange" has been added to your repositories
Remove
helm repo remove
删去一个或多个Chart库房
语法:
helm repo remove [REPO1 [REPO2 ...]] [flags]
选项:
# 无
比如:
# 删去orange库房
$ helm repo remove orange
Dependency
helm dependency
用于办理Chart依靠
Helm chart将依靠存储在charts/
目录中。关于chart开发者,办理声明晰一切依靠的Chart.yaml
文件更简单。
依靠指令对该文件进行操作,使得存储在charts/
目录的需求的依靠和实践依靠之间同步变得很简单。
比如Chart.yaml声明晰一个guestbook
的依靠:
# Chart.yaml
dependencies:
- name: guidebook # file
version: "0.1.0"
repository: "file:///workspace/helm/guestbook/charts/guidebook/"
- name: guidebook # remote url
version: "0.2.0"
repository: "www.example.com/charts"
- name: guidebook # remote repo
version: "0.1.0"
repository: "@bitnami" # 或许alias:bitnami
-
name
是chart称号,有必要匹配方针依靠的Chart.yaml
文件中称号。 -
version
字段应该包括一个语义化的版别或版别规模,有必要匹配方针依靠的Chart.yaml
文件中版别。 -
repository
的URL应该指向Chart库房。Helm期望经过附加index.yaml
到URL,应该能检索chart库索引。留意:
repository
不能直接声明别号。别号有必要以alias:
或@
开头。
库房能够被界说为本地存储的依靠chart的目录途径。途径应该以file://
前缀开头。
假如在本地检索依靠chart,能够不需求运用
helm add repo
将库房加入到helm。
List
helm dependency list
罗列一切的chart中声明的依靠。该指令能够将chart包或chart目录作为输入,不会修正chart的内容。假如chart不能加载会产生错误。
语法:
helm dependency list CHART [flags]
选项:
--max-col-width uint # 输出成果的最大宽度(默许80)
比如:
# 列出一切bookinfo的一切依靠
$ helm dependency list bookinfo
NAME VERSION REPOSITORY STATUS
guidebook 0.1.0 file:///workspace/helm/guestbook/charts/guidebook/ ok
Update
helm dependency update
更新依靠为Chart.yaml指定内容。该指令验证存储在’charts/’目录中的’Chart.yaml’文件描绘的所需chart以及所需版别。 它会拉取满足依靠的最新chart并整理旧依靠。成功更新后,会生成一个确定文件用来从头构建精确版别的依靠。
不需求在’Chart.yaml’中表明依靠。 因此,更新指令不会删去chart,除非是在Chart.yaml文件中的错误版别。
语法:
helm dependency update CHART [flags]
选项:
--keyring string # 包括公钥的密匙 (default "~/.gnupg/pubring.gpg")
--skip-refresh # 不改写本地存储库缓存
--verify # 依据签名验证package
比如:
# 假如声明的依靠是在本地, 能够不需求改写缓存, 这样有助于提高速度
$ helm dependency update bookinfo --skip-refresh
Saving 1 charts
Deleting outdated charts
Build
helm dependency build
从Chart.lock构建输出到charts/目录。该构建是用来将chart的依靠项重建为确定文件中的指定状况。就像helm dependency update
一样并不会调整依靠状况。
假如没找到确定文件,
helm dependency build
映射到helm dependency update
helm dep build
和helm dep update
的差异:一个是依据Chart.lock
进行构建,别的一个是依据Chart.yaml
进行构建。
语法:
helm dependency build CHART [flags]
选项:
--keyring string # 包括公钥的密匙 (default "~/.gnupg/pubring.gpg")
--skip-refresh # 不改写本地存储库缓存
--verify # 依据签名验证package
比如:
# 假如声明的依靠是在本地, 能够不需求改写缓存, 这样有助于提高速度
$ helm dep build bookinfo --skip-refresh
Saving 1 charts
Deleting outdated charts
List
helm list
指令会罗列出指定命名空间的一切Release版别,(假如没有指定命名空间,会运用当时命名空间)。
默许情况下,只会罗列出布置的或许失利的发布,像--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
会退出,但是没有输出。
默许情况下,最多回来256项,运用--max
束缚数量,--max
设置为0不会回来一切成果,而是回来服务器默许值,或许要比256更多。 一同运用--max
和--offset
参数能够翻页显现。
语法:
helm list [flags]
选项:
-a, --all # 获取一切Release
-A, --all-namespaces # 获取一切namespace的Release
-d, --date # 依照Release时刻进行排序
--deployed # 显现已布置的版别。假如没有指定其他版别,将主动启用
--failed # 显现失利的Release
-f, --filter string # 正则表达式(Perl兼容)过滤器。任何与表达式匹配的版别都将包括在成果中
-m, --max int # 获取Release的数量 默许为256
--no-headers # 当运用默许输出格局时,不要打印头信息
--offset int # 列表中的下一个发布版别index,用于从起始值偏移
-o, --output format # 指定输出格局 可选值: table, json, yaml (默许为 table)
--pending # 显现Pending的Release
-r, --reverse # 回转排序次序
-l, --selector string # 选择器(标签查询)进行过滤,支撑'='、'=='和'!=' (例: -l key1=value1,key2=value2) 仅适用于secret(默许)和configmap存储后端。
-q, --short # 输出短列表格局
--superseded # 显现superseded Release
--time-format string # 运用golang时刻格局化器格局化时刻. 示例: ——time-format "2006-01-02 15:04:05Z0700"
--uninstalled # 显现uninstall的Release(假如运用了`helm uninstall ——keep-history `)
--uninstalling # 显现当时正在uninstall的Release
比如:
# 列出一切Release
$ helm list -a
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
map-v1 argo 1 2023-10-28 15:00:56.482351712 0800 CST deployed bookinfo-0.1.0 1.16.0
# 列出一切Realse, 而且格局化时刻, 以yaml格局输出
$ helm list --time-format "2006-01-02" -o yaml
- app_version: 1.16.0
chart: bookinfo-0.1.0
name: map-v1
namespace: argo
revision: "1"
status: deployed
updated: "2023-10-28"
# 列出一切被uninstall的Release
$ helm list --uninstalled --time-format "2006-01-02"
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
map-v1 argo 1 2023-10-28 uninstalled bookinfo-0.1.0 1.16.0
Package
helm package
将chart目录打包到chart归档中
该指令将chart打包成一个chart版别包文件。假如给定途径,就会在该途径中查找chart(有必要包括Chart.yaml文件)然后将目录打包。
chart版别包会用于Helm包库房。
语法:
helm package [CHART_PATH] [...] [flags]
选项:
--app-version string # 将chart上的appVersion设置为此版别
-u, --dependency-update # 在packaging前, 会对chart中的依靠项进行更新
-d, --destination string # chart归档文件的输出途径
--key string # 签名时运用的key的称号。用于——sign为true时
--keyring string # 公钥keyring的方位(默许为"~/.gnupg/pubring.gpg")
--passphrase-file string # 包括签名密钥暗码的文件的方位 运用'-'从stdin中读取
--sign # 运用PGP私钥对这个包进行签名
--version string # 将chart上的版别设置为此semver版别
比如:
# 将bookinfo chart进行打包, 一同修正appVersion
$ helm package bookinfo --app-version 0.0.1_rc-2
:fire: 留意,经过
--app-version
和--version
设置chart的信息实践上会掩盖Chart.yaml
中对应的版别信息。
Get
helm get
这个指令由多个子指令组成,能够用来获取版别的扩展信息,包括:
- 用于生成Release的value
- 生成的清单文件
- 由chart供给的notes
- Release相关的hooks
- Release版别的元数据
All
helm get all
指令打印一个具有可读性的信息调集,包括notes,hooks,供给的values,以及给定版别生成的清单文件。
语法:
helm get all RELEASE_NAME [flags]
选项:
--revision int # 获取Release指定的revision
--template string # 运用goTemplate格局化输出,例: {{.Release.Name}}
比如:
# 运用go template获取Release的name
$ helm get all image-info --template "{{ .Release.Name }}"
image-info
# 获取指定Release一切信息
$ helm get all image-info
NAME: image-info
LAST DEPLOYED: Sat Oct 28 15:25:39 2023
NAMESPACE: argo
STATUS: deployed
REVISION: 1
CHART: bookinfo
VERSION: 0.1.0
APP_VERSION: 1.16.0
TEST SUITE: None
USER-SUPPLIED VALUES:
null
COMPUTED VALUES:
image:
name: application
pullPolicy: IfNotPresent
tag: 0.1.5_rc-2
HOOKS:
MANIFEST:
---
# Source: bookinfo/templates/info.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: image-info
namespace: argo
data:
image: "application:0.1.5_rc-2"
imagePolicy: "IfNotPresent"
Notes
helm get notes
指令显现了由指定Release chart供给的注释(notes)
语法:
helm get notes RELEASE_NAME [flags]
选项:
--revision int # 指定Release的revision
比如:
# 获取image-info Release的notes
$ helm get notes image-info
NOTES:
# Hello
This is a image info
Manifest
helm get manifest
获取指定Release的manifest清单
该指令用来获取指定Release的manifest清单文件
manifest清单是由该Release的chart生成的Kubernetes资源的YAML编码表明。
语法:
helm get manifest RELEASE_NAME [flags]
选项:
--revision int # 指定Release的revision
比如:
# 获取image-info的manifest
$ helm get manifest image-info
---
# Source: bookinfo/templates/info.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: image-info
namespace: argo
data:
image: "application:0.1.5_rc-2"
imagePolicy: "IfNotPresent"
Hooks
helm get hooks
获取指定Release的一切hooks
hooks被格局化为YAML格局并以YAML的
---
分隔符分隔
语法:
helm get hooks RELEASE_NAME [flags]
选项:
--revision int # 指定Release的revision
比如:
# 查看image-info的hooks
$ helm get hooks image-info
---
# Source: bookinfo/templates/hooks.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: hook-cm
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-weight": "-1"
"helm.sh/hook-delete-policy": hook-succeeded
data:
version: "i'm a hook!"
Values
helm get values
获取指定Release的values.yaml
文件
语法:
helm get values RELEASE_NAME [flags]
选项:
-a, --all # dump一切(核算)值
-o, --output format # 指定输出格局.可选值: table, json, yaml (默许 table)
--revision int # 指定Release的revision
比如:
# 获取image-info的value值
$ helm get values image-info
helm get values image-info
USER-SUPPLIED VALUES:
null
# 获取image-info的value值, 包括核算值
$ helm get values image-info -a
COMPUTED VALUES:
image:
name: application
pullPolicy: IfNotPresent
tag: 0.1.5_rc-2
:fire: 留意: 默许情况下
helm get values
获取的是经过-f
或许--set
指令行参数设置USER-SUPPLIED VALUES
的值,假如需求获取values.yaml
文件的核算值,需求供给-a
参数
Metadata
helm get metadata
获取指定Release的元数据
语法:
helm get metadata RELEASE_NAME [flags]
选项:
-o, --output format # 指定输出格局.可选值: table, json, yaml (默许 table)
--revision int # 指定Release的revision
比如:
# 获取image-info Release的元数据
$ helm get metadata image-info
NAME: image-info
CHART: bookinfo
VERSION: 0.1.0
APP_VERSION: 1.16.0
NAMESPACE: argo
REVISION: 3
STATUS: deployed
DEPLOYED_AT: 2023-10-28T15:41:42 08:00
Create
helm create
运用给定称号创立新的chart,该指令创立chart目录和chart用到的公共文件目录
比如helm create foo
会创立一个目录结构看起来像这样:
foo/
├── .helmignore # 界说Helm charts打包时要疏忽的文件
├── Chart.yaml # chart的信息文件
├── values.yaml # 界说模板的默许值
├── charts/ # chart的依靠项目录
└── templates/ # 模板文件目录
└── tests/ # 测验文件目录
helm create
运用一个目录作为参数。假如给定目录途径不存在,Helm会主动创立。
:fire: 假如给定目录存在且非空,抵触文件会被掩盖,其他文件会被保存。
语法:
helm create NAME [flags]
选项:
-p, --starter string # Helm starter scaffold的称号或绝对途径
比如:
# 创立reids chart
$ helm create redis
# 查看生成的文件
$ tree redis/
redis/
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
Lint
helm lint
验证chart是否存在格局问题,该指令运用一个chart途径并运转一系列的测验来验证chart的格局是否正确。
:fire: 假如遇到引起chart装置失利的情况,会触发[ERROR]信息,假如遇到违反惯例或主张的问题,会触发[WARNING]。
语法:
helm lint PATH [flags]
选项:
--set stringArray # 在指令行上设置values(能够指定多个值或用逗号分隔:key1=val1,key2=val2)
--set-file stringArray # 经过指令行从文件获取值设置到values上(能够指定多个或用逗号分隔的值:key1=path1,key2=path2)
--set-json stringArray # 在指令行中设置JSON值设置到values上(能够指定多个或以逗号分隔的值:key1=JsonVal1,key2=JsonVal2)
--set-literal stringArray # 在指令行上设置一个字面值字符串值到values上
--set-string stringArray # 在指令行中设置字符串值到values上(能够指定多个或以逗号分隔的值:key1=val1,key2=val2)
--strict # lint为waring以为是失利的检测
-f, --values strings # 指定YAML文件或URL中的值到values上(能够指定多个)
--with-subcharts # 检测chart的依靠项
比如:
# 检测bookinfo, 并经过--set设置值
$ helm lint bookinfo --set image.name="0.2.0_canary_1"
==> Linting bookinfo
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, 0 chart(s) failed
# 检测bookinfo, 并经过--strict进行严厉检测
$ helm lint bookinfo --strict
==> Linting bookinfo
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, 0 chart(s) failed
Show
helm show [subcommand]
显现chart的信息
Chart
helm show chart
显现chart界说,该指令查看chart(目录、文件或URL)并显现Chart.yaml文件的内容
语法:
helm show chart [CHART] [flags]
选项:
--ca-file string # 运用此CA包验证启用https的服务器的证书 (当验证长途库房的chart时运用)
--cert-file string # 运用此SSL证书文件标识HTTPS客户端 (当验证长途库房的chart时运用)
--devel # 运用开发版别,这等价于版别` >0.0.0-0 ` 假如设置了——version,则疏忽此设置
--insecure-skip-tls-verify # 越过tls下载chart (主张在测验环境运用)
--key-file string # 运用这个SSL密钥文件辨认HTTPS客户端
--keyring string # 用于验证的公钥的方位 (默许 "~/.gnupg/pubring.gpg")
--pass-credentials # 将凭据传递给一切 domains
--password string # chart库房的暗码
--username string # chart库房的用户
--repo string # chart存储库url, 用于定位所恳求的chart
--verify # 在运用package前进行验证
--version string # 指定chart版别要运用的版别束缚,这个束缚可所以一个特定的标签(例如1.1.1)或许它能够引证一个有用的规模(例如^2.0.0)。假如没有指定,则运用最新版别
比如:
# 显现本地bookinfo目录的chart信息
$ helm show chart bookinfo
helm show chart bookinfo
apiVersion: v2
appVersion: 1.16.0
description: A Helm chart for Kubernetes
name: bookinfo
type: application
version: 0.1.0
# 显现bitnami长途库房的redis chart信息
$ helm show chart bitnami/redis --version 18.2.0
annotations:
category: Database
images: |
- name: os-shell
image: docker.io/bitnami/os-shell:11-debian-11-r90
- name: redis-exporter
image: docker.io/bitnami/redis-exporter:1.55.0-debian-11-r0
- name: redis-sentinel
image: docker.io/bitnami/redis-sentinel:7.2.2-debian-11-r0
- name: redis
image: docker.io/bitnami/redis:7.2.2-debian-11-r0
licenses: Apache-2.0
apiVersion: v2
appVersion: 7.2.2
dependencies:
- name: common
repository: oci://registry-1.docker.io/bitnamicharts
tags:
- bitnami-common
version: 2.x.x
description: Redis(R) is an open source, advanced key-value store. It is often referred
to as a data structure server since keys can contain strings, hashes, lists, sets
and sorted sets.
home:
keywords:
- redis
- keyvalue
- database
maintainers:
- name: VMware, Inc.
url: https://github.com/bitnami/charts
name: redis
sources:
- https://github.com/bitnami/charts/tree/main/bitnami/redis
version: 18.2.0
Crds
helm show crds
显现指定chart的CRD,该指令查看chart(目录、文件或URL)并显现自界说资源(CustomResourceDefinition)文件的内容。
:fire: 显现的是
chart/crds
目录下的自界说资源界说文件
语法:
helm show crds [CHART] [flags]
选项:
--ca-file string # 运用此CA包验证启用https的服务器的证书 (当验证长途库房的chart时运用)
--cert-file string # 运用此SSL证书文件标识HTTPS客户端 (当验证长途库房的chart时运用)
--devel # 运用开发版别,这等价于版别` >0.0.0-0 ` 假如设置了——version,则疏忽此设置
--insecure-skip-tls-verify # 越过tls下载chart (主张在测验环境运用)
--key-file string # 运用这个SSL密钥文件辨认HTTPS客户端
--keyring string # 用于验证的公钥的方位 (默许 "~/.gnupg/pubring.gpg")
--pass-credentials # 将凭据传递给一切 domains
--password string # chart库房的暗码
--username string # chart库房的用户
--repo string # chart存储库url, 用于定位所恳求的chart
--verify # 在运用package前进行验证
--version string # 指定chart版别要运用的版别束缚,这个束缚可所以一个特定的标签(例如1.1.1)或许它能够引证一个有用的规模(例如^2.0.0)。假如没有指定,则运用最新版别
比如:
# 查看bookinfo chart的crd
$ helm show crds bookinfo
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
...
Readme
helm show readme
显现chart的README,该指令查看chart(目录、文件或URL)并显现chart/README
文件内容
语法:
helm show readme [CHART] [flags]
选项:
--ca-file string # 运用此CA包验证启用https的服务器的证书 (当验证长途库房的chart时运用)
--cert-file string # 运用此SSL证书文件标识HTTPS客户端 (当验证长途库房的chart时运用)
--devel # 运用开发版别,这等价于版别` >0.0.0-0 ` 假如设置了——version,则疏忽此设置
--insecure-skip-tls-verify # 越过tls下载chart (主张在测验环境运用)
--key-file string # 运用这个SSL密钥文件辨认HTTPS客户端
--keyring string # 用于验证的公钥的方位 (默许 "~/.gnupg/pubring.gpg")
--pass-credentials # 将凭据传递给一切 domains
--password string # chart库房的暗码
--username string # chart库房的用户
--repo string # chart存储库url, 用于定位所恳求的chart
--verify # 在运用package前进行验证
--version string # 指定chart版别要运用的版别束缚,这个束缚可所以一个特定的标签(例如1.1.1)或许它能够引证一个有用的规模(例如^2.0.0)。假如没有指定,则运用最新版别
比如:
# 显现bookinfo chart的README文件
$ helm show readme bookinfo
# hello
## i'm bookinfo readme
Values
helm show values
显现指定chart的values,该指令查看chart(目录、文件或URL)并显现chart/values.yaml
文件的内容
语法:
helm show values [CHART] [flags]
选项:
--ca-file string # 运用此CA包验证启用https的服务器的证书 (当验证长途库房的chart时运用)
--cert-file string # 运用此SSL证书文件标识HTTPS客户端 (当验证长途库房的chart时运用)
--devel # 运用开发版别,这等价于版别` >0.0.0-0 ` 假如设置了——version,则疏忽此设置
--insecure-skip-tls-verify # 越过tls下载chart (主张在测验环境运用)
--key-file string # 运用这个SSL密钥文件辨认HTTPS客户端
--keyring string # 用于验证的公钥的方位 (默许 "~/.gnupg/pubring.gpg")
--pass-credentials # 将凭据传递给一切 domains
--password string # chart库房的暗码
--username string # chart库房的用户
--repo string # chart存储库url, 用于定位所恳求的chart
--verify # 在运用package前进行验证
--version string # 指定chart版别要运用的版别束缚,这个束缚可所以一个特定的标签(例如1.1.1)或许它能够引证一个有用的规模(例如^2.0.0)。假如没有指定,则运用最新版别
--jsonpath string # 供给一个JSONPath表达式来过滤输出
比如:
# 展现bookinfo的values
$ helm show values bookinfo
image:
name: application
pullPolicy: IfNotPresent
tag: "0.1.5_rc-2"
# 展现bookinfo的values, 并经过JsonPath进行过滤获取镜像名
$ helm show values bookinfo --jsonpath '{.image.name}'
application
All
helm show all
显现指定chart的一切信息,该指令查看chart(目录、文件或URL)并显现一切的内容:(chart/values.yaml
, chart/Chart.yaml
,chart/README
)
语法:
helm show all [CHART] [flags]
选项:
--ca-file string # 运用此CA包验证启用https的服务器的证书 (当验证长途库房的chart时运用)
--cert-file string # 运用此SSL证书文件标识HTTPS客户端 (当验证长途库房的chart时运用)
--devel # 运用开发版别,这等价于版别` >0.0.0-0 ` 假如设置了——version,则疏忽此设置
--insecure-skip-tls-verify # 越过tls下载chart (主张在测验环境运用)
--key-file string # 运用这个SSL密钥文件辨认HTTPS客户端
--keyring string # 用于验证的公钥的方位 (默许 "~/.gnupg/pubring.gpg")
--pass-credentials # 将凭据传递给一切 domains
--password string # chart库房的暗码
--username string # chart库房的用户
--repo string # chart存储库url, 用于定位所恳求的chart
--verify # 在运用package前进行验证
--version string # 指定chart版别要运用的版别束缚,这个束缚可所以一个特定的标签(例如1.1.1)或许它能够引证一个有用的规模(例如^2.0.0)。假如没有指定,则运用最新版别
比如:
# 显现bookinfo chart的一切信息
$ helm show all bookinfo
Install
helm install
指令用于装置chart包。装置参数有必要是chart的引证,可所以打包后的chart途径,未打包的chart目录或许是一个URL。
想要要重写chart中的值,运用--values
参数传递一个文件或许运用--set
参数在指令行传递装备,强制运用字符串要用--set-string
。 当值自身关于指令行太长或许是动态生成的时候,能够运用 --set-file'
设置独立的值。也能够在指令行运用--set-json
参数设置json值。
你能够屡次指定--values/-f
参数。最右侧指定的文件优先级最高。
# 最右侧文件优先级最高
$ helm install bookinfo bookinfo-1.0.0.gz -f val1.yaml -f val2.yaml
你也能够指定--set
参数屡次,最右边的参数优先级最高。
假如为了检测生成的清单,但并不装置到chart,能够将
--debug
和--dry-run
组合运用。
# 最右侧参数优先级最高
$ helm install bookinfo bookinfo-1.0.0.gz --set image=bookinfo:v1.0.1_rc-2 --set image=bookinfo:v1.0.2
假如设置了--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 example.com/charts/ngin…
- 经过chart引证和库房url: helm install –repo example.com/charts/ mynginx nginx
- 经过OCI注册中心: helm install mynginx –version 1.2.3 oci://example.com/charts/nginx
Chart引证
chart引证是在chart库房中引证chart的一种方便办法。
当你用库房前缀(‘example/mariadb’)引证chart时,Helm会在本地装备查找名为 ‘example’ 的chart库房, 然后会在库房中查找名为’mariadb’的库房,然后会装置这个chart最新的安稳版别,除非指定了’–devel’参数且包括了开发版别(alpha, beta,和候选版别),或许运用’–version’参数供给一个版别号。
要查看库房列表,运用helm repo list
。要在库房中查找chart,运用helm search
语法:
helm install [NAME] [CHART] [flags]
选项:
--atomic # 假如设置,在装置进程失利时删去装置. 假如运用了——atomic,——wait标志会主动设置
--ca-file string # 运用此CA包验证启用https的服务器的证书 (当装置长途库房的chart时有用)
--cert-file string # 运用此SSL证书文件标识HTTPS客户端
--create-namespace # 假如chart声明的namespace不存在,在创立release时创立对应的namespace.
--dependency-update # 假如在装置chart之前短少依靠项,则更新chart的依靠
--description string # 增加自界说的description描绘
--devel # 运用开发版别。等价于版别` >0.0.0-0 `。假如设置了——version,则疏忽此设置
--disable-openapi-validation # 假如设置, 装置进程将不会依据Kubernetes OpenAPI形式验证烘托的模板 (在debug烘托的chart时很有用)
--dry-run # 模仿运转 (在debug烘托的chart时很有用)
--enable-dns # 烘托模板时启用DNS lookups
--force # 经过替换战略强制资源更新
-g, --generate-name # 随机生成称号(将会省掉name)
--insecure-skip-tls-verify # 越过TLS证书查看, 下载chart
--key-file string # 运用这个SSL密钥文件辨认HTTPS客户端
--keyring string # 用于验证的公钥的方位 (默许: "~/.gnupg/pubring.gpg")
--name-template string # 指定用于命名Release的模板
--no-hooks # 在装置进程中不运转hooks
-o, --output format # 指定输出格局. 可选值: table, json, yaml (默许 table)
--pass-credentials # 将凭据传递给一切domains
--password string # chart库房的暗码
--post-renderer postrenderer # 用于post烘托的可履行文件的途径。假如它存在于PATH中,二进制文件将被运用,不然它将测验在给定的途径中寻觅可履行文件(默许的exec)
--render-subchart-notes # 假如设置了,将子chart的notes与父chart的notes一同展现
--replace # 重复运用给定的Release称号, 仅当该称号是保存在前史中的已删去版别时。 (这在出产环境中是不安全的,在测验阶段能够进行代替)
--repo string # 装置方针chart的库房
--set stringArray # 在指令行上设置值到values上(能够指定多个值或用逗号分隔:key1=val1,key2=val2)
--set-file stringArray # 经过指令行设置文件中的值到values上(能够指定多个或用逗号分隔的值:key1=path1,key2=path2)
--set-json stringArray # 在指令行中设置JSON值到values上(能够指定多个或以逗号分隔的值:key1=JsonVal1,key2=JsonVal2)
--set-literal stringArray # 在指令行上设置一个字面值字符串值
--set-string stringArray # 在指令行中设置字符串值到values上(能够指定多个或以逗号分隔的值:key1=val1,key2=val2)
--skip-crds # 假如设置,则不装置crd。默许情况下, 会先装置"chart/crds"下的CRD
--timeout duration # 等候任何独自Kubernetes操作的超时时刻(例如hooks的使命)(默许5m0s)
--username string # chart库房的用户
-f, --values strings # 指定YAML文件或URL中值作用到values上(能够指定多个)
--verify # 在运用package之前验证它
--version string # 指定chart版别要运用的版别束缚。这个束缚可所以一个特定的标签(例如1.1.1)或许它能够引证一个有用的规模(例如^2.0.0)。假如没有指定,则运用最新版别
--wait # 假如设置了,将等候一切的pod、pvc、Services和Deployment、StatefulSet或ReplicaSet的**最小**pod数量都处于安排妥当状况,然后才将发布标记为成功。它将等候的时刻为——timeout
比如:
# 装置bookinfo,将Release命名为bookinfo-release,而且等候一切资源装置完毕, 超时时刻为3min
$ helm install bookinfo-release bookinfo.gz --wait --timeout 3m
# 用于测验bookinfo的chart的烘托是否合法
$ helm install bookinfo-demo bookinfo.gz --dry-run --debug
# 在测验环境代替bookinfo-release的chart, 假如装置失利则主动删去装置
$ helm install bookinfo-release bookinfo_rc.gz --replace --atomic
# 测验bookinfo_rc, 不期望测验其hooks
$ helm install bookinfo-rc-release bookinfo_rc.gz --no-hooks
Uninstall
helm uninstall
指令用于卸载已装置的Release,会删去与最新版别chart相关的一切资源以及发布前史
运用--dry-run
参数能够查看哪些Release将在不实践卸载的情况下能够被卸载
语法:
helm uninstall RELEASE_NAME [...] [flags]
选项:
--cascade string # 资源的级联删去战略,有必要是"background"、"orphan"或"foreground"。默许为background删去
--description string # 增加自界说的description描绘
--dry-run # 模仿运转
--keep-history # 删去一切相关的资源并将Release标记为已删去,但保存发布前史 (这能够经过"helm history"进行追溯)
--no-hooks # 在uninstall进程不履行hooks
--timeout duration # 等候任何独自Kubernetes操作的超时时刻(例如hooks的使命)(默许5m0s)
--wait # 假如设置了,将等候一切资源删去后才回来. 它将等候与——timeout相同的时刻
比如:
# 删去bookinfo release, 但保存对应的revision
$ helm uninstall bookinfo --keep-history
# 删去bookinfo release, 经过前台战略进行删去
$ helm uninstall bookinfo --cascade "foreground"
# 堵塞等候一切资源删去完成, 超时时刻为3min
$ helm uninstall bookinfo --wait --timeout 3m
Upgrade
helm upgrade
指令用于晋级Release。晋级参数有必要是Release和chart。chart参数可所以:chart引证(‘example/mariadb’),chart目录途径,打包的chart或许完整URL。 关于chart引证,除非运用--version
参数指定,不然会运用最新版别。
语法:
helm upgrade [RELEASE] [CHART] [flags]
选项:
--atomic # 假如设置,在装置进程失利时删去装置. 假如运用了——atomic,——wait标志会主动设置
--ca-file string # 运用此CA包验证启用https的服务器的证书 (当装置长途库房的chart时有用)
--cert-file string # 运用此SSL证书文件标识HTTPS客户端
--create-namespace # 假如chart声明的namespace不存在,在创立release时创立对应的namespace.
--cleanup-on-fail # 答应在晋级失利时删去本次晋级中创立的**新资源**
--dependency-update # 假如在装置chart之前短少依靠项,则更新chart的依靠
--description string # 增加自界说的description描绘
--devel # 运用开发版别。等价于版别` >0.0.0-0 `。假如设置了——version,则疏忽此设置
--disable-openapi-validation # 假如设置, 装置进程将不会依据Kubernetes OpenAPI形式验证烘托的模板 (在debug烘托的chart时很有用)
--dry-run # 模仿装置 (在debug烘托的chart时很有用)
--enable-dns # 烘托模板时启用DNS lookups
--force # 经过替换战略强制资源更新
--history-max int # 束缚每个Release保存的最大revision数。运用0表明没有束缚(默许为10)
-i, --install # 假如需求晋级的Release还不存在,则运转install
--insecure-skip-tls-verify # 越过TLS证书查看, 下载chart
--key-file string # 运用这个SSL密钥文件辨认HTTPS客户端
--keyring string # 用于验证的公钥的方位 (默许: "~/.gnupg/pubring.gpg")
--name-template string # 指定用于命名Release的模板
--no-hooks # 在装置进程中不运转hooks
-o, --output format # 指定输出格局. 可选值: table, json, yaml (默许 table)
--pass-credentials # 将凭据传递给一切domains
--password string # chart库房的暗码
--post-renderer postrenderer # 用于post烘托的可履行文件的途径。假如它存在于PATH中,二进制文件将被运用,不然它将测验在给定的途径中寻觅可履行文件(默许的exec)
--render-subchart-notes # 假如设置了,将子chart的notes与父chart的notes一同展现
--replace # 重复运用给定的Release称号, 仅当该称号是保存在前史中的已删去版别时。 (这在出产环境中是不安全的,在测验阶段能够进行代替)
--repo string # 装置方针chart的库房
--set stringArray # 在指令行上设置值到values上(能够指定多个值或用逗号分隔:key1=val1,key2=val2)
--set-file stringArray # 经过指令行设置文件中的值到values上(能够指定多个或用逗号分隔的值:key1=path1,key2=path2)
--set-json stringArray # 在指令行中设置JSON值到values上(能够指定多个或以逗号分隔的值:key1=JsonVal1,key2=JsonVal2)
--set-literal stringArray # 在指令行上设置一个字面值字符串值
--set-string stringArray # 在指令行中设置字符串值到values上(能够指定多个或以逗号分隔的值:key1=val1,key2=val2)
--skip-crds # 假如设置,则不装置crd。默许情况下, 会先装置"chart/crds"下的CRD
--timeout duration # 等候任何独自Kubernetes操作的超时时刻(例如hooks的使命)(默许5m0s)
--username string # chart库房的用户
-f, --values strings # 指定YAML文件或URL中值作用到values上(能够指定多个)
--verify # 在运用package之前验证它
--version string # 指定chart版别要运用的版别束缚。这个束缚可所以一个特定的标签(例如1.1.1)或许它能够引证一个有用的规模(例如^2.0.0)。假如没有指定,则运用最新版别
--wait # 假如设置了,将等候一切的pod、pvc、Services和Deployment、StatefulSet或ReplicaSet的**最小**pod数量都处于安排妥当状况,然后才将发布标记为成功。它将等候的时刻为——timeout
--wait-for-jobs # 假如设置了——wait-for-jobs而且启用了——wait,则将等候一切作业完成后再将发布标记为成功。它将等候与——timeout相同的时刻
比如:
# 晋级bookinfo (此时bookinfo Release并不存在)
$ helm upgrade bookinfo bookinfo.gz -i
# 晋级bookinfo,而且等候晋级完成
$ helm upgrade bookinfo bookinfo.gz --wait
History
helm history
指令用于检索Release前史,打印给定Release的前史修订revision。
默许会回来最大的256个前史版别。设置--max
装备回来前史列表的最大长度。
语法:
helm history RELEASE_NAME [flags]
选项:
--max int # Release的最大前史revision 默许为256
-o, --output format # 指定打印格局. 可选值: table, json, yaml (默许 table)
比如:
# 打印image-info的一切前史revision
$ helm history image-info
helm history image-info
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Sat Oct 28 15:25:39 2023 superseded bookinfo-0.1.0 1.16.0 Install complete
2 Sat Oct 28 15:33:50 2023 superseded bookinfo-0.1.0 1.16.0 Upgrade complete
3 Sat Oct 28 15:41:42 2023 deployed bookinfo-0.1.0 1.16.0 Upgrade complete
Env
helm env
指令用于打印helm所运用的环境变量
语法:
helm env
选项:
# 无
比如:
# 打印一切helm env
$ helm env
HELM_BIN="helm"
HELM_BURST_LIMIT="100"
HELM_CACHE_HOME="/root/.cache/helm"
HELM_CONFIG_HOME="/root/.config/helm"
HELM_DATA_HOME="/root/.local/share/helm"
HELM_DEBUG="false"
HELM_KUBEAPISERVER=""
HELM_KUBEASGROUPS=""
HELM_KUBEASUSER=""
HELM_KUBECAFILE=""
HELM_KUBECONTEXT=""
HELM_KUBEINSECURE_SKIP_TLS_VERIFY="false"
HELM_KUBETLS_SERVER_NAME=""
HELM_KUBETOKEN=""
HELM_MAX_HISTORY="10"
HELM_NAMESPACE="argo"
HELM_PLUGINS="/root/.local/share/helm/plugins"
HELM_REGISTRY_CONFIG="/root/.config/helm/registry/config.json"
HELM_REPOSITORY_CACHE="/root/.cache/helm/repository"
HELM_REPOSITORY_CONFIG="/root/.config/helm/repositories.yaml"
Rollback
helm rollback
指令用于将Release回滚上一个revision版别。回滚指令的第一个参数是Release的称号,第二是Revision(版别)号,假如省掉此参数,会回滚到上一个版别。
:fire: 要查看修订号,履行
helm history RELEASE
语法:
helm rollback <RELEASE> [REVISION] [flags]
选项:
--cleanup-on-fail # 答应在回滚失利时删去本次回滚中创立的**资源**
--dry-run # 试运转
--force # 假如需求,强制运用delete/recreate更新资源
--history-max int # 束缚每个Release保存的最大revision数。运用0表明没有束缚(默许为10)
--no-hooks # 在回滚进程阻挠hooks的运转
--recreate-pods # 对资源pods履行重启操作(假如适用)
--timeout duration # 等候任何独自Kubernetes操作的超时时刻(例如hooks的使命)(默许5m0s)
--wait # 假如设置了,将等候一切的pod、pvc、Services和Deployment、StatefulSet或ReplicaSet的**最小**pod数量都处于安排妥当状况,然后才将发布标记为成功。它将等候的时刻为——timeout
--wait-for-jobs # 假如设置了——wait-for-jobs而且启用了——wait,则将等候一切作业完成后再将发布标记为成功。它将等候与——timeout相同的时刻
比如:
# 将image-info从revision=4回滚到revision=3
# 查看image-info的revision
$ helm history image-info
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Sat Oct 28 15:25:39 2023 superseded bookinfo-0.1.0 1.16.0 Install complete
2 Sat Oct 28 15:33:50 2023 superseded bookinfo-0.1.0 1.16.0 Upgrade complete
3 Sat Oct 28 15:41:42 2023 superseded bookinfo-0.1.0 1.16.0 Upgrade complete
4 Sun Oct 29 13:45:58 2023 deployed bookinfo-0.1.0 1.16.0 Upgrade complete
# 将image-info进行回滚
$ helm rollback image-info 3
Rollback was a success! Happy Helming!
Pull
helm pull
指令用于从长途库房下载并在本地目录解压(可选)。下载chart之后有解压的选项,会为chart创立一个目录并解压到这个目录中。
关于要获取查看,修正或从头打包的包很有用,还能够用于在不装置chart的情况下对chart进行加密验证。
假如指定了--verify
参数,恳求的chart有必要有出处文件,且有必要经过验证。任意部分的失利都会导致错误,且chart不会在本地保存。
语法:
helm pull [chart URL | repo/chartname] [...] [flags]
选项:
--ca-file string # 运用此CA包验证启用https的服务器的证书 (当装置长途库房的chart时有用)
--cert-file string # 运用此SSL证书文件标识HTTPS客户端
-d, --destination string # chart的保存的途径. 假如指定了'-d'和'untardir', untardir会附加到'-d'后边(默许为'.')
--devel # 运用开发版别。等价于版别` >0.0.0-0 `。假如设置了——version,则疏忽此设置
--insecure-skip-tls-verify # 越过TLS证书查看, 下载chart
--key-file string # 运用这个SSL密钥文件辨认HTTPS客户端
--keyring string # 用于验证的公钥的方位 (默许: "~/.gnupg/pubring.gpg")
--pass-credentials # 将凭据传递给一切domains
--password string # chart库房的暗码
--prov # 获取出处文件,但不进行验证
--repo string # 指定获取chart的库房
--untar # 假如设置,将在下载chart之后对该chart进行untar操作
--untardir string # 假如指定untar, 则此标志指定图表展开到的目录的称号 (默许 ".") ('untar' 'untardir'组合运用能够将chart下载后解压至指定途径)
--username string # chart库房的用户
--verify # 在运用package之前验证它
--version string # 指定chart版别要运用的版别束缚。这个束缚可所以一个特定的标签(例如1.1.1)或许它能够引证一个有用的规模(例如^2.0.0)。假如没有指定,则运用最新版别
比如:
# 下载binami的redis chart, 并解压到/home/redis目录下
$ helm pull bitnami/redis --version 18.2.0 --untar --untardir /home/redis
# 查看redis chart
$ tree /home/redis/
/home/redis/
└── redis
├── Chart.lock
├── charts
│ └── common
│ ├── Chart.yaml
│ ├── README.md
│ ├── templates
│ │ ├── _affinities.tpl
│ │ ├── _capabilities.tpl
......
Push
helm push
指令用于将chart推送到长途库房或许注册表中。
假如chart有其他相关文件,也会一同上传
语法:
helm push [chart] [remote] [flags]
选项:
--ca-file string # 运用此CA包验证启用https的服务器的证书 (当装置长途库房的chart时有用)
--cert-file string # 运用此SSL证书文件标识HTTPS客户端
--insecure-skip-tls-verify # 越过TLS证书查看, 下载chart
--key-file string # 运用这个SSL密钥文件辨认HTTPS客户端
比如:
# 将bookinfo推送到私服
$ helm push bookinfo.tgz my-repo
# 将bookinfo推送到OCI标准容器registry
$ helm push bookinfo.tgz oci://localhost:7000/helm-charts
Search
helm search [subcommand]
指令供给了能够在现已增加的Artifact Hub和库房等多个方位查找Helm chart 的能力。
Hub
helm search hub
指令能够在Artifact Hub或自己的hub实例中查找chart。
语法:
helm search hub [KEYWORD] [flags]
选项:
--endpoint string # 查询chart的hub端点endpoint (default "https://hub.helm.sh")
--list-repo-url # 打印chart repo url
--max-col-width uint # 输出表的最大列宽(默许值50)
-o, --output format # 指定输出格局. 可选值: table, json, yaml (默许 table)
比如:
# 在artifact hub中搜寻 elasticsearch chart, 一同供给此chart的库房url, 最终以yaml格局输出
$ helm search hub elasticsearch --list-repo-url -o yaml
- app_version: 0.1.0
description: A Helm chart deploy elasticsearch for Kubernetes
repository:
name: elasticsearch-rafael
url: https://opsteamhub.github.io/charts/elasticsearch
url: https://artifacthub.io/packages/helm/elasticsearch-rafael/elasticsearch
version: 0.1.0
- app_version: 8.0.0
description: Elasticsearch is a distributed search and analytics engine. It is used
for web search, log monitoring, and real-time analytics. Ideal for Big Data applications.
repository:
name: elasticsearch
url: https://odysseycloud.github.io/oc-charts
url: https://artifacthub.io/packages/helm/elasticsearch/elasticsearch
version: 1.0.1
......
Repo
helm search repo
指令经过运用关键字查找指定库房中的chart。
查找会读取体系上装备的一切库房,并查找匹配。查找这些库房会运用存储在体系中的元数据。
它会展现找到最新安稳版别的chart。假如指定了--devel
参数,输出会包括预发布版别。
语法:
helm search repo [keyword] [flags]
选项:
--devel # ——devel也运用开发版别(alpha、beta和发布候选版别)。相当于版别'>0.0.0-0' 假如设置了——version,则疏忽此设置
--max-col-width uint # 输出表的最大列宽(默许值50)
-o, --output format # 指定输出格局. 可选值: table, json, yaml (默许 table)
-r, --regexp # 运用正则表达式查找您增加的存储库repo
--version string # 指定chart版别要运用的版别束缚。这个束缚可所以一个特定的标签(例如1.1.1)或许它能够引证一个有用的规模(例如^2.0.0)。假如没有指定,则运用最新版别
-l, --versions # 显现你增加的repo的长列表,每个chart的每个版别都在独自的一行中. (能够显现chart的一切版别)
比如:
# 查找repo bitnami中的kafka chart,并查看一切版别.
$ helm search repo kafka -l
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/kafka 26.2.0 3.6.0 Apache Kafka is a distributed streaming platfor...
bitnami/kafka 26.1.0 3.6.0 Apache Kafka is a distributed streaming platfor...
bitnami/kafka 26.0.1 3.6.0 Apache Kafka is a distributed streaming platfor...
......
Templte
helm template
指令用于在本地烘托指定模板并输出。
一般在集群中查找或检索到的任何值都能够在本地假造。别的,没有对chart有用性进行服务端测验。
语法:
helm template [NAME] [CHART] [flags]
选项:
--atomic # 假如设置,在装置进程失利时删去装置. 假如运用了——atomic,——wait标志会主动设置
--ca-file string # 运用此CA包验证启用https的服务器的证书 (当装置长途库房的chart时有用)
--cert-file string # 运用此SSL证书文件标识HTTPS客户端
--create-namespace # 假如chart声明的namespace不存在,在创立release时创立对应的namespace.
--dependency-update # 假如在装置chart之前短少依靠项,则更新chart的依靠
--description string # 增加自界说的description描绘
--devel # 运用开发版别。等价于版别` >0.0.0-0 `。假如设置了——version,则疏忽此设置
--disable-openapi-validation # 假如设置, 装置进程将不会依据Kubernetes OpenAPI形式验证烘托的模板 (在debug烘托的chart时很有用)
--dry-run # 模仿运转 (在debug烘托的chart时很有用)
--enable-dns # 烘托模板时启用DNS lookups
--force # 经过替换战略强制资源更新
-g, --generate-name # 随机生成称号(将会省掉name)
--insecure-skip-tls-verify # 越过TLS证书查看, 下载chart
--key-file string # 运用这个SSL密钥文件辨认HTTPS客户端
--keyring string # 用于验证的公钥的方位 (默许: "~/.gnupg/pubring.gpg")
--name-template string # 指定用于命名Release的模板
--no-hooks # 在装置进程中不运转hooks
-o, --output format # 指定输出格局. 可选值: table, json, yaml (默许 table)
--pass-credentials # 将凭据传递给一切domains
--password string # chart库房的暗码
--post-renderer postrenderer # 用于post烘托的可履行文件的途径。假如它存在于PATH中,二进制文件将被运用,不然它将测验在给定的途径中寻觅可履行文件(默许的exec)
--render-subchart-notes # 假如设置了,将子chart的notes与父chart的notes一同展现
--replace # 重复运用给定的Release称号, 仅当该称号是保存在前史中的已删去版别时。 (这在出产环境中是不安全的,在测验阶段能够进行代替)
--repo string # 装置方针chart的库房
--set stringArray # 在指令行上设置值到values上(能够指定多个值或用逗号分隔:key1=val1,key2=val2)
--set-file stringArray # 经过指令行设置文件中的值到values上(能够指定多个或用逗号分隔的值:key1=path1,key2=path2)
--set-json stringArray # 在指令行中设置JSON值到values上(能够指定多个或以逗号分隔的值:key1=JsonVal1,key2=JsonVal2)
--set-literal stringArray # 在指令行上设置一个字面值字符串值
--set-string stringArray # 在指令行中设置字符串值到values上(能够指定多个或以逗号分隔的值:key1=val1,key2=val2)
--skip-crds # 假如设置,则不装置crd。默许情况下, 会先装置"chart/crds"下的CRD
--timeout duration # 等候任何独自Kubernetes操作的超时时刻(例如hooks的使命)(默许5m0s)
--username string # chart库房的用户
-f, --values strings # 指定YAML文件或URL中值作用到values上(能够指定多个)
--verify # 在运用package之前验证它
--version string # 指定chart版别要运用的版别束缚。这个束缚可所以一个特定的标签(例如1.1.1)或许它能够引证一个有用的规模(例如^2.0.0)。假如没有指定,则运用最新版别
--wait # 假如设置了,将等候一切的pod、pvc、Services和Deployment、StatefulSet或ReplicaSet的**最小**pod数量都处于安排妥当状况,然后才将发布标记为成功。它将等候的时刻为——timeout
--wait-for-jobs # 假如设置了——wait-for-jobs而且启用了——wait,则将等候一切作业完成后再将发布标记为成功。它将等候与——timeout相同的时刻
-s, --show-only stringArray # 只烘托模板中的清单
-a, --api-versions strings # Kubernetes api versions used for Capabilities.APIVersions
比如:
# 烘托bookinfo
$ helm template demo bookinfo/
---
# Source: bookinfo/templates/info.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: image-info
namespace: argo
data:
image: "application:0.1.5_rc-2"
imagePolicy: "IfNotPresent"
---
# Source: bookinfo/templates/hooks.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: hook-cm
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-weight": "-1"
"helm.sh/hook-delete-policy": hook-succeeded
data:
version: "i'm a hook!"
:fire: 关于
helm install --dry-run
和helm template
helm template
用于生成 Kubernetes 资源清单,供后续手动或主动布置运用,而不涉及实践的装置。helm install --dry-run
用于模仿 Helm Chart 的装置进程,以查看或许的问题,但不会在集群中创立资源。
Registry
helm registry [subcommand]
指令能够登录或登出注册表,该指令由多个子指令组成,用于与注册表交互。
Login
helm registry login
指令用于登录指定注册表。
语法:
helm registry login [host] [flags]
选项:
--ca-file string # 运用此CA包验证启用https的服务器的证书 (当装置长途库房的chart时有用)
--cert-file string # 运用此SSL证书文件标识HTTPS客户端
--key-file string # 运用这个SSL密钥文件辨认HTTPS客户端
--insecure # 答应连接到没有证书的TLS注册表
-p, --password string # registry的暗码或身份令牌
--password-stdin # 从stdin读取暗码或许token
-u, --username string # registry 用户名
比如:
# 登录私服
$ helm registry login localhost:6000 -u admin -p root123
Logout
helm registry logout
指令从指定的长途注册表移除认证信息。
语法:
helm registry logout [host] [flags]
选项:
# 无
比如:
# 从私服中登出
$ helm registry logout localhost:6000
Test
helm test
指令用于对发布的Release进行测验
:fire: 该指令运用的参数是布置Release的称号,要运转的测验在已装置的chart中界说。
语法:
helm test [RELEASE] [flags]
选项:
--filter strings # 运用attribute=value语法或`!Attribute =value`来扫除一个测验(能够用逗号指定多个或独自的值:name=test1,name=test2)
--logs # 从测验pod转储日志(在一切测验完成后,但在任何整理之前运转)
--timeout duration # 等候任何独自Kubernetes操作的超时时刻(例如hooks的使命)(默许5m0s)
比如:
# 对image-info 进行测验
$ helm test image-info --logs
:notes: 留意: 想要履行测验使命有必要在
chart/templates/tests
下界说对应的模板
Status
helm status
指令能够显现已命名的Release的状况
该指令显现已命名Release的状况,状况包括:
- 最终布置时刻
- 发布版别所在的k8s命名空间
- 发布状况(可所以: unknown, deployed, uninstalled, superseded, failed, uninstalling, pending-install, pending-upgrade 或 pending-rollback)
- 发布版别修订
- 发布版别描绘(可所以完成信息或错误信息,需求用
--show-desc
启用) - 罗列版别包括的资源(运用
--show-resources
显现) - 最终一次测验套件运转的详细信息(假如运用)
- chart供给的额外的注释
语法:
helm status RELEASE_NAME [flags]
选项:
-o, --output format # 指定输出格局. 可选值: table, json, yaml (默许 table)
--revision int # 显现指定修订Revision的Release的状况
--show-desc # 显现Release的描绘信息
--show-resources # 显现Release的资源信息
比如:
# 显现image-info Release的status
$ helm status image-info
NAME: image-info
LAST DEPLOYED: Sun Oct 29 13:46:48 2023
NAMESPACE: argo
STATUS: deployed
REVISION: 5
TEST SUITE: None
NOTES:
# Hello
This is a image info
# 指定显现revision=3的image-info Release的status
$ helm status image-info --revision 3
NAME: image-info
LAST DEPLOYED: Sat Oct 28 15:41:42 2023
NAMESPACE: argo
STATUS: superseded
REVISION: 3
TEST SUITE: None
NOTES:
# Hello
This is a image info
Verify
helm verfify
指令能够验证给定途径的chart现已被签名且有用,验证指定的chart有合法的源文件。源文件供给了加密验证保证chart未被篡改,且由可信供给商打包。
该指令用于验证本地chart,其他一些指令供给
--verify
参数履行相同的验证。要生成一个签名包,运用helm package --sign
指令。
语法:
helm verify PATH [flags]
选项:
--keyring string # 用于验证的公钥的方位 (默许: "~/.gnupg/pubring.gpg")
比如:
# 验证bookinfo是否被签名
$ helm verify bookinfo.tgz