helm常用命令及chart部署

一、介绍

Helm 是一个 Kubernetes 的包管理工具,就像 Linux 下的包管理器,如 yum/apt 等,可以很方便的将之前打包好的 yaml 文件部署到 kubernetes 上。

Helm 有 3 个重要概念:

(1)helm:一个命令行客户端工具,主要用于 Kubernetes 应用 chart 的创建、打包、发 布和管理。

(2)Chart:应用描述,一系列用于描述 k8s 资源相关文件的集合。

(3)Release:基于 Chart 的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在 k8s 中创建出真实运行的资源对象。

Helm Version	Supported Kubernetes Versions
3.9.x	1.24.x - 1.21.x
3.8.x	1.23.x - 1.20.x
3.7.x	1.22.x - 1.19.x

Helm v3 变化:

helm常用命令及chart部署_第1张图片

二、安装

wget -c https://get.helm.sh/helm-v3.9.2-linux-amd64.tar.gz
tar -xf helm-v3.9.2-linux-amd64.tar.gz
cd linux-amd64/
mv helm /usr/local/bin/

2.1 配置国内 chart 仓库

微软仓库(http://mirror.azure.cn/kubernetes/charts/)这个仓库推荐,基本上官网有的 chart 这里都有。

阿里云仓库(https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts )

官方仓库(https://hub.kubeapps.com/charts/incubator)官方 chart 仓库,国内有点不好使。

添加存储库

$ helm repo add stable http://mirror.azure.cn/kubernetes/charts 
$ helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts 
$ helm repo update

查看配置的存储库

$ helm repo list 
$ helm search repo stable

删除存储库

helm repo remove aliyun

三、命令

命令 说明
dependency 管理 chart 依赖
get 下载一个 release。可用子命令:all、hooks、manifest、notes、values
history 获取 release 历史
install 安装一个 chart
list 列出 release
package 将 chart 目录打包到 chart 存档文件中
pull 从远程仓库中下载 chart 并解压到本地 # helm pull stable/mysql --untar
repo 添加,列出,移除,更新和索引 chart 仓库。可用子命令:add、index、
rollback 从之前版本回滚
search 根据关键字搜索 chart。可用子命令:hub、repo
show 查看 chart 详细信息。可用子命令:all、chart、readme、values
status 显示已命名版本的状态
template 本地呈现模板
uninstall 卸载一个 release
upgrade 更新一个 release
version 查看 helm 客户端版本

3.1 添加库

添加图表存储库
helm repo add bitnami https://charts.bitnami.com/bitnami

3.2 列出可以安装的

# 列入可以安装的bitnami库
helm search repo bitnami 

3.3 更新charts

helm repo update 

3.4 安装

helm install bitnami/mysql --generate-name
# values配置覆盖安装
helm install -f values.yaml bitnami/wordpress --generate-name

3.5 列表

helm list -n 空间

3.6 查看chart的基本信息

helm show chart bitnami/mysql

3.7 卸载

helm uninstall mysql-1612624192

3.8 查看该版本的信息

helm status mysql-1612624192

3.9 回滚版本

helm rollback version

3.10 搜索

Helm 搜索使用模糊字符串匹配算法

helm search hub wordpress

3.11 拉取到本地

helm pull chartrepo/chartname

四、 安装前自定义 chart

配置优先级:

  1. –set值,优先级更高,覆盖的内容会被被保存在 ConfigMap 中,可以通过 helm get values 来查看指定 release 中 --set设置的值
  2. 可以通过运行 helm upgrade 并指定 --reset-values 字段来清除 --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: 80
    host: 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

五、版本控制

# 升级
helm upgrade -f panda.yaml happy-panda bitnami/wordpress
# 版本查看
helm history [RELEASE]
# 回滚
helm rollback happy-panda 1

六、创建你自己的 charts

# 创建charts
helm create deis-workflow
# 格式检查
helm lint deis-workflow
# 打包生成deis-workflow-0.1.0.tgz
helm package deis-workflow
# 安装
helm install deis-workflow ./deis-workflow-0.1.0.tgz
# 非安装预览
helm install deis-workflow ./deis-workflow-0.1.0.tgz --dry-run --debug

七、使用 chart 部署一个应用

# 查找chart
[root@k8smaster ~]# helm search repo weave
# 查看chrt 信息
[root@k8smaster ~]# helm show chart stable/mysql
# 安装包
[root@k8smaster ~]# helm install ui stable/weave-scope
#查看发布状态
[root@k8smaster ~]# helm list
# 状态查看
[root@k8smaster ~]# helm status ui

安装前自定义chart 配置选项

自定义选项是因为并不是所有的chart 都能按照默认配置运行成功,可能会需要一些环境依赖,例如PV。所以我们需要自定义chart 配置选项,安装过程中有两种方法可以传递配置数据:

  • --values(或-f):指定带有覆盖的YAML 文件。这可以多次指定,最右边的文件优先
  • --set:在命令行上指定替代。如果两者都用,--set 优先级高

--values 使用,先将修改的变量写到一个文件中

[root@k8smaster ~]# helm show values stable/mysql
[root@k8smaster ~]# vi config.yaml
[root@k8smaster ~]# cat config.yaml
[root@k8smaster ~]# helm install db -f config.yaml stable/mysql

 

你可能感兴趣的:(helm从入门到实践,kubernetes)