美文网首页K8S容器编排最佳实践
K8S容器编排之简化Kubernetes应用部署工具-Helm安

K8S容器编排之简化Kubernetes应用部署工具-Helm安

作者: 云爬虫技术研究笔记 | 来源:发表于2019-01-06 02:23 被阅读10021次

    Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。Helm使发布可配置,支持发布应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。

    本文展示了Helm的Client、Server与本地Chart仓库的安装过程。

    Helm安装

    Helm CLINET安装

    Helm Client安装过程如下:

    1. 下载 Helm 2.6.1:https://storage.googleapis.com/kubernetes-helm/helm-v2.6.1-linux-amd64.tar.gz
    2. 解包:tar -zxvf helm-v2.6.1-linux-amd64.tgz
    3. helm二进制文件移到/usr/local/bin目录。
      mv linux-amd64/helm /usr/local/bin/helm

    Helm TILLER安装

    Helm Tiller是Helm的server,Tiller有多种安装方式,比如本地安装或以pod形式部署到Kubernetes集群中。本文以pod安装为例,安装Tiller的最简单方式是helm init, 该命令会检查helm本地环境设置是否正确,helm init会连接kubectl默认连接的kubernetes集群(可以通过kubectl config view查看),一旦连接集群成功,tiller会被安装到kube-system namespace中。

    执行helm init,该命令会在当前目录下创建helm文件夹即~/.helm,并且通过Kubernetes Deployment 部署tiller. 检查Tiller是否成功安装:

    $ kubectl get po -n kube-system
    NAME                           READY   STATUS   RESTARTS   AGE
    tiller-deploy-1046433508-rj51m 1/1     Running  0          3m
    

    Tiller其他安装形式

    • 安装金丝雀build: –canary-image
    • 安装指定image:–tiller-image
    • 指定某一个Kubernetes集群:–kube-context
    • 指定namespace安装:–tiller-namespace

    Helm TILLER删除

    由于 Tiller的数据存储于Kubernetes ConfigMap中,所以删除、升降级Tiller,原Helm部署的应用数据并不会丢失。

    删除Tiller:
    $ helm reset

    Chart仓库

    chart仓库用来存储和分享打包的chart,官方chart仓库由Kubernetes Charts维护, Helm允许我们创建私有chart仓库。

    创建chart仓库

    chart仓库是一个可用来存储index.yml与打包的chart文件的HTTP server,当要分享chart时,需要上传chart文件到chart仓库。任何一个能能够提供YAML与tar文件的HTTP server都可以当做chart仓库,比如Google Cloud Storage (GCS) bucket、Amazon S3 bucket、Github Pages或创建你自己的web服务器。

    Chart仓库结构

    一个chart仓库由一个chart包与index.yaml文件组成,index.yaml记录了chart仓库中全部chart的索引,一个本地chart仓库的布局例子如下:

    /home/ts1/.helm/
    |-- cache
    | `-- archive
    | |-- drupal-0.9.2.tgz
    | `-- mariadb-1.0.3.tgz
    |-- plugins
    |-- repository
    | |-- cache
    | | |-- fantastic-charts-index.yaml
    | | |-- local-index.yaml -> /home/ts1/.helm/repository/local/index.yaml
    | | |-- mariadb-1.0.3.tgz-index.yaml
    | | |-- memcached-1.2.1.tgz-index.yaml
    | | |-- mychart_xia-0.1.0.tgz-index.yaml
    | | |-- mysql-0.2.8.tgz-index.yaml
    | | |-- stable-index.yaml
    | | |-- test-0.1.0.tgz-index.yaml
    | | `-- test-0.1.8.tgz-index.yaml
    | |-- local
    | | |-- index.yaml
    | | |-- mychart-0.1.0.tgz
    | | |-- mychart_xia-0.1.0.tgz
    | | |-- mysql-0.2.8.tgz
    | | |-- mysql-6.19.centos-29.tgz
    | | |-- test-0.1.0.tgz
    | | |-- test-0.1.8.tgz
    | | `-- test-0.1.9.tgz
    | `-- repositories.yaml
    `-- starters
    
    7 directories, 20 files
    

    ~/.helm/repository/local/index.yaml文件中记录了chart的诸如名称、url、version等一些metadata信息。

    apiVersion: v1
    entries:
    mychart:
    - apiVersion: v1
    created: 2017-09-12T02:28:54.061070032Z
    description: A Helm chart for Kubernetes
    digest: ae8d7138002d432014dc8638ec37202823e9207445caf08a660d154b26e936ea
    name: mychart
    urls:
    - http://127.0.0.1:8879/mychart-0.1.0.tgz
    version: 0.1.0
    - apiVersion: v1
    created: 2017-09-12T03:08:14.02186072Z
    description: A Helm chart for Kubernetes
    digest: sha256:2a05defa095d364f4efc789fd2417d07493757ebd74096e5f495c50604cf582d
    name: mychart
    urls:
    - http://127.0.0.1:8879/charts/mychart-0.1.0.tgz
    version: 0.1.0
    

    创建本地chart仓库

    创建chart仓库有多种方式,本文以创建一个本地仓库为例:

    $ helm serve –address 0.0.0.0:8879 –repo-path ./charts 
    Regenerating index. 
    This may take a moment. Now serving you on 0.0.0.0:8879
    

    管理chart仓库

    上面步骤中,已经创建了一个本地的chart仓库,接下来讲述如何在chart仓库中维护chart。chart须遵循 SemVer 2 规则填写正确的版本格式。
    一旦chart目录已经存在,将chart打包,并移动到的一个新建目录,通过helm repo index 命令将chart的metadata记录在index.yaml文件中。

    helm package mychart 
    mkdir fantastic-charts 
    mv mychart-0.1.0.tgz fantastic-charts/ 
    helm repo index fantastic-charts –url
    http://bjo-ep-dep-039.dev.fwmrm.net:8879/charts
    

    上传chart到chart仓库,通过helm repo add命令上传chart到chart仓库:

    $ helm repo add fantastic-charts http://bjo-ep-dep-039.dev.fwmrm.net:8879/charts
    "fantastic-charts" has been added to your repositories
    

    查看chart是否上传仓库成功:

    $ helm repo list
    NAME                            URL
    chartsfantastic-charts     http://bjo-ep-dep-039.dev.fwmrm.net:8879/charts
    

    查找上传的chart:

    $ helm search mychart -l
    NAME                VERSION    DESCRIPTION
    local/mychart       0.1.0      A Helm chart for Kubernetes
    

    相关文章

      网友评论

        本文标题:K8S容器编排之简化Kubernetes应用部署工具-Helm安

        本文链接:https://www.haomeiwen.com/subject/ueujrqtx.html