Helm 是什么

每个成功的软件平台都有一个优秀的打包系统,比如 Debian、Ubuntu 的 apt,Redhat、Centos 的 yum。而 Helm 则是 Kubernetes 上的包管理器。

Helm 的架构

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

chart 是创建一个应用的信息集合,包括各种 Kubernetes 对象的配置模板、参数定义、依赖关系、文档说明等。chart 是应用部署的自包含逻辑单元。可以将 chart 想象成 apt、yum 中的软件安装包。

release 是 chart 的运行实例,代表了一个正在运行的应用。当 chart 被安装到 Kubernetes 集群,就生成一个 release。chart 能够多次安装到同一个集群,每次安装都是一个 release。

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

Helm 包含两个组件:Helm 客户端 和 Tiller 服务器。

简单的讲:Helm 客户端负责管理 chart;Tiller 服务器负责管理 release。

安装和部署 Helm 客户端和 Tiller 服务器

将 Helm 客户端安装在能够执行 kubectl 命令的节点上

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

Tiller 服务器安装非常简单,只需要执行 helm init:

现在,使用 helm version 命令已经能够查看到客户端和服务器的版本信息了。

使用 Helm

Helm 安装成功后,可执行 helm search 查看当前可安装的 chart。例如找mysql :helm searchmysql

Helm 仓库 :helm repo list

Helm 安装时已经默认配置好了两个仓库:stable 和 local。stable 是官方仓库,local 是用户存放自己开发的 chart 的本地仓库。

用户可以通过 helm repo add 添加更多的仓库,比如企业的私有仓库,仓库的管理和维护方法请参考官网文档 https://docs.helm.sh

添加仓库:
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
helm repo list

安装 chart 也很简单,执行如下命令可以安装 MySQL。
helm install stable/mysql

如果看到报错,通常是因为 Tiller 服务器的权限不足。

helm install --name roy-kafka incubator/kafka
Error: release roy-kafka failed: namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get resource "namespaces" in API group "" in the namespace "default"

执行如下命名添加权限:
$ 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"}}}}'

然后再次执行
helm install stable/mysql

参考链接:https://www.jianshu.com/p/32f968d0f9e1
来源:简书

转载于:https://blog.51cto.com/12083623/2389068

Logo

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

更多推荐