Helm程序包管理

目录

Helm概述

Helm核心术语

Charts

Repository

Config

Release

Helm架构

Heml安装与使用

安装Helm Client

安装Tiller Server

Helm基本操作命令

Heml Charts

Chart.yaml

requirements.yaml

values.ymal

自定义Charts

 

自己搭建kubeapps

 

 

Helm实战:部署EFK日志管理系统


Helm概述

Heml是Kubernates的应用程序包管理器,类似于Linux上的yum、Mac上的brew,为用户方便的实现查找、发布和使用Kubernates应用程序

Helm将Kubernates的资源(Deployment、Service、ConfigMap等)打包为一个Charts,将币制并测试后的Charts保存到Charts仓库中进行存储和发布

Helm程序包管理_第1张图片

Helm核心术语

Charts

也就是Heml中的程序包,包括了一个Kubernetes应用程序所运行时的镜像、依赖关系、资源定义文件等

Repository

Charts仓库,用于集中存储和分布Charts,类似于docker镜像仓库Hubor/Regestry,Git中的Gitlab/Github,Maven中的Nexus之类的仓库中心

Config

应用程序安装运行时的配置信息

Release

应用程序实例化配置后运行于Kubernetes集群中的一个Charts实例。在一个k8s集群中一个Charts可以指定不同Config多次安装,每次安装都会创建一个新的Release

 

Helm架构

Helm程序包管理_第2张图片

Helm主要由Helm客户端、Tiller服务端和Charts仓库组成:

  • Helm Client是命令行工具,基于gRPC协议与Timer Server交互,主要完成以下任务:
    • 在本地开发Charts
    • 管理Charts仓库
    • 提供了安装、查找、卸载的命令与Tiller交互完成安装、查找、卸载Charts
  • Tiller Server是运行于Kubernetes集群之上容器化服务应用,它接收来自Helm Client的请求,与Kubernates API Server进行交互,主要完成以下任务:
    • 监听Heml Client过来的请求
    • 合并Charts与Config后构建一个Release
    • 向Kubernetes集群安装Charts并对相应的Release进行跟踪
    • 升级和卸载Charts

Heml安装与使用

 

安装Helm Client

helm提供了二进制程序和编码编译安装。为了方便我们直接使用二进制程序的方式安装

  1. 下载二进程程序包
    wget 
    tar -zxvf 

     

  2. 将二进行文件加入PATH环境变量或复制到/usr/local/bin目录中
  3. 查检是否安装正确

      注意:Heml依赖与本地的kubeconfig配置文件才能与运行与kubenetes之上的Tiller服务器进行通信,所以确保本地的kubctl命令可以正常与kubenetes集群连接,或本地至少有可用的kubeconfig配置

 

安装Tiller Server

Tiller Server可以部署在Kuberntes集群之上,也可部署于本地,只要与kubenetes集群能够正常通信就可以,下面我们就将Tiller部署在kubenetes集群之上

  1. 创建RBAC权限
  2. 初始化Tiller Server,安装Tiller Server的安装
  3. 检查是否部署成功
  4.  

Helm基本操作命令

官方仓库:https://hub.kubeapps.com/

 

 

 

 

 

release管理相关:

  • install:安装release
  • delete:删除release
  • upgrade/rollback:升级或回滚release
  • list:查看安装后的release
  • history: 查看elease的历史信息
  • status :获取release状态信息

 

charts管理相关:

  • create:创建charts
  • fetch:
  • get:
  • inspect:
  • package:打包charts
  • verify:

 

Heml Charts

 

Charts文件目录结构

Helm程序包管理_第3张图片

Helm程序包管理_第4张图片

 

Chart.yaml

Chart.yaml提供了Charts相关的各种元数据,如名称、版本、关键词、作者信息、使用的模板引擎信息等等,它是一个Charts的核心文件,主要由以下字段:

  • name:Charts名称,必须字段
  • version:版本号,必须字段
  • description:描述,可选字段
  • keywords:用于搜索时的关键字,可选字段
  • home:项目主面URL,可选字段
  • sources:项目源码URL,可选字段
  • maintainers:项目维护者信息,它是由name、email和url属性组成,可选字段
  • engine:模板引擎名称,默认为gotpl,可选字段
  • icon:项目图标URL,可选字段
  • appVersion:本项目用到的应用程序版本号,可选字段
  • deprecated:当前Charts是否废弃,可选字段
  • tillerVersion:当前Charts依赖的tiller版本号,可选字段

