helm
仓库搜索
Helm 安装 charts 到 Kubernetes 集群中,每次安装都会创建一个新的 release。你可以在 Helm 的 chart r epositories 中寻找新的 chart。
Helm 自带一个强大的搜索命令,可以用来从两种来源中进行搜索:
helm search hub
从 Artifact Hub 中查找并列出 helm charts。 Artifact Hub中存放了大量不同的仓库。helm search repo
从你添加(使用helm repo add
)到本地 helm 客户端中的仓库中进行查找。该命令基于本地数据进行搜索,无需连接互联网。
你可以通过运行 helm search hub
命令找到公开可用的charts:
$ helm search hub wordpress
使用 helm search repo
命令:
$ helm search repo brigade
注:helm支持模糊匹配,可以只输入一部分名字。
可以使用 helm status
来追踪 release 的状态
$ helm status happy-panda
自定义chart
命令行基础使用
使用 helm show values
可以查看 chart 中的可配置选项:
$ helm show values bitnami/wordpress
## Global Docker image parameters
## Please, note that this will override the image parameters, including dependencies, configured to use the global value
## Current available global Docker image parameters: imageRegistry and imagePullSecrets
##
# global:
# imageRegistry: myRegistryName
# imagePullSecrets:
# - myRegistryKeySecretName
# storageClass: myStorageClass
## Bitnami WordPress image version
## ref: https://hub.docker.com/r/bitnami/wordpress/tags/
##
image:
registry: docker.io
repository: bitnami/wordpress
tag: 5.6.0-debian-10-r35
[..]
然后,你可以使用 YAML 格式的文件覆盖上述任意配置项,并在安装过程中使用该文件。
$ echo '{mariadb.auth.database: user0db, mariadb.auth.username: user0}' > values.yaml
$ helm install -f values.yaml bitnami/wordpress --generate-name
安装过程中有两种方式传递配置数据:
--values
(或-f
):使用 YAML 文件覆盖配置。可以指定多次,优先使用最右边的文件。--set
:通过命令行的方式对指定项进行覆盖。
--set
选项使用0或多个 name/value 对。最简单的用法类似于:--set name=value
,等价于如下 YAML 格式:
name: value
多个值使用逗号分割,因此 --set a=b,c=d
的 YAML 表示是:
a: b
c: d
支持更复杂的表达式。例如,--set outer.inner=value
被转换成了:
outer:
inner: value
(2.5.0之前不展示)从 2.5.0 版本开始,可以使用数组下标的语法来访问列表中的元素。
例如 --set servers[0].port=80
就变成了:
servers:
- port: 80
多个值也可以通过这种方式来设置。
--set servers[0].port=80,servers[0].host=example
变成了:
servers:
- port: 80
host: example
--set nodeSelector."kubernetes\.io/role"=master
语法就变成了:
nodeSelector:
kubernetes.io/role: master
更多安装方法
helm install
命令可以从多个来源进行安装:
- chart 的仓库(如上所述)
- 本地 chart 压缩包(
helm install foo foo-0.1.1.tgz
) - 解压后的 chart 目录(
helm install foo path/to/foo
) - 完整的 URL(
helm install foo https://example.com/charts/foo-1.2.3.tgz
)
‘helm upgrade’ 和 ‘helm rollback’:升级 release 和失败时恢复
$ helm upgrade -f panda.yaml happy-panda bitnami/wordpress
我们可以使用 helm get values
命令来看看配置值是否真的生效了:
$ helm get values happy-panda
mariadb:
auth:
username: user1
假如在一次发布过程中,发生了不符合预期的事情,也很容易通过
helm rollback [RELEASE] [REVISION]
命令回滚到之前的发布版本。
$ helm history happy-panda
$ helm rollback happy-panda 1
上面这条命令将我们的 happy-panda
回滚到了它最初的版本。release 版本其实是一个增量修订(revision)。 每当发生了一次安装、升级或回滚操作,revision 的值就会加1。第一次 revision 的值永远是1。我们可以使用 helm history [RELEASE]
命令来查看一个特定 release 的修订版本号。
安装、升级、回滚时的有用选项
helm --help
-
--timeout
:一个 Go duration 类型的值, 用来表示等待 Kubernetes 命令完成的超时时间,默认值为5m0s
。 -
--wait
:表示必须要等到所有的 Pods 都处于 ready 状态,PVC 都被绑定,Deployments 都至少拥有最小 ready 状态 Pods 个数(Desired
减去maxUnavailable
),并且 Services 都具有 IP 地址(如果是LoadBalancer
, 则为 Ingress),才会标记该 release 为成功。最长等待时间由--timeout
值指定。如果达到超时时间,release 将被标记为FAILED
。注意:当 Deployment 的replicas
被设置为1,但其滚动升级策略中的maxUnavailable
没有被设置为0时,--wait
将返回就绪,因为已经满足了最小 ready Pod 数。 -
--no-hooks
:不运行当前命令的钩子。 -
--recreate-pods
(仅适用于upgrade
和rollback
):这个参数会导致重建所有的 Pod(deployment中的Pod 除外)。(在 Helm 3 中已被废弃)
使用 helm uninstall
命令从集群中卸载一个 release:
$ helm uninstall happy-panda
保留删除记录,使用 helm uninstall --keep-history
。使用 helm list --uninstalled
只会展示使用了 --keep-history
删除的 release。
helm list --all
会展示 Helm 保留的所有 release 记录,包括失败或删除的条目
注意,因为现在默认会删除 release,所以你不再能够回滚一个已经被卸载的资源了。
helm repo:使用仓库
基础命令
Helm 3 不再附带一个默认的 chart 仓库。helm repo
提供了一组命令用于添加、列出和移除仓库。
使用 helm repo list
来查看配置的仓库:
$ helm repo list
使用 helm repo add
来添加新的仓库:
$ helm repo add dev https://example.com/dev-charts
因为 chart 仓库经常在变化,在任何时候你都可以通过执行 helm repo update
命令来确保你的 Helm 客户端是最新的。
$ helm repo update
helm的其他命令
$ helm repo add name URL
$ helm repo remove
创建自己的charts
可以通过使用 helm create
命令来快速开始:
$ helm create deis-workflow
Creating deis-workflow
现在,./deis-workflow
目录下已经有一个 chart 了。你可以编辑它并创建你自己的模版。
helm lint
验证格式是否正确
当准备将 chart 打包分发时,你可以运行 helm package
命令:
$ helm package deis-workflow
deis-workflow-0.1.0.tgz
然后这个 chart 就可以很轻松的通过 helm install
命令安装:
$ helm install deis-workflow ./deis-workflow-0.1.0.tgz
...
hart 打包分发时,你可以运行 helm package
命令:
$ helm package deis-workflow
deis-workflow-0.1.0.tgz
然后这个 chart 就可以很轻松的通过 helm install
命令安装:
$ helm install deis-workflow ./deis-workflow-0.1.0.tgz
...