Helm v3 入门
Posted imirsh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Helm v3 入门相关的知识,希望对你有一定的参考价值。
Helm应用包管理器
- 为什么需要Helm?
K8S上的应用对象,都是由特定的资源描述组成,包括deployment、service等。都保存各自文件中或者集中写到一个配置文件。然后kubectl apply –f 部署。如果应用只由一个或几个这样的服务组成,上面部署方式足够了。而对于一个复杂的应用,会有很多类似上面的资源描述文件,例如微服务架构应用,组成应用的服务可能多达十个,几十个。如果有更新或回滚应用的需求,可能要修改和维护所涉及的大量资源文件,而这种组织和管理应用的方式就显得力不从心了。且由于缺少对发布过的应用版本管理和控制,使Kubernetes上的应用维护和更新等面临诸多的挑战,主要面临以下问题:
- 如何将这些服务作为一个整体管理
- 这些资源文件如何高效复用
- 不支持应用级别的版本管理
- Helm 介绍
Helm是一个 Kubernetes 的包管理工具,就像Linux下的包管理器,如 yum/apt 等,可以很方便的将之前打包好的yaml文件部署到 kubernetes 上。
Helm有两个重要概念:
helm
:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发布和管理Chart
:应用描述,一系列用于描述 k8s 资源相关文件的集合Release
:基于Chart的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在k8s中创建出真实运行的资源对象
- Helm v3 变化
2019年11月13日,Helm团队发布 Helm v3
的第一个稳定版本。
该版本主要变化如下:
- 架构变化:最明显的变化是 Tiller 的删除
- Release 名称可以在不同命名空间重用
- 支持将 Chart 推送至 Docker 镜像仓库中
- 使用JSONSchema验证chart values
Helm 客户端
- 安装 Helm 客户端
src]# https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz
src]# tar -xf helm-v3.0.0-linux-amd64.tar.gz
src]# cp linux-amd64/helm /usr/bin/
~]# helm version
version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}
2.Helm 常见命令
命令 | 描述 |
---|---|
create | 创建一个chart并指定名字 |
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、list、remove、update |
rollback | 从之前版本回滚 |
search | 根据关键字搜索chart。可用子命令:hub、repo |
show | 查看chart详细信息。可用子命令:all、chart、readme、values |
status | 显示已命名版本的状态 |
template | 本地呈现模板 |
uninstall | 卸载一个release |
upgrade | 更新一个release |
version | 查看helm客户端版本 |
3、配置国内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
NAME URL
stable http://mirror.azure.cn/kubernetes/charts
aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
~]# helm search repo aliyun
// 删除存储库
helm repo remove aliyun
Helm基本使用
- 安装: chart install
- 升级: chart upgrade
- 回滚: chart rollback
1 . 使用 chart 部署一个应用
- 查找 chart
~]# helm search repo mysql
- 查看 charts
~]# helm show values stable/mysql
- 安装 包
- ~]# helm install mydb stable/mysql
- 查看 release 状态
~]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
mydb default 1 2020-07-18 09:58:54.209184918 +0800 CST deployed mysql-1.6.6 5.7.30
- 卸载
~]# helm uninstall mydb
- 安装前自定义chart配置选项
上面部署的mysql并没有成功,这是因为并不是所有的chart都能按照默认配置运行成功,可能会需要一些环境依赖,例如PV。所以我们需要自定义chart配置选项,安装过程中有两种方法可以传递配置数据。
- --values
(或-f
):指定带有覆盖的YAML文件。这可以多次指定,最右边的文件优先--set
:在命令行上指定替代。如果两者都用,--set优先级高
--values使用,先将修改的变量写到一个文件中
~]# helm show values stable/mysql > config.yaml
~]# cat config.yaml
persistence:
enabled: true
storageClass: "managed-nfs-storage"
accessMode: ReadWriteOnce
size: 8Gi
mysqlUser: "k8suser"
mysqlPassword: "123456"
mysqlDatabase: k8sdb
~]# helm install mydb -f config.yaml stable/mysql
以上是关于Helm v3 入门的主要内容,如果未能解决你的问题,请参考以下文章