容器 & 服务:Helm Charts(一)
系列文章:
一 前言
由于工作原因,已经断更了很长时间,进来有几篇也都是零零散散不成体系。趁着节前的这点时间,有了一点空隙,捡起来这个停更几个月的系列。
在近来的工作中,docker镜像更多是在测试环境使用,涉及到交付等落地环节时,更多还是要产出Helm Charts,也存在着把docker镜像包装成charts的场景,这就需要对helm charts有个基础的了解,本篇先做概念性的介绍,了解Helm Charts到底是什么。
二 Helm简介
Helm官网:https://helm.sh/ 首页就对Helm做了简要描述:
简单来说,Helm是Kubernetes的管理器;是查找、分享 和 使用由K8s构建的软件的最佳方式。
详细一点:
很老但经典的套路,分三点:
Helm帮助管理Kubernetes应用——Helm Charts帮助我们定义,安装 和 升级K8s应用,包括最复杂的那种
Charts易于创建、版本维护、分享和发布 —— 所以开始使用Helm并停止复制粘贴吧!
Helm是CNCF的一个毕业项目,并由Helm社区维护
三 Helm架构
3.1 Helm组件
Helm是一个可执行文件,它被实现为两个不同的部分: Helm Client和Helm Library。
3.1.1 Helm Client
Helm客户端是供终端用户使用的命令行客户端,这个客户端的职责包括:
本地chart开发
管理仓库
管理发布
与Helm library进行接口交互,包括:
(1)发送即将被安装的charts
(2)请求升级或卸载现有版本
3.1.2 Helm Library
Helm库提供用于执行所有Helm操作的逻辑。它与Kubernetes API server进行接口交互,并提供下列能力:
结合chart和配置来构建一个发布
安装charts到Kubernetes中,并提供后续的发布对象
通过与Kubernete的接口交互来升级和卸载charts
单独的Helm Library封装了Helm逻辑使得它可以被不同的客户端使用。
3.1.3 实现方式
Helm客户端和library都是通过go语言来编写的。Helm library使用Kubernete客户端的库来与Kubernetes交互。目前这个library是使用REST+JSON,它存储信息在Kubernetes内的密钥中,不需要自己的数据库。
如果可以,配置文件最好用YAML编写。