• 利用Helm简化Kubernetes应用部署(1)


    目录

    • 利用Helm简化Kubernetes应用部署 

    • Helm基础 

    • 安装Helm 

    • 使用Visual Studio 2019为Helm编写一个简单的应用 

     


     

      利用Helm简化Kubernetes应用部署

     Helm是Kubernetes生态系统中的一个软件包管理工具,有点类似于Linux操作系统里面的“apt-get”和“yum”。结合上一节内容,对Kubernetes集群进行部署应用时,我们面临了以下问题:

    • 如何管理、编辑和更新这些这些分散的 Kubernetes 应用配置文件。

    • 如何把一套相关的配置文件作为一个应用进行管理。

    • 如何分发和重用 Kubernetes 的应用配置。

    Helm 的出现就是为了很好地解决上面这些问题。Helm Chart是用来封装Kubernetes原生应用程序的一系列YAML文件。我们可以在部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。总之,Helm大大简化了应用管理的难度,其主要有以下优势:

    • 管理复杂应用。Charts能定义哪怕是再复杂的应用,并且提供了可重复使用应用程序部署定义。

    • 易于更新升级。

    • 易于共享。Charts无论是在私有服务器还是公共服务器上,都非常易于升级、共享和托管。

    • 轻松回滚。

    Helm基础

    • 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。

    安装Helm 

    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为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快速部署,下一篇我们再来详细说明!

    往期内容链接

    集群故障处理之处理思路以及健康状态检查(三十二)

    集群故障处理之处理思路以及听诊三板斧(三十三)

    开源导入导出通用库Magicodes.ExporterAndImporter发布

    使用Kubectl部署应用

    通过Service访问应用 (1)

    通过Service访问应用 (2)

    使用Ingress来负载分发微服务

  • 相关阅读:
    怎么将一个类的成员函数作为指针传递给另一个类的成员函数 沉沉_
    C/C++中的头文件多文件组织 沉沉_
    函数的返回值返回变量和引用 沉沉_
    多操作赋的语义判断(如 int& *a和int* &a) 沉沉_
    ctags: 提示错误ctags: unrecognized option 'format=2' 沉沉_
    C++中关于流的概念 沉沉_
    Verilog 初学笔记顺序操作 和 并行操作的一点思考(参考黑金教程:Verilog HDL那些事 建模篇) 沉沉_
    void 指针 (转载) 沉沉_
    C语言的体系结构main函数存在的必然性(听杨力祥老师的课) 沉沉_
    转载:VC6.0中容易遇到的错误。http://hi.baidu.com/%C8%FD%C9%EE/blog/item/4a756ff2cb6bdb19b07ec5df.html 沉沉_
  • 原文地址:https://www.cnblogs.com/codelove/p/11636036.html
Copyright © 2020-2023  润新知