目录
- 1. Helm简介
- 2. Helm Charts文件(.tgz)组成
- 3. Helm核心术语:
- 4. Helm常用命令:
- 5. DIY简单Helm Charts
- 参考链接
1. Helm简介
Helm用于管理Kubernetes应用程序,Helm Charts可以用于定义、安装和升级最复杂的Kubernetes应用程序。
具体来说,Helm是一个命令行工具Tiller的客户端,为应用程序部署时所依赖的所有配置清单文件chart(注意并不包含镜像文件),包含模板templates(一般包含config、deployment、networkpolicy、rbac、service-account、secret和svc等,类似ansible的playbook)和values文件等提供仓库服务,在命令操作方面跟kubectl类似(但Helm需要先经过Tiller之后才是api server),在仓库服务方面跟原Linux系统中的yum类似,在实际使用中,需要现将charts下载到服务器本地,在Kubernetes集群中实例化部署(赋值)之后,就变为Release。
2. Helm Charts文件(.tgz)组成
如WordPress:
wordpress/
Chart.yaml # A YAML file containing information about the chart
LICENSE # OPTIONAL: A plain text file containing the license for the chart
README.md # OPTIONAL: A human-readable README file
values.yaml # The default configuration values for this chart
values.schema.json # OPTIONAL: A JSON Schema for imposing a structure on the values.yaml file
charts/ # A directory containing any charts upon which this chart depends.
crds/ # Custom Resource Definitions
templates/ # A directory of templates that, when combined with values,
# will generate valid Kubernetes manifest files.
templates/NOTES.txt # OPTIONAL: A plain text file containing short usage notes
如Redis:
如Jenkins:
Helm v2由Go语言开发,Helm本地客户端和Tiller服务端(建议部署在Kubernetes集群内)组成,两者通过gRPC协议通信;
- Client——Helm本地客户端,管理本地的chart仓库,并于Tiller服务端交互,主要执行发送chart、实例安装、查询和卸载等操作;
- Server——Tiller服务端,接收Helm发送的charts,与config(value值文件)合并生成Release文件;(此组件需要Kubernetes的管理权限,一般需要Cluster admin和Clusterrolebing的RBAC。)
补充说明:Helm 2 使用 Tiller 作为集群内的服务端组件,用于管理 Helm 发布和发布历史。然而,Tiller的存在引入了一些安全和权限管理方面的挑战,因此 Helm 社区在 Helm 3 中放弃了对 Tiller 的依赖。Helm 3 的客户端可以直接与 Kubernetes API 通信,而不再需要通过 Tiller 中转,进而简化了 Helm 的架构并提高了安全性和可靠性。
3. Helm核心术语:
- Chart,一个Helm程序包,包含了在Kubernetes中运行应用创新所需的部署清单,包含依赖关系、资源、定义等,但是不包含镜像;
- Repository,charts仓库,其实就是一个HTTP/Https服务器;
- Release,在属性赋值后,某特定chart部署在目标集群上的实例;
4. Helm常用命令:
- Release相关:install、uninstall、upgrade/rollback、list、status等;
- Charts相关:create、fetch/get、inspect、package等;
如安装Redis:helm install -f myvalues.yaml myredis ./redis
如查找NGINX:helm search repo nginx
如卸载mysql:helm uninstall my-release-mysql
注意:早期版本是用delete,最新版本是用uninstall。
参考链接:Helm-Commands
5. DIY简单Helm Charts
第一步:使用命令 helm create RELEASE_NAME
,可以创建Charts框架;
如下图所示:
第二步:使用命令vim values.yaml
编辑values中的相关信息,使其满足需求;
第三步:使用命令helm lint PATH [flags]
进行语法检查;
第四步:使用命令helm package [CHART_PATH] [...] [flags]
进行打包;
第五步:使用命令helm serve
打开127.0.0.1:8879端口,用于提供本地仓库服务;
第六步:使用命令helm install --name=RELEASE_NAME ./[CHART_PATH]
按照部署制作的服务;
第七步:使用命令helm uninstall RELEASE_NAME [...] [flags]
删除之前部署的服务;
参考链接
(1)Helm官网
(2)Helm-Github
(3)Helm-Package-ArtifactHub