今天我们来了解一下k8s的包管理工具,helm。

一、helm的架构

Helm有两个重要的概念: chart和release。

  • chart是创建一个应用的信息集合, 包括各种Kubernetes对象的配置模板、 参数定义、 依赖关系、 文档说明等。 chart是应用部署的自包含逻辑单元。 可以将chart想象成apt、 yum中的软件安装包。
  • release是chart的运行实例, 代表了一个正在运行的应用。 当chart被安装到Kubernetes集群, 就生成一个release。 chart能够多次安装到同一个集群, 每次安装都是一个release。

(这里有点类似程序与进程的区别,一个是静态,一个是动态)

Helm是包管理工具, 这里的包就是指的chart。 Helm能够:

  • 从零创建新chart。
  • 与存储chart的仓库交互, 拉取、 保存和更新chart。
  • 在Kubernetes集群中安装和卸载release。
  • 更新、 回滚和测试release。

Helm包含两个组件: Helm客户端和Tiller服务器, 如图所示
在这里插入图片描述
简单地讲, Helm客户端负责管理chart, Tiller服务器负责管理release。

二、安装helm

curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash

检查版本
在这里插入图片描述
安装tiller服务器,
在这里插入图片描述

三、使用helm

可以查询当前可安装的chart(非常多,就不全部展示了- -)
在这里插入图片描述
helm犹如docker仓库一样,有自己的仓库
在这里插入图片描述
也是有分官方还有本地仓库,用户可以通过helm repo add添加更多的仓库,如企业的私有仓库。
helm支持关键字搜索,如
在这里插入图片描述
安装chart也很简单,执行如下命令即可安装mysql

helm install stable/mysql

出现以下报错,是因为tiller服务器的权限不足
在这里插入图片描述
需要执行如下命名添加权限:

kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

然后重新执行安装mysql的命令,有以下效果
在这里插入图片描述
1、chart本次部署的描述信息。

  • NAME是release的名字, 因为我们没用-n参数指定, 所以Helm随机生成了一个, 这里是incline-puffin。
  • NAMESPACE是release部署的namespace, 默认是default, 也可以通过–namespace指定。
  • STATUS为DEPLOYED, 表示已经将chart部署到集群。

2、当前release包含的资源: Service、 Deployment、 Secret和PersistentVolumeClaim, 其名字都是fun-zorse-mysql, 命名的格式为ReleasName-ChartName。
3、NOTES部分显示的是release的使用方法, 比如如何访问Service、 如何获取数据库密码以及如何连接数据库等。
可以使用之前的kubectl get来查询各个release对象。
也可以使用

helm list

来查询后已经部署了的release
在这里插入图片描述

四、chart详解

书上写的比较详细,可以直接看书

五、构建自己的chart

操作就是书上的流程,在传输文件的时候记得给源文件和目的文件夹都给出权限,要不传不过去

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