Helm charts

helm 是一个类似 yum 用来简化部署 k8s 上容器的程序,虽然 helm 本身并不存放任何镜像,镜像依旧存储在各个镜像仓库如 docker hub 中.helm 仓库用来存储清单文件 charts,相对的 charts 需要在正式运行前赋予相关环境变量值以适用于不同的客制化信息,所以 helm 会从仓库中获取 charts 并存放在本地,之后创建容器时则先以本地 charts 为准,如果本地没有才会在仓库中寻找相关 charts,并且 charts 在部署以后便称之为 release.并且 helm 并不与 k8s 的 APIserver 直接交互,他们之间还有一个中间层 Tiller,再由 Tiller 与 APIserver 交互完成创建容器的操作,所以严格意义上来讲 helm 是 Tiller 的客户端.操作 helm 与 kubectl 类似通过命令行即可实现,同时 helm 还能完成版本控制

Helm charts

  1. 核心术语:

    • Chart:一个 helm 程序包
    • Repository:Charts 仓库,https/http 服务器
    • Release:特定的 Chart 被赋予克制化信息后,部署于目标集群上的一个实例
  2. 程序架构:

    • helm:客户端,管理本地的 Chart 仓库,管理 Chart, 与 Tiller 服务器交互,发送 Chart,实例安装、查询、卸载等
    • Tiller:服务端,可运行在 k8s 之外但及其麻烦,接收 helm 发来的 Charts 与客制化信息,生成 relase 并完成部署

部署与使用

  1. 安装 helm

    [root@master-0 ~]# wget https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz
    [root@master-0 ~]# tar -zxvf helm-v2.9.1-linux-amd64.tar.gz
    [root@master-0 ~]# cp linux-amd64/helm /usr/local/bin/
    
  2. 安装 Tiller 可以通过 helm init 来安装 Tiller,第一次进行 helm init 的时候会联系 APIserver, 所以会获取 kube/config 的配置文件

    [root@master-0 .kube]# pwd
    /root/.kube
    [root@master-0 .kube]# ls
    cache  config  http-cache
    [root@master-0 .kube]# helm init
    # 国内可以使用如下站点
    [root@master-0 .kube]# helm init --upgrade --tiller-image registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    
  3. 给 Tiller 授权

    [root@master-0 .kube]# kubectl get deployment --all-namespaces
    NAMESPACE     NAME                   DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    kube-system   tiller-deploy          1         1         1            1           1h
    [root@master-0 .kube]# kubectl create serviceaccount --namespace kube-system tiller
    [root@master-0 .kube]# kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
    [root@master-0 .kube]# kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
    deployment.extensions "tiller-deploy" patched
    [root@master-0 .kube]# kubectl get deploy --namespace kube-system   tiller-deploy  --output yaml|grep  serviceAccount
    serviceAccount: tiller
    serviceAccountName: tiller
    
  4. 验证 Tiller 是否安装成功

    [root@master-0 ~]# kubectl -n kube-system get pods|grep tiller
    tiller-deploy-6d68f5c78f-nql2z          1/1       Running   0          5m
    
    [root@master-0 ~]# helm version
    Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
    Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
    

官方可用的Chart列表: https://hub.kubeapps.com/

上一篇:数据可视化工具介绍


下一篇:uni-app中内嵌u-charts图标导致页面在图表无法滑动