Helm应用包管理器

Helm学习文档

Helm官方文档

为什么要使用Helm?

在Kubernetes (K8S) 上部署应用时,应用对象通常由多个资源描述组成,例如deployment、services等。这些资源描述可以保存在各自的文件中,或者集中写在一个配置文件中,然后通过kubectl apply -f命令进行部署。

对于简单应用,这种部署方式是足够的。但是,对于复杂的应用,尤其是微服务架构,可能包含数十个服务,这时候就需要管理大量的资源文件。如果需要更新或回滚应用,就需要修改和维护这些资源文件,这种方式就显得不够高效。

此外,缺少对发布过的应用的版本管理和控制,使得Kubernetes上的应用维护和更新面临挑战,主要问题包括:

  • 如何将这些服务作为一个整体管理
  • 这些资源文件如何高效复用
  • 不支持应用级别的版本管理

Helm介绍

Helm是Kubernetes的包管理工具,类似于Linux下的包管理器(如yum、apt等),它可以方便地将打包好的yaml文件部署到Kubernetes上。

Helm有两个重要概念:

  • Helm:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发布和管理。
  • Chart:应用描述,一系列用于描述K8s资源相关文件的集合。
  • Release:基于Chart的部署实体,一个chart被Helm运行后将会生成一个release,将在K8s中创建出真实运行的资源对象。

Helm v3变化

2019年11月13日,Helm团队发布了Helm v3的第一个稳定版本。这个版本的主要变化包括:

架构变化

  • 删除了Tiller,这是Helm v2中的一个组件,用于管理release。
  • Release名称可以在不同命名空间重用。
  • 支持将Chart推送至Docker镜像仓库中。
  • 使用JSONSchema验证chart values。

部署Helm客户端

Helm客户端下载地址

Helm常用命令

命令 描述
create 创建一个chart并指定名称
dependency 管理chart依赖
get 下载release,可用子命令:all、hooks、manifest、notes、value
history 获取release历史
install 安装一个chart
list 列出release
package 将chart目录打包到chart存档文件中
pull 从远程仓库中下载chart并解压到本地
repo 添加、列出、移除、更新和索引chart仓库
rollback 从之前版本回滚
search 根据关键字搜索Chart
show 查看chart详细信息
template 本地呈现模板
uninstall 卸载一个release
upgrade 更新一个release
version 查看helm客户端版本

配置国内chart仓库

  • 微软仓库
  • 阿里云仓库
  • 官方仓库,官方chart仓库,国内不太好使

添加存储库:

helm repo add stable http://xxxx.xxx 
helm repo add aliyun http://xxx.xxx 
helm repo update

查看配置的存储库:

helm repo list
helm repo repo stable

删除存储库:

helm repo remove aliyun

Helm基本使用

主要介绍三个命令:

  • chart install:安装
  • chart upgrade:升级
  • chart rollback:回滚

使用chart部署一个应用

查找chart:

helm search repo
helm search repo mysql

部署mysql:

helm install my_db stable/mysql

查看pod的详细信息:

kubectl get pods 
kubectl describe pod pod_name

自定义chart配置选项:

所有,我们需要自定义chart配置选项,安装过程中有两种方法可以传递配置数据:

  • --values(或 -f):指定带有覆盖的YAML文件,这里可以多次指定,最右边的文件优先
  • --set:在命令行上指定替代,如果两者都用,--set优先级高

使用--values:

helm show values stable/mysql
cat config.yaml

然后在config.yaml中,写上配置数据,然后执行:

helm install db -f config.yaml stable/mysql;
kubectl get pods;

命令行替换变量:

helm install db --set persistence.storageClass= "managed-ngf-storage" stable/mysql

也可以将chart包下载下来,查看详情:

helm pull stable/mysql --untar

构建一个Helm Chart

可以通过以下命令创建一个Helm目录:

helm create mychart

打 赏