1、Helm概述
1.1、Helm介绍
- 随着容器技术逐渐被企业接受,在Kubernetes上已经能便捷地部署简单的应用了。但对于复杂的应用中间件,在Kubernetes上进行容器化部署并非易事,通常需要先研究Docker镜像的运行需求、环境变量等内容,并能为这些容器定制存储、网络等设置,最后设计和编写Deployment、ConfigMap、Service及Ingress等相关YAML配置文件,再提交给Kubernetes部署。这些复杂的过程将逐步被Helm应用包管理工具实现。
- Helm是一个由CNCF孵化和管理的项目,用于对需要在Kubernetes上部署的复杂应用进行定义、安装和更新。Helm以Chart的方式对应用软件进行描述,可以方便地创建、版本化、共享和发布复杂的应用软件。
- Helm是Kubernetes的软件包管理工具。包管理器类似Centos中使用的yum或者Python中的pip一样,能快速查找、下载和安装软件包。
1.2、Helm相关组件及概念
- Chart:一个Helm包,其中包含运行一个应用所需要的工具和资源定义,还可能包含Kubernetes集群中的服务定义。可以理解为包含了一组定义 Kubernetes 资源相关的YAML文件。
- Release:在Kubernetes集群上运行的一个Chart实例。在同一个集群上,一个Chart可以被安装多次。例如有一个MySQL Chart,如果想在服务器上运行两个MySQL数据库,就可以基于这个Chart安装两次。每次安装都会生成新的Release,会有独立的Release名称。
- Repository:Helm chart的仓库,Repository本质上是一个Web服务器,该服务器保存了一系列的Chart软件包以供用户下载,并且提供了一个该Repository的Chart包的清单文件以供查询。Helm可以同时管理多个不同的Repository。
- 简单来说,Helm整个系统的主要任务就是,在仓库中查找需要的Chart,然后将Chart以Release的形式安装到Kubernetes集群中。
1.3、Helm原理
- helm架构图
1、Helm主要过程
- 创建release过程:
- helm客户端从指定的目录或本地tar文件或远程repo仓库解析出chart的结构信息;
- helm客户端指定的chart结构和values信息通过gRPC传递给Tiller;
- Tiller服务端根据chart和values生成一个release;
- Tiller将installrelease请求直接传递给kube-apiserver。
- 删除release:
- helm客户端从指定的目录或本地tar文件或远程repo仓库解析出chart的结构信息;
- helm客户端指定的chart结构和values信息通过gRPC传递给Tiller;
- Tiller服务端根据chart和values生成一个release;
- Tiller将deleterelease请求直接传递给kube-apiserver。
- 更新release:
- helm客户端将需要更新的chart的release名称、chart结构和value信息传给Tiller;
- Tiller将收到的信息生成新的release,并同时更新这个release的history;
- Tiller将新的release传递给kube-apiserver进行更新。
2、安装Helm
- Helm由HelmClient和TillerServer两个组件组成。
2.1、HelmClient
- HelmClient是一个客户端,拥有对Repository、Chart、Release等对象的管理能力。
- 使用二进制包安装helm
- 下载HelmClient:https://get.helm.sh/helm-v3.8.2-linux-amd64.tar.gz
]# tar zvfx helm-v3.8.2-linux-amd64.tar.gz //helm是一个命令行工具 ]# ls -l ./linux-amd64/ -rwxr-xr-x 1 3434 3434 44630016 4月 14 01:47 helm -rw-r--r-- 1 3434 3434 11373 4月 14 01:56 LICENSE -rw-r--r-- 1 3434 3434 3367 4月 14 01:56 README.md //将helm放到bin目录下 ]# cp linux-amd64/helm /usr/local/bin/
- 查看安装版本
]# helm version version.BuildInfo{Version:"v3.8.2", GitCommit:"6e3701edea09e5d55a8ca2aae03a68917630e91b", GitTreeState:"clean", GoVersion:"go1.17.5"}
2.2、
1
# #标签:Kubernetes,Kubernetes14,Chart,helm,Helm,release,Tiller From: https://www.cnblogs.com/maiblogs/p/16771609.html