声明:这是我在大学毕业后进入第一家互联网工作学习的内容
背景
最近新项目要通过Helm部署,然后我发现生产环境使用的是阿里云托管型kubernetes(全部都是node节点,无Mater)没有安装Helm,貌似还要用阿里云企业镜像服务,但是我感觉应该没有这么坑,因为线下用的是自己搭建的集群,直接安装Helm搭建私人仓库即可用。
周末加个班学习下Helm到底是咋回事,虽然一直在使用命令部署,不过还没深入研究下。
Helm简介
Helm官网解释
- Helm是查找,共享和使用为 Kubernetes而构建的软件的最佳方法。
- Helm帮助您管理Kubernetes应用程序-Helm Charts帮助您定义,安装和升级最复杂的Kubernetes应用程序。
- Helm是CNCF的一个毕业项目,由Helm社区维护。
翻译还挺有意思的
- Helm→头盔/舵
- Chart→图表
- Release→版本
看了官方定义后,我大概了解了下几个重要定义(有不对的地方请指教)
Helm是用于管理Chart的工具
Helm是可简化Kubernetes应用程序安装和管理的工具。可以将其视为Kubernetes的apt / yum / homebrew。
功能有如下几点:
- 查找并使用打包为Helm Charts的流行软件在Kubernetes中运行
- 将您自己的应用程序共享为Helm Charts
- 创建Kubernetes应用程序的可复制构建
- 智能管理您的Kubernetes清单文件
- 管理Helm软件包的发布
其中最为重要的一点:查找并使用打包为Helm Charts的流行软件在Kubernetes中运行
实际运作就是Helm渲染Chart包并与Kubernetes API通信,也可以变相理解为代替了kubectl的功能去与Kubernetes API通信(对于运维来说)
Chart是预先配置的Kubernetes资源包。
Chart是包含至少两项内容的Helm软件包:
- 软件包说明(Chart.yaml)
- 一个或多个模板,其中包含Kubernetes清单文件
Chart包可以存储在磁盘上,也可以从远程Chart仓库中获取(例如Debian或RedHat软件包)
其中的重点就是Chart的模板文件的编写,有以下几个概念:
- 模板生成清单文件,这些文件是Kubernetes可以理解的YAML格式的资源描述
- Helm模板语言
- 使用值
- 使用模板的技巧
Release 是一个的运行实例的 chart,具有特定的组合配置。
安装Chart后,Helm库将创建一个发行版来跟踪该安装。
单个Chart可以多次安装到同一群集中,并创建许多不同的发行版。例如,通过helm install使用不同的发行版名称运行3次,可以安装三个PostgreSQL数据库。