navigation

Helm介绍

让我们首先来看看Kubernetes,kubernetes的核心设计理念是: 用户定义应用程序的规格,而kubernetes则负责按照定义的规则部署并运行应用程序,如果应用系统出现问题导致偏离了定义的规格,kubernetes负责对其进行自动修正。例如应用规格要求部署两个实例,其中一个实例异常终止了,kubernetes会检查到并重新启动一个新的实例。

用户通过使用kubernetes API对象来描述应用程序规格,包括Pod,Service,Volume,Namespace,ReplicaSet,Deployment,Job等等。一般这些对象需要写入一系列的yaml文件中,然后通过kubernetes命令行工具kubectl进行部署。

以下面的wordpress应用程序为例,涉及到多个kubernetes API对象,这些kubernetes API对象分散在多个yaml文件中:

image-20211215151427420

可以看到,在进行kubernetes软件部署时,我们面临下述问题:

  • 如何管理,编辑和更新这些这些分散的kubernetes应用配置文件?
  • 如何把一套的相关配置文件作为一个应用进行管理?
  • 如何分发和重用kubernetes的应用配置?
  • 如何自定义一些配置的值,例如pvc storage更改大小、更改应用的端口等?

Helm的引入很好地解决上面这些问题。


Helm是Kubernetes生态系统中的一个软件包管理工具。

对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库

对于使用者而言,使用Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序

image-20211215151849014

image-20211215152638081