Helm

写在前面:

本文依据Helm官方文档helm进行编写,对Helm常用指令的运用,选项参数等进行了解说。阅览本文需求掌握Helm的根本运用。

Helm是什么?正如在官方介绍的那样,是一款Kubernetes 包办理器。Helm 是查找、共享和运用软件构建 Kubernetes 的最优办法。

三大概念

  1. Chart 代表着 Helm 包。它包括在 Kubernetes 集群内部运转应用程序,东西或服务所需的一切资源界说。你能够把它看作是 Homebrew formula,Apt dpkg,或 Yum RPM 在Kubernetes 中的等价物。

  2. Repository(库房) 是用来寄存和共享 charts 的地方。它就像 Perl 的 CPAN 档案库网络 或是 Fedora 的 软件包库房,只不过它是供 Kubernetes 包所运用的。

  3. Release 是运转在 Kubernetes 集群中的 chart 的实例。一个 chart 一般能够在同一个集群中装置屡次。每一次装置都会创立一个新的 release。以 MySQL chart为例,假如你想在你的集群中运转两个数据库,你能够装置该chart两次。每一个数据库都会拥有它自己的 releaserelease 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

ValuesValues方针是从values.yaml文件和用户供给的文件传进模板的。默许为空

ChartChart.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 buildhelm 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.yamlchart/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:

  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 example.com/charts/ngin…
  5. 经过chart引证和库房url: helm install –repo example.com/charts/ mynginx nginx
  6. 经过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-runhelm 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