requirements.yaml

requirements.yaml文件是一个简单的依赖列表,主要由以下字段:

  • name:被依赖的Charts名称
  • version:被依赖的Charts版本
  • repository:被依赖的Charts仓库URL
  • alias:为被依赖的Charts创建一个别名
  • tags:
  • condition:
  • import-values:

说明:如果依赖关系文件配置完成后,执行“helm dependency update”命令会更新依赖关系 ,并自动下载依赖的Charts至charts/目录中

values.ymal

所有的模板文件保存在template目录中,在当前Charts被Helm引用时,此目录中的所有模板文件会交给模板引擎处,模板文件中所用到的值有两种方式提供:

通过Charts中的values.ymal文件提供,一般用于提供默认值

在运行"helm install"命令时传递包含所需要的自定义值的yaml

 

基它文件:

定义Charts时还需要用到Licence、README.md以及NOTE.txt,其中NOTE.txt文件用于在Charts安装完成后输出说明信息,向用户说明当前Charts相关使用说明或初始化说明信息,另外使用“helm status”命令查看Release的相关信息时,此文件中的内容也会输出

 

自定义Charts

  1. 创建一个空Charts
    helm create myapp

     

  2. 修改Charts以部署自定义服务
    vim myapp/Chart.yaml 

     

  3. 打包Charts
     helm package myapp

     

  4. 启动本地char仓库服务

     helm serve
  5. 搜索charts

    helm search myapp

     

  6. 安装charts

    helm install --name myapp1 local/myapp

     

 

 

自己搭建kubeapps

以上我们使用的是官方的Charts仓库或第三方Charts仓库,我们在企业内部更希望有自己的Charts仓库,因此我们可以使用Kubeapps搭建自己的Charts仓库

  1. 添加需要的第三方repo地址
    helm repo add bitnami https://charts.bitnami.com/bitnami

     

  2. 使用Heml进行安装
    helm install --name kubeapps --namespace kubeapps bitnami/kubeapps

     

  3. 创建所需要的ServiceAccount并做相关Binding
    kubectl create serviceaccount kubeapps-operator
    kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=default:kubeapps-operator

     

  4. 获取Token
    kubectl get secret $(kubectl get serviceaccount kubeapps-operator -o jsonpath='{.secrets[].name}') -o jsonpath='{.data.token}' | base64 --decode
    eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Imt1YmVhcHBzLW9wZXJhdG9yLXRva2VuLWprdDV6Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6Imt1YmVhcHBzLW9wZXJhdG9yIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiOWUwZTg3MzAtMGY1Ni0xMWU5LTgxZmEtMDY5ODNlMDAwMDgxIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50OmRlZmF1bHQ6a3ViZWFwcHMtb3BlcmF0b3IifQ.GNx7DpbLc5ds05vKorIVMBluk13cx2AyI9N07l_EKwNudUyPcH5RH5O2-MHweokdEZA-3FVgTpYV2hH3CsdsWA2bR2hOcGh7pkRAxRC04KTk_VVKe7NcSifksdaADm6BRxEjtcY54Yjt6avS6uiUxcVcxc6kiNPuREz3RBt53GpPkqR-efXSaDNhJqYaivWHjL6j4dcXblLhEL55aoBCggmcrRJgvisnmNPmHT-R3LweB2TbgVbAq-lb2I4XRCAP2meJGJb0-1SmdC_k4oxKxa3TIi1nG7W0j0qkdN1Gmjp03Tgr7CwvI6dvSMEhq2EfOXV9OmNBwO1p5-i5fiQaVw

     

  5. 使用获取的Token进行登录 
     

 

 

 

 

 

 

 

 

你可能感兴趣的:(容器化)