Helm简述

Helm 是一个软件包管理器,提供了一种简单的方法来查找、共享和使用为 Kubernetes 而构建的软件。类似于Linux系统下的包管理器,如yum/apt等,可以方便快捷的将之前打包好的yaml文件快速部署进kubernetes内,方便管理维护。

Helm 能够管理 k8s 中的资源依赖,能够重用 chart 包,能够为不同 k8s 集群制定不同的配置。

Helm 的生态圈和 Helm 官方所提供的众多包含有最佳实践的 chart 包。

helm 具有版本控制,可以保存历史配置进行回退等操作。

举个栗子

比如需要部署一个 nginx 服务,那么就需要分别去创建对应的 Pod 资源、Service 资源和 ingress 资源。 通过这种方式来部署几个服务还是可以接受的,但是如果服务数量众多,这种一个一个的操作方式不仅效率低下,而且非常容易出错。能尽量减少人工的操作那么就需要尽量去减少,甚至消除人工操作。k8s 仅仅只是针对资源对象定义了操作,而非对一个服务整体,又或者是一个应用整体进行定义,它是一种细粒度的编排管理。出于这样的原因,k8s 对高层次的服务或应用编排的支持可能就不够了。Helm 的出现就是为了解决这种粗粒度的编排管理的。
 

基本概念

helm:一个命令行下客户端工具,主要用于kubernetes应用chart的创建/打包/发布以及创建和管理和远程Chart仓库。

Tiller:helm的服务端,部署于kubernetes内,Tiller接受helm的请求,并根据chart生成kubernetes部署文件(helm称为release),然后提交给 Kubernetes 创建应用。Tiller 还提供了 Release 的升级、删除、回滚等一系列功能。

Chart: helm的软件包,采用tar 格式或者目录,其中包含运行一个应用所需的所有镜像/依赖/资源定义等,还可能包含kubernetes集群中服务定义

Release:在kubernetes中集群中运行的一个Chart实例,在同一个集群上,一个Chart可以安装多次,每次安装均会生成一个新的release,后期的更新/删除等操作是基于release 名称完成的

Repository:用于发布和存储Chart的仓库

命令介绍

创建一个 chart 
  helm create chart-name                                      #生产完整的chart 目录结构根据实际情况再做定制化修改


创建一个release(启动服务)

  helm install ./configmap-test -n configmaptest --namespace kzf            #安装chart 包,启动一个release。#第一个参数:chart 目录  -n release 名  --namesapce 指定创建资源在哪个命名空间
   注意:不指定release 名字随机生成;默认命名空间default;相同chart可部署多个release,只要release 名字不冲突,即使不同命名空间都不能冲突;可以通过-f 指定特定的values.yaml 文件,默认用chart 目录里面的


删除一个运行的服务
  helm del     --purge     release-name                                    #删除的时候是在全局而不是命名空间下
                            
更新配置                            
    helm upgrade  -i  --namespace kzf  --set config=dev1  configmaptest  ./configmap-test    #-i release 如果不存在就install --set 设置变量默认覆盖value.yml中的同名变量, release 名字,chart目录 
   注意:chart 里面templates/*.yaml 中如果变更了资源名称,那么upgrade 不是创建新的资源也是更改资源名称。如果release 变了,有-i 参数就会创建新的release 和资源 如果是更新的话没必要指定命名空间,因为release 是全局唯一
   但是第一次执行此命令就相当于创建所以要指定命名空间 

查询历史版本
  helm history configmaptest             #根据 release 名查询所有的版本历史

回滚
  helm rollback configmaptest 2            #版本号通过helm history 查询REVISION 列得知,根据release 名及版本号回滚

查询信息
  helm get manifest configmaptest          #查询此release 信息包括由哪个chart 创建而来以及创建的资源信息等

测试安装
  helm install --debug --dry-run ./mychart     #这会将 chart 发送到 Tiller 服务器,它将渲染模板。但不是安装 chart,它会将渲染模板返回,以便可以看到输出
View Code

相关文章: