相关组件
helm 是一个命令行工具,用于本地开发及管理chart,chart仓库管理等。
helm 本质就是一个K8s包管理器。
优点
- 简化部署 :Helm允许使用单个命令轻松部署和管理应用程序,从而简化了整个部署过程;
- 高度可配置:Helm Charts提供了高度可配置的选项,可以轻松自定义和修改应用程序的部署配置;
- 版本控制 :Helm允许管理应用程序的多个版本,从而轻松实现版本控制和回滚;
- 模板化:Helm Charts使用YAML模板来定义Kubernetes对象的配置,从而简化了配置过程,并提高了可重复性和可扩展性;
- 应用程序库:Helm具有应用程序库的概念,可以轻松地共享和重用Helm Charts,从而简化了多个应用程序的部署和管理;
- 插件系统:Helm拥有一个强大的插件系统,允许您扩展和定制Helm的功能,以满足特定的需求和要求。
工作流程(v3)
图片
开发者首先创建并编辑chart的配置;接着打包并发布至Helm的仓库(Repository);当管理员使用helm命令安装时,相关的依赖会从仓库下载;接着helm会根据下载的配置部署资源至k8s;
Tiller (helm3 已经移除 helm直接和k8s交互)
Helm 的服务端。Tiller 负责接收 Helm 的请求,与 k8s 的 apiserver 交互,根据chart 来生成一个 release 并管理 release 部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的请求,并根据 Chart 生成 Kubernetes 的部署文件( Helm 称为 Release ),然后提交给 Kubernetes 创建应用。Tiller 还提供了 Release 的升级、删除、回滚等一系列功能。
chart
Helm 的软件包,采用 TAR 格式。类似于 APT 的 DEB 包或者 YUM 的 RPM 包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件。
release
使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。
Repoistory
Helm chart 的仓库,Helm 客户端通过 HTTP 协议来访问存储库中 chart 的索引文件和压缩包 Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository。
流程相关
Chart Install 过程:
1:Helm从指定的目录或者tgz文件中解析出Chart结构信息
2:Helm将指定的Chart结构和Values信息通过gRPC传递给Tiller
3:Tiller根据Chart和Values生成一个Release
4:Tiller将Release发送给Kubernetes用于生成Release
Chart Update过程:
1:Helm从指定的目录或者tgz文件中解析出Chart结构信息
2:Helm将要更新的Release的名称和Chart结构,Values信息传递给Tiller
3:Tiller生成Release并更新指定名称的Release的History
4:Tiller将Release发送给Kubernetes用于更新Release
Chart Rollback过程:
1:Helm将要回滚的Release的名称传递给Tiller
2:Tiller根据Release的名称查找History
3:Tiller从History中获取上一个Release
4:Tiller将上一个Release发送给Kubernetes用于替换当前Release
安装
github 地址:
https://github.com/helm/helm/releases
Helm 客户端
k8s所有节点
yum install -y socat
主节点
wget https://get.helm.sh/helm-v3.4.0-linux-amd64.tar.gz
tar xf helm-v3.4.1-linux-amd64
ln -s /usr/local/linux-amd64/helm /usr/local/bin/helm
仓库配置
# 添加公用的仓库
[bigdata@k8s-master module]$ helm repo add bitnami https://charts.bitnami.com/bitnami
# 配置helm阿里源地址
[bigdata@k8s-master module]$ helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo update helm repo llist
使用
安装一个nginx:
helm create nginx
tree nginx
图片
nginx/
├── charts #依赖其他包的charts文件
├── Chart.yaml # 该chart的描述文件,包括ico地址,版本信息等
├── templates #存放k8s模板文件目录
│ ├── deployment.yaml #创建k8s资源的yaml 模板
│ ├── _helpers.tpl #下划线开头的文件,可以被其他模板引用.
│ ├── hpa.yaml # 配置服务资源CPU 内存
│ ├── ingress.yaml # ingress 配合service域名访问的配置
│ ├── NOTES.txt #说明文件,helm install之后展示给用户看的内容
│ ├── service.yaml #kubernetes Serivce yaml 模板
└── values.yaml #给模板文件使用的变量
values.yaml #给模板文件使用的变量。
修改values.yam 里的service的type为 NodePort。
安装chart任务 (注意后面有个点)
helm install -f values.yaml nginx1 .
查询release
helm ls helm list
删除release
helm delete nginx1