Helm系列(5)-helm 常用命令
安装前自定义 chart
上述安装方式只会使用 chart 的默认配置选项。很多时候,我们需要自定义 chart 来指定我们想要的配置。
使用 helm show values
可以查看 chart 中的可配置选项:
然后,你可以使用 YAML 格式的文件覆盖上述任意配置项,并在安装过程中使用该文件。
$ echo '{mariadb.auth.database: user0db, mariadb.auth.username: user0}' > values.yaml
$ helm install -f values.yaml bitnami/wordpress --generate-name
上述命令将为 MariaDB 创建一个名称为 user0
的默认用户,并且授予该用户访问新建的 user0db
数据库的权限。chart 中的其他默认配置保持不变。
安装过程中有两种方式传递配置数据:
--values
(或-f
):使用 YAML 文件覆盖配置。可以指定多次,优先使用最右边的文件。--set
:通过命令行的方式对指定项进行覆盖。
如果同时使用两种方式,则 --set
中的值会被合并到 --values
中,但是 --set
中的值优先级更高。在--set
中覆盖的内容会被被保存在 ConfigMap 中。可以通过 helm get values <release-name>
来查看指定 release 中 --set
设置的值。也可以通过运行 helm upgrade
并指定 --reset-values
字段来清除 --set
中设置的值。
--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
列表使用花括号({}
)来表示。例如,--set name={a, b, c}
被转换成了:
name:- a- b- c
从 2.5.0 版本开始,可以使用数组下标的语法来访问列表中的元素。例如 --set servers[0].port=80
就变成了:
servers:- port: 80
多个值也可以通过这种方式来设置。--set servers[0].port=80,servers[0].host=example
变成了:
servers:- port: 80host: example
如果需要在 --set
中使用特殊字符,你可以使用反斜线来进行转义;--set name=value1\,value2
就变成了:
name: "value1,value2"
类似的,你也可以转义点序列(英文句号)。这可能会在 chart 使用 toYaml
函数来解析 annotations,labels,和 node selectors 时派上用场。--set nodeSelector."kubernetes\.io/role"=master
语法就变成了:
nodeSelector:kubernetes.io/role: master
深层嵌套的数据结构可能会很难用 --set
表达。我们希望 Chart 的设计者们在设计 values.yaml
文件的格式时,考虑到 --set
的使用。(更多内容请查看 Values 文件)
更多安装方法
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 和失败时恢复
当你想升级到 chart 的新版本,或是修改 release 的配置,你可以使用 helm upgrade
命令。
一次升级操作会使用已有的 release 并根据你提供的信息对其进行升级。由于 Kubernetes 的 chart 可能会很大而且很复杂,Helm 会尝试执行最小侵入式升级。即它只会更新自上次发布以来发生了更改的内容。
$ helm upgrade -f panda.yaml happy-panda bitnami/wordpress
在上面的例子中,happy-panda
这个 release 使用相同的 chart 进行升级,但是使用了一个新的 YAML 文件:
mariadb.auth.username: user1
我们可以使用 helm get values
命令来看看配置值是否真的生效了:
$ helm get values happy-panda
mariadb:auth:username: user1
helm get
是一个查看集群中 release 的有用工具。正如我们上面所看到的,panda.yaml
中的新值已经被部署到集群中了。
现在,假如在一次发布过程中,发生了不符合预期的事情,也很容易通过 helm rollback [RELEASE] [REVISION]
命令回滚到之前的发布版本。
$ helm rollback happy-panda 1
上面这条命令将我们的 happy-panda
回滚到了它最初的版本。release 版本其实是一个增量修订(revision)。 每当发生了一次安装、升级或回滚操作,revision 的值就会加1。第一次 revision 的值永远是1。我们可以使用 helm history [RELEASE]
命令来查看一个特定 release 的修订版本号。
安装、升级、回滚时的有用选项
你还可以指定一些其他有用的选项来自定义 Helm 在安装、升级、回滚期间的行为。请注意这并不是 cli 参数的完整列表。 要查看所有参数的说明,请执行 helm <command> --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
命令从集群中卸载一个 release:
$ helm uninstall happy-panda
该命令将从集群中移除指定 release。你可以通过 helm list
命令看到当前部署的所有 release:
$ helm list
NAME VERSION UPDATED STATUS CHART
inky-cat 1 Wed Sep 28 12:59:46 2016 DEPLOYED alpine-0.1.0
从上面的输出中,我们可以看到,happy-panda
这个 release 已经被卸载。
在上一个 Helm 版本中,当一个 release 被删除,会保留一条删除记录。而在 Helm 3 中,删除也会移除 release 的记录。 如果你想保留删除记录,使用 helm uninstall --keep-history
。使用 helm list --uninstalled
只会展示使用了 --keep-history
删除的 release。
helm list --all
会展示 Helm 保留的所有 release 记录,包括失败或删除的条目(指定了 --keep-history
):
$ helm list --all
NAME VERSION UPDATED STATUS CHART
happy-panda 2 Wed Sep 28 12:47:54 2016 UNINSTALLED wordpress-10.4.5.6.0
inky-cat 1 Wed Sep 28 12:59:46 2016 DEPLOYED alpine-0.1.0
kindred-angelf 2 Tue Sep 27 16:16:10 2016 UNINSTALLED alpine-0.1.0
注意,因为现在默认会删除 release,所以你不再能够回滚一个已经被卸载的资源了。
'helm repo':使用仓库
Helm 3 不再附带一个默认的 chart 仓库。helm repo
提供了一组命令用于添加、列出和移除仓库。
使用 helm repo list
来查看配置的仓库:
$ helm repo list
NAME URL
stable https://charts.helm.sh/stable
mumoshu https://mumoshu.github.io/charts
使用 helm repo add
来添加新的仓库:
$ helm repo add dev https://example.com/dev-charts
因为 chart 仓库经常在变化,在任何时候你都可以通过执行 helm repo update
命令来确保你的 Helm 客户端是最新的。
使用 helm repo remove
命令来移除仓库。
创建你自己的 charts
chart 开发指南 介绍了如何开发你自己的chart。 但是你也可以通过使用 helm create
命令来快速开始:
$ helm create deis-workflow
Creating deis-workflow
现在,./deis-workflow
目录下已经有一个 chart 了。你可以编辑它并创建你自己的模版。
在编辑 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
...
打包好的 chart 可以上传到 chart 仓库中。查看 Helm chart 仓库获取更多信息。
总结
这一章介绍了 helm
客户端的基本使用方式,包括搜索,安装,升级,和卸载。也涵盖了一些有用的工具类命令,如helm status
, helm get
,和 helm repo
。
有关这些命令的更多信息,请查看 Helm 的内置帮助命令:helm help
。
参考:
Helm | 使用Helm
Helm系列(5)-helm 常用命令相关推荐
- Git使用 从入门到入土 收藏吃灰系列(三) Git常用命令
文章目录 一.前言 二.常用的命令 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『Git』知道这些就够了_哔哩哔哩_bilibi ...
- kafka java api 删除_Kafka入门系列—6. Kafka 常用命令及Java API使用
常用命令 启动Zookeeper ./zkServer.sh start-foreground 可选参数: ./zkServer.sh {start|start-foreground|stop|res ...
- Docker 从入门到实践系列三 - Docker 常用命令,java高级开发工程师面试问题
容器命令 镜像运行起来后,称为容器. 下面以 Tomcat 为例 搜索镜像 docker search tomcat 下载镜像 docker pull tomcat 运行容器 运行tomcat doc ...
- 【Linux后端开发必问】操作系统系列(Linux常用命令、文件权限修改、静态与动态库的制作)
目录 一.说说常用的Linux命令 二.文件权限如何修改 三.静态库和动态库的制作 1.静态库 2.动态库的制作 3.两者优势对比 一.说说常用的Linux命令 1.cd命令:用于切换当前目录: 2. ...
- MongoDB系列之MongoDB常用命令
一.MongoDB基本操作 1.1.软件环境准备 软件环境: MongoDB Server5.0.9 Navicat15.0.28 RoboMongo 0.9.0 Window10系统 1.2.Mon ...
- 大数据系列(3)-HDFS 常用命令
目录 1.服务端命令 1.1 appendToFile 追加到文件 1.2 copyFromLocal 从本地拷贝 1.3 copyToLocal 下载文件到本地 1.4 count 统计文件目录. ...
- docker k8s helm常用命令梳理
####################docker#################### docker hub地址:https://hub.docker.com/docker pull apach ...
- Kubernetes系列之Helm介绍篇
本次系列使用的所需部署包版本都使用的目前最新的或最新稳定版,安装包地址请到公众号内回复[K8s实战]获取 介绍 Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来 ...
- linux 挂载硬盘_Linux系列教程(十八)——Linux文件系统管理之文件系统常用命令...
大家好,我是可乐,一个专注原创,乐于分享的程序猿.本系列教程持续更新,可以微信搜索「 IT可乐 」第一时间阅读.回复<电子书>有我为大家特别筛选的海量免费书籍资料 通过前面两篇博客,我们介 ...
最新文章
- lk中内联调用的dsb()
- 代码坏味道 - 耦合
- 二叉树题目---3 另一个树的子树 AND 二叉树最大深度
- Java操作——获取文件扩展名,去掉文件扩展名
- Excel .net读取
- TypeScript笔记(4)—— TypeScript中的类型注解
- 从源码分析HashSet集合
- jenkins教程菜鸟_Jenkins教程:修改Jenkins端口号
- erdas几何校正_erdas图像几何校正操作步骤指南.doc
- Rayman的绝顶之路——Leetcode每日一题打卡12
- nginx做反向代理网站加载验证码图片不出来
- 进入Tokio的异步世界
- iOS-设置导航栏颜色(iOS8+)
- windows中用注册表删除guest账户
- 自然语言处理面试 | (1)胡盼盼(NLP入门到实践)总结
- 互联网工作 常用名词及基础知识扫盲
- 视频流媒体服务器中怎么降低直播出现的延迟现象?
- java实习生面试题总结
- 大泉州汽车网整站程序PHP生成html开源版 V1.1.4
- 静态时序分析 第三章 标准单元库