Helm
在2016年,随着K8s成为编排领域事实上的标准,很多公司的PaaS平台都转向以K8s为基础容器化平台,但是Deis(helm公司)是一个地地道道的PaaS服务商,在这片云原生的红海中步履维艰,幸运的是,凭借敏锐的技术嗅觉最终还是拯救了这个的团队。2016年底,Deis开始全面转向K8s体系,它不像其它公司一样把K8s作为PaaS基础设施工具,而是围绕K8s产生的编排文件做了应用包管理器helm。
Helm是K8s的包管理器,Helm chart用于帮助你定义、安装、更新K8s应用,可以处理那些最复杂那种部署情况。在K8s中,容器即进程,它解决了如何部署和运行应用的问题。对于任何一个部署在K8s的应用而言,通常都可以由几个固定的部分组成:Ingress、Service、Deployment等。直接使用K8s原生的YAML定义服务,虽然能一定程度上简化应用的部署,但是对于大部分研发人员来说编写和使用YAML依然是一件相对痛苦的事情。Helm应运而生,Helm作为K8s下的包管理工具,对原生服务定义过程进行了增强,通过模板化,参数化的形式大大简化用户部署K8s应用的复杂度。
概念
可以将Helm理解为K8s的包管理工具,可以方便地发现、共享和使用为K8s构建的应用,有点类似于Ubuntu的APT和CentOS中的yum。Helm chart是用来封装K8s原生应用程序的yaml文件,可以在你部署应用的时候自定义应用程序的一些metadata,便与应用程序的分发。它包含几个基本概念:
-
Chart:一个Helm包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含K8s集群中的服务定义,类似Homebrew中的formula,APT的dpkg或者Yum的rpm文件,
-
Release:在K8s集群上运行的Chart的一个实例。在同一个集群上,一个Chart可以安装很多次。每次安装都会创建一个新的release。例如一个MySQL Chart,如果想在服务器上运行两个数据库,就可以把这个Chart安装两次。每次安装都会生成自己的Release,会有自己的Release名称。
-
Repository:用于发布和存储Chart的仓库。