kubernetes使用helm工具

helm

仓库搜索

Helm 安装 charts 到 Kubernetes 集群中,每次安装都会创建一个新的 release。你可以在 Helm 的 chart r epositories 中寻找新的 chart。

Helm 自带一个强大的搜索命令,可以用来从两种来源中进行搜索:

  • helm search hubArtifact 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(仅适用于 upgraderollback):这个参数会导致重建所有的 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
...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值