
Helm简介
在Kubernetes(K8s)环境中,部署多个应用特别是微服务时,如果每次都需要使用kubectl逐一执行命令,将会非常繁琐。使用Helm(helm.sh)能够极大地简化部署过程。Helm具备以下核心能力:
简化部署:Helm允许使用单个命令轻松部署和管理应用程序,从而极大地简化了整个部署流程。
版本控制:Helm支持管理应用程序的多个版本,便于实现版本控制和回滚。
模板化:Helm Charts使用YAML模板定义Kubernetes对象的配置,简化了配置过程,提高了可重复性和可扩展性。
应用程序库:Helm具有应用程序库的概念,可以轻松地共享和重用Helm Charts,简化了多个应用程序的部署和管理。
插件系统:Helm拥有强大的插件系统,允许用户扩展和定制Helm的功能,以满足特定需求。
从本质上来说,Helm就是一个K8s的包管理器。
Helm工作流程
Helm的工作流程相对简单(这里以Helm的v3版本为例,该版本没有了tiller,架构更加简单灵活):
1. 打包并发布至Helm仓库(Repository)。
2. 管理员使用helm命令安装时,相关的依赖会从仓库下载。
3. Helm根据下载的配置部署资源至K8s。
Helm相关概念
概念 描述
Chart 一个Helm包,包含运行一个应用所需的镜像、依赖和资源定义等,还可能包含Kubernetes集群中的服务定义,类似于Homebrew中的formula、APT的dpkg或者Yum的rpm文件。
Repository Helm Charts的存储地方。
Release Chart在K8s上运行的实例,例如,如果一个MySQL Chart想在服务器上运行两个数据库,可以将这个Chart安装两次,每次生成自己的Release及Release名称。
Value Helm Chart的参数,用于配置Kubernetes对象。
Template 使用Go模板语言生成Kubernetes对象的定义文件。
Namespace Kubernetes中用于隔离资源的逻辑分区。
如何安装Helm
Helm项目提供了多种获取和安装Helm的方式。这是官方提供的获取Helm发布版本的方法。Helm社区也提供了通过不同包管理器安装Helm的方法。
对于二进制版本安装:
1. 获取安装包。
2. 解压安装包。
3. 设置程序。
4. 设置稳定源。例如:helm repo add bitnami charts./bitnami。
常用Helm命令
命令 描述
create 创建一个chart并指定名字。
dependency 管理chart依赖。
get 下载一个release。可用子命令:all、hooks、manifest、notes、values。
history 获取release历史。
install 安装一个chart。
list 列出release。
package 将chart目录打包到chart存档文件中。
pull 从远程仓库中下载chart并解压到本地。例如:helm pull stable/mysql –untar。
repo 添加、列出、移除、更新和索引chart仓库。可用子命令:add、index、list、remove、update。
rollback 从之前版本回滚。
search 根据关键字搜索chart。可用子命令:hub、repo。
show 查看chart详细信息。可用子命令:all、chart、readme、values。
status 显示已命名版本的状态。
template 本地呈现模板。
uninstall 卸载一个release。
upgrade 更新一个release。
version 查看helm客户端版本。
