Helm

Helm

2016年,随着K8s成为编排领域事实上的标准,很多公司的PaaS平台都转向以K8s为基础容器化平台,但是Deishelm公司)是一个地地道道的PaaS服务商,在这片云原生的红海中步履维艰,幸运的是,凭借敏锐的技术嗅觉最终还是拯救了这个的团队。2016年底,Deis开始全面转向K8s体系,它不像其它公司一样把K8s作为PaaS基础设施工具,而是围绕K8s产生的编排文件做了应用包管理器helm

HelmK8s的包管理器,Helm chart用于帮助你定义、安装、更新K8s应用,可以处理那些最复杂那种部署情况。在K8s中,容器即进程,它解决了如何部署和运行应用的问题。对于任何一个部署在K8s的应用而言,通常都可以由几个固定的部分组成:Ingress、Service、Deployment等。直接使用K8s原生的YAML定义服务,虽然能一定程度上简化应用的部署,但是对于大部分研发人员来说编写和使用YAML依然是一件相对痛苦的事情。Helm应运而生,Helm作为K8s下的包管理工具,对原生服务定义过程进行了增强,通过模板化,参数化的形式大大简化用户部署K8s应用的复杂度。

概念

可以将Helm理解为K8s的包管理工具,可以方便地发现、共享和使用为K8s构建的应用,有点类似于UbuntuAPTCentOS中的yumHelm chart是用来封装K8s原生应用程序的yaml文件,可以在你部署应用的时候自定义应用程序的一些metadata,便与应用程序的分发。它包含几个基本概念:

  • Chart:一个Helm包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含K8s集群中的服务定义,类似Homebrew中的formulaAPTdpkg或者Yumrpm文件,

  • Release:K8s集群上运行的Chart的一个实例。在同一个集群上,一个Chart可以安装很多次。每次安装都会创建一个新的release。例如一个MySQL Chart,如果想在服务器上运行两个数据库,就可以把这个Chart安装两次。每次安装都会生成自己的Release,会有自己的Release名称。

  • Repository:用于发布和存储Chart的仓库。