Helm 是 Kubernetes(k8s)服务编排实施的标准,它提供了多种功能来支持 Kubernetes 的服务编排。以下是对 Helm 的详细介绍:
一、定义与功能
- Helm 是 Kubernetes 的包管理器,主要用于管理 Chart 包。 Chart 包中包含一系列 yaml 格式的
- Kubernetes 资源定义文件以及资源的配置。
- Helm 通过命令行工具,支持 Kubernetes 应用 Chart 的创建、打包、发布和管理。
二、关键组件
- Chart:代表一个 Helm 包,包含了在 Kubernetes 集群中运行应用程序、工具或服务所需的所有 yaml 格式的资源定义文件。
- Repository(仓库):存放和共享 Helm Chart 的地方。
- Release(版本):基于Chart的部署实体。一个 Chart 被 Helm 运行后将会生成一个对应的新的 Release,然后将在 Kubernetes 中创建出真正运行的资源对象,它是一个应用级别的版本管理。
三、文件结构
Helm 中主要包含两类文件:模板文件和配置文件。
- 模板文件:通常有多个,基于 text/template 模板文件,可将配置文件中的值渲染进模板文件中,最终生成一个可部署的 Kubernetes 的 yaml 格式的资源定义文件。
- 配置文件:通常有一个(对应使用同一套模板,启动不同配置的资源对象的场景使用)。
四、应用场景及作用
Helm主要应用于微服务、实际项目中多服务多对象资源组合创建部署的场景。它的主要作用包括:
- 高效复用:通过将创建服务或资源对象的yaml文件分离为模板和配置,其中模板为 yaml 中静态的不怎么修改变动的部分,配置为yaml中创建不同配置服务或对象时,需要修改变动的部分。使用时可以对模板进行复用,只需要对配置进行修改即可。
- 简化管理:Helm 提供了一种方便的方式来安装、更新和管理 Kubernetes 应用,以及处理应用依赖和配置。
五、 Helm 基础命令
# helm 查看命令
$ helm --help
# helm 查看版本
$ helm version
Helm 操作 Chart 包
# helm 创建一个 chart 包
# 语法: helm create <chart_name>
$ heim create myChart
# helm 增加 chart 仓库:类似 yum 仓库与 docker 仓库: 默认 stable 仓库的名称会被优先使用
# 语法: helm repo add <store_name> <store_path>
$ helm repo add <store_name> <store_path>
# helm 查询是否有连接仓库
$ helm repo list
# helm 更新远程仓库
$ helm repo update
# helm 移除仓库
# 语法: helm remove <store_name>
$ helm remove stable
# 搜索远程仓库的 chart 包 (类似docker中搜索镜像)
#语法: helm search repo <chart_name>
$ helm search repo tomcat
# helm 查看 chart 包的格式以及基础信息
# 语法: helm show chart <chart_name>
$ helm show chart stable/tomcat
# helm 查看 chart 包的详细信息
# 语法: helm show values <chart_name>
$ helm show values stable/tomcat
# helm 在远程的 chart 仓库中拉取 chart 包
# 拉取 chart 包并解压, --untar 是解压, 不加就是压缩包 (默认拉取最新版本)
$ helm pull <chart_name> --untar
# 从远程仓库拉取指定版本的 chart 包到本地并解压
$ helm pull <chart_name> --version <version_number> --untar
Helm 操作 Release 实例
# **** 安装 **** #
# helm 安装一个 release 的实例! (指定 release 实例名: myconfigmap、指定 chart 目录: /mychart。)
# 语法: helm install <release_name> <chart_path>
$ helm install myconfigmap ./mychart/
# helm 测试渲染命令(不是真的执行, 只是试运行看能否运行)
# 语法: helm install <release_name> <chart_path> --debug --dry-run
# **** 查找 **** #
# helm 查找 release 实例列表
$ helm list
# helm 查看创建 release 实例的详细信息
# 语法: helm get manifest <release_name>
$ helm get manifest cubeml-frontend
# **** 升级 **** #
# 升级 release 实例
# 语法: helm upgrade <release_name> .
$ helm upgrade cubeml-frontend .
# **** 回滚 **** #
# 回滚 release 实例 (默认回滚到上一个版本)
# 语法: helm rollback <release_name>
$ helm rollback cubeml-frontend
# 回滚 指定到某个 release 版本
# 语法: helm rollback <release_name> <release_version_number>
$ helm rollback cubeml-frontend 1.1.0
# **** 卸载 **** #
# 卸载 release 的实例
# 语法: helm uninstall <release_name>
$ helm uninstall cubeml-frontend
# **** 历史版本 **** #
$ helm history cubeml-frontend