01 简介
Helm
1 简介
概念
Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来管理 Charts。
类似于:Ubuntu 中的 APT、CentOS 中的 YUM。主要功能:
- 创建:创建新的charts
- 打包:将charts打包成tgz文件
- 交互:与chart仓库交互
- 安装:安装和卸载K8s的应用
- 管理:管理使用Helm安装的charts的生命周期
2 安装与仓库
前置条件
- kubernets集群
- 安装配置helm
安装
1 | curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash |
自动补全
1 | #设置命令自动补全 |
配置helm仓库
1 |
|
更新仓库/查看版本信息
1 | helm repo update |
测试远程仓库
1 | helm search mysql #搜索MySQL |
3 Chart
基本概念
Chart 是 Helm 的应用打包格式。是创建Kubernetes应用实例的信息集合.Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。由一系列文件组成,这些文件描述了 Kubernetes 部署应用时所需要的资源
比如:
1 | Service |
- 我们可以在部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。
- Chart可以很简单:例如,只用于部署一个服务,比如 Memcached。Chart 也可以很复杂:例如,部署整个应用,比如包含 HTTP Servers、 Database、消息中间件、cache 等。
- Chart 将这些文件放置在预定义的目录结构中,通常整个 chart 被打成 tar 包,而且标注上版本信息,便于 Helm 部署。
目录结构
- Chart.yaml : chart 的描述文件, 包含版本信息, 名称 等.
- Chart.lock : chart 依赖的版本信息. ( apiVersion: v2 )
- values.yaml : 存储 chart 所需要的默认配置,用于配置 templates/ 目录下的模板文件使用的变量.
- values.schema.json : 一个使用JSON结构的 values.yaml 文件,用于校检 values.yaml 的完整性.
- charts : chart 所依赖的其他 chart,依赖包的存储目录.
- README : 说明文件.
- LICENSE : 版权信息文件.
- crd/ : 自定义资源的定义,存放 CRD 资源的文件的目录.
- templates/ : 模板文件存放目录,chart 模板文件,引入变量值后可以生成用于 Kubernetes 的 manifest 文件
- NOTES.txt : 模板须知/说明文件. helm install 成功后会显示此文件内容到屏幕.
- deployment.yaml : kubernetes 资源文件. ( 所有类型的 kubernetes 资源文件都存放于 templates 目录下 )
- _helpers.tpl : 以 _ 开头的文件, 可以被其他模板引用.
Chart.yaml
在同一个集群中,一个Charts可以使用不同的config重复安装多次,每次安装都会创建一个新的Release。
1 | apiVersion: # chart API 版本信息, 通常是 "v1" (必须) |
部署有顺序
chart中所有的Kubernetes对象以及依赖会
- 聚合成一个单一的集合;然后
- 按照类型和名称排序;然后
- 按这个顺序创建/升级。
4 Repository
chart Repoistory是一个可用来存储index.yaml与打包的chart文件的HTTP server。
可以理解为是存放chart的仓库,类似于docker的镜像仓库、GitHub代码仓库等。
仓库使用 helm repo命令管理。
5 Config
应用程序实例化安装时运行使用的配置信息;
6 Release
chart的实例化,将chart安装到k8s上,就叫做生成一个release。如果把 chart 比作程序源码的话,那么 release 则可以看做是程序运行时的进程。
chart 是用户可直接感知的对象(其表现形式就是 .tgz 格式的压缩包)
release 比较抽象,它是专属于 helm 的一个逻辑概念,用来标识在 k8s 中运行的一组资源。有了 release,helm 在操作 k8s 时,就再也不用逐个管理资源,而可以将一组相关的资源当做一个整体来操作,比如删除或升级。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Estom的博客!










