helm安装和使用-通过helm部署k8s应用

helm安装

Helm相当于linux环境下的yum包管理工具。helm是k8s中的一个命令行客户端工具,helm是tiller的客户端,tiller是一个守护进程,接收helm的请求,helm把请求交给tiller,tiler和apiserver交互,由apiserver负责完成创建,我们用哪个chart需要下载到本地,基于本地这个chart部署实例,这个部署的实例叫做release。

1.chart是什么?

一个helm程序包,比方说我们部署nginx,需要deployment的yaml,需要service的yaml,这两个清单文件就是一个helm程序包,在k8s中把这些yaml清单文件叫做chart图表

2.values.yaml文件

values.yaml文件为模板中的文件赋值,可以实现我们自定义安装,如果是chart开发者需要自定义模板,如果是chart使用者只需要修改values.yaml即可。

3.helm可理解如下

helm把kubernetes资源打包到一个chart中,制作并完成各个chart和chart本身依赖关系并利用chart仓库实现对外分发,而helm还可实现可配置的对外发布,通过values.yaml文件完成可配置的发布,如果chart版本更新了,helm自动支持滚更更新机制,还可以一键回滚,但是不是适合在生产环境使用,除非具有定义自制chart的能力,helm属于kubernetes一个项目,下载地址:

https://github.com/helm/helm/releases

找这个checksum的,解压之后按下面解压即可

helm官方网站:

https://helm.sh/

helm 官方的chart站点:

https://hub.kubeapps.com/

4.repository、release、chart关系

repository:存放chart图表的仓库,提供部署k8s应用程序需要的那些yaml清单文件

release:特定的chart部署于目标集群上的一个实例

chart--->通过values.yaml这个文件赋值-->生成release实例

helm也是go语言开发的

5.安装helm客户端,在k8s的master节点操作

下载软件包,软件包所在百度网盘地址如下:

链接:https://pan.baidu.com/s/15Qlcng6--QwCxoZjt1TGeA 提取码:c70b

tar -xzvf  helm-v2.13.1-linux-amd64.tar.gz 

cd linux-amd64

cp helm /usr/local/bin 

helm version

报错,显示没有tiller server端

安装helm的服务端tiller

安装helm服务端tiller

rbac.yaml参考链接如下:

https://github.com/helm/helm/blob/master/docs/rbac.md

cat rbac.yaml

apiVersion: v1kind: ServiceAccountmetadata:  name: tiller  namespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata:  name: tillerroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: cluster-adminsubjects:  - kind: ServiceAccount    name: tiller    namespace: kube-system


更新yaml文件

kubectl apply -f rbac.yaml


把tiller的镜像压缩包传到k8s的各个node节点,然后手动docker load  -i 把镜像解压到本地,镜像所在百度网盘地址如下:

链接:https://pan.baidu.com/s/1Z_yuava-8W65mn5tla7cFw 提取码:bd2n

在k8s的node节点解压镜像

docker load -i tiler_2_13_1.tar.gz


cat tiller.yaml

---apiVersion: apps/v1kind: Deploymentmetadata:  creationTimestamp: null  labels:    app: helm    name: tiller  name: tiller-deploy  namespace: kube-systemspec:  selector:    matchLabels:     app: helm     name: tiller  replicas: 1  strategy: {}  template:    metadata:      creationTimestamp: null      labels:        app: helm        name: tiller    spec:      automountServiceAccountToken: true      serviceAccount:  tiller      containers:      - env:        - name: TILLER_NAMESPACE          value: kube-system        - name: TILLER_HISTORY_MAX          value: "0"        image: gcr.io/kubernetes-helm/tiller:v2.13.1        imagePullPolicy: IfNotPresent        livenessProbe:          httpGet:            path: /liveness            port: 44135          initialDelaySeconds: 1          timeoutSeconds: 1        name: tiller        ports:        - containerPort: 44134          name: tiller        - containerPort: 44135          name: http        readinessProbe:          httpGet:            path: /readiness            port: 44135          initialDelaySeconds: 1          timeoutSeconds: 1        resources: {}status: {}
---apiVersion: v1kind: Servicemetadata:  creationTimestamp: null  labels:    app: helm    name: tiller  name: tiller-deploy  namespace: kube-systemspec:  ports:  - name: tiller    port: 44134    targetPort: tiller  selector:    app: helm    name: tiller  type: ClusterIPstatus:  loadBalancer: {}
...

更新yaml文件

kubectl apply -f tiller.yaml


验证tiller是否部署成功:

kubectl get pods -n kube-system
显示如下,说明部署成功

tiller-deploy-7bd89687c8-tv7cn    1/1     Running   0          2d8h


验证helm版本

helm version

可看到如下:

Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}

上面结果可看到helm客户端和服务端版本一致,都安装好了

helm常用命令如下

(1)和release相关的

升级一个版本

helm upgrade

helm upgrade [RELEASE] [CHART] [flags]

回滚一个版本

helm rollback

helm rollback [flags] [RELEASE] [REVISION]

创建一个release实例

helm install

删除一个release

helm delete

查看历史

helm  history

(2)和chart相关的

查看chart的详细信息

helm inspect

把chart下载下来

helm  fetch

把chart打包

helm  package


上一篇:K8S进阶实践 之 Helm管理业务应用


下一篇:【STM32H7】第26章 ThreadX GUIX波形控件Line Chart