helm简介

Helm 可以理解为 Kubernetes 的包管理工具,可以方便地发现、共享和使用为Kubernetes构建的应用。

Helm 采用客户端/服务器架构,有如下组件组成:

Helm CLI 是 Helm 客户端,可以在本地执行
Tiller 是服务器端组件,在 Kubernetes 群集上运行,并管理 Kubernetes 应用程序的生命周期
Repository 是 Chart 仓库,Helm客户端通过HTTP协议来访问仓库中Chart的索引文件和压缩包。

在这里插入图片描述

1.Helm的三个基本概念

Chart:Helm应用(package),包括该应用的所有Kubernetes manifest模版,类似于YUM RPM或Apt dpkg文件
Repository:Helm package存储仓库
Release:chart的部署实例,每个chart可以部署一个或多个release

2.Helm工作原理
Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。Helm使发布可配置,支持发布应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。

Helm包括两个部分,helm客户端和tiller服务端。

3.helm客户端

helm客户端是一个命令行工具,负责管理charts、reprepository和release。它通过gPRC API(使用kubectl port-forward将tiller的端口映射到本地,然后再通过映射后的端口跟tiller通信)向tiller发送请求,并由tiller来管理对应的Kubernetes资源。

4.tiller服务端

tiller接收来自helm客户端的请求,并把相关资源的操作发送到Kubernetes,负责管理(安装、查询、升级或删除等)和跟踪Kubernetes资源。为了方便管理,tiller把release的相关信息保存在kubernetes的ConfigMap中。
tiller对外暴露gRPC API,供helm客户端调用。

安装

我们需要安装 Helm 客户端到本地,同时安装服务端 Tiller 到 Kubernetes 中

具体k8s的安装部署,请参考https://shimo.im/docs/j5HdbtFDeKwvDINC/read

下载相应的版本:https://github.com/kubernetes/helm/releases
这里我下载的是helm-v2.14.0-linux-amd64.tar.gz(我的服务器os为centos7.4 64位)

下载完毕后上传到服务器上,

在该目录下执行命令

tar -xvzf helm-v2.14.0-linux-amd64.tar.gz

把helm执行文件放置在: (mv linux-amd64/helm /usr/local/bin/helm)

2、服务器端安装:

初始化并验证 Helm,这样就会自动安装服务器端Tiller。
注意:由于国内网络的问题,在安装 Tiller 的时候,需要下载镜像 gcr.io/kubernetes-helm/tiller:v2.14.0,很有可能会安装失败。所以我们这里使用阿里镜像来安装Tiller。

# 创建服务端

helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
Kubernetes 1.6开始,API Server启用了RBAC授权。而Tiller部署没有定义授权的ServiceAccount,这会导致访问API Server时被拒绝。我们可以采用如下方法,为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"}}}}'
 

注意,客户端和服务器的版本要保持一致

查看版本helm version

查看tiller服务是否启动:kubectl get pods -n kube-system

若没有找到该pods,则重新执行命令

helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

如果需要删除服务端,可以使用下面的命令

helm reset

helm reset -f

当要移除helm init创建的目录等数据时,执行helm reset --remove-helm-home

 

helm install stable/nginx-ingress --set controller.hostNetwork=true,rbac.create=true

具体helm命令参考官方文档

https://blog.csdn.net/luanpeng825485697/article/details/80873236

参考:https://github.com/helm/helm

Logo

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

更多推荐