利用Helm简化Kubernetes应用部署 html
Helm基础 linux
安装Helm git
使用Visual Studio 2019为Helm编写一个简单的应用 github
Helm是Kubernetes生态系统中的一个软件包管理工具,有点相似于Linux操做系统里面的“apt-get”和“yum”。结合上一节内容,对Kubernetes集群进行部署应用时,咱们面临了如下问题:docker
如何管理、编辑和更新这些这些分散的 Kubernetes 应用配置文件。服务器
如何把一套相关的配置文件做为一个应用进行管理。架构
如何分发和重用 Kubernetes 的应用配置。并发
Helm 的出现就是为了很好地解决上面这些问题。Helm Chart是用来封装Kubernetes原生应用程序的一系列YAML文件。咱们能够在部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。对于应用发布者而言,能够经过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。对于使用者而言,使用 Helm 后不用须要编写复杂的应用部署文件,能够以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。总之,Helm大大简化了应用管理的难度,其主要有如下优点:app
管理复杂应用。Charts能定义哪怕是再复杂的应用,而且提供了可重复使用应用程序部署定义。curl
易于更新升级。
易于共享。Charts不管是在私有服务器仍是公共服务器上,都很是易于升级、共享和托管。
轻松回滚。
Helm
Helm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的建立、打包、发布以及建立和管理本地和远程的 Chart 仓库。
Tiller
Tiller 是 Helm 的服务端,部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的请求,并根据 Chart 生成 Kubernetes 的部署文件( Helm 称为 Release ),而后提交给 Kubernetes 建立应用。Tiller 还提供了Release 的升级、删除、回滚等一系列功能。
Chart
Helm 的软件包,采用 TAR 格式。相似于APT的DEB包或者YUM的RPM包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件。
Repoistory
Helm 的软件仓库,其保存了一系列的 Chart 软件包以供用户下载,而且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 能够同时管理多个不一样的 Repository。
Config
应用程序实例化部署运行时的配置信息。
Release
使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。Helm 中提到的 Release和咱们一般概念中的版本有所不一样,这里的 Release 能够理解为 Helm 使用 Chart包部署的一个应用实例。在同一个集群中,一个Chart可使用不一样的配置(Config)安装屡次,每次安装都会建立一个Release。
1.安装Helm客户端
推荐使用官方脚本一键安装:
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh chmod 700 get_helm.sh ./get_helm.sh
若是安装包没法下载,能够复制脚本输出的下载连接手动下载而后再解压复制到bin目录,以下所示:
tar -zxvf helm-v2.14.2-linux-amd64.tar.gz cp linux-amd64/helm /usr/local/bin/
2.安装服务端——Tiller
安装脚本以下所示:
Kubernetes 的服务账号和绑定角色 kubectl create serviceaccount --namespace kube-system tiller kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller #初始化安装tiller,并制定服务帐户和镜像 helm init --service-account tiller --tiller-image gcr.azk8s.cn/kubernetes-helm/tiller:v2.14.2 --skip-refresh
其中,Helm初始化指定了第三方镜像。安装过程以下所示:
安装完成后,咱们能够执行如下命令来查看安装的版本以及帐户受权:
helm version kubectl get deploy --namespace kube-system tiller-deploy --output yaml|grep serviceAccount
值得注意的是,tiller安装完成后,会运行在Pod之中,咱们能够经过标签“app=helm”来查看tiller是否安装成功:
kubectl get pods -o wide -n kube-system -lapp=helm
若是安装过程当中出现问题须要从新安装,能够执行如下命令再重装:
kubectl delete deployment tiller-deploy --namespace=kube-system kubectl delete service tiller-deploy --namespace=kube-system rm -rf ~/.helm/
安装完成以后,咱们编写一个简单的应用而后来使用Helm进行部署。
Visual Studio 2019提供了一个犀利的扩展工具——Visual Studio Kubernetes Tool来辅助咱们编写Helm应用,若是尚未安装的小伙伴能够在扩展中查找并安装此扩展。
VS除了能够自动编写dockerfile,构建并推送docker镜像以外,还能自动添加Helm的配置模板,接下来咱们按照如下步骤来建立咱们第一个Helm应用工程。
1.建立项目,选择Kubernetes项目模板。以下图所示:
2.填写项目名称等信息。
3.选择项目模板类型。
4.添加【容器业务流程协调程序支持】。
5.选择【Kubernetes/Helm】。
6.查看解决方案目录,确认Chart。
如上图所示,VS自动为咱们建立了charts目录,相关目录和文件说明以下所示:
Chart.yaml 用于描述这个Char的相关信息,包括应用名称、描述以及版本等。
values.yaml 用于存储templates目录中模板文件中用到变量的值。
NOTES.txt 用于介绍 Chart 部署后的一些信息,例如:如何使用这个 Chart、列出缺省的设置等。
Templates 目录下是YAML文件的模板,好比deployment、service、secrets等模板,该模板文件遵循 Go template 语法。
注意:如上图所示的charts目录,咱们也能够经过命令“helm create mychart”来建立。
至此,一个简单的Helm应用模板建立完成,接下来咱们来将此应用经过Helm快速部署,下一篇咱们再来详细说明!