Helm程序包管理

目錄

Helm概述

Helm核心術語

Charts

Repository

Config

Release

Helm架構

Heml安裝與使用

安裝Helm Client

安裝Tiller Server

Helm基本操作命令

Heml Charts

自定義Charts

 

自己搭建kubeapps

Helm實戰:部署EFK日誌管理系統


 

Helm概述

Heml是Kubernates的應用程序包管理器,類似於Linux上的yum、Mac上的brew,爲用戶方便的實現查找、發佈和使用Kubernates應用程序

Helm將Kubernates的資源(Deployment、Service、ConfigMap等)打包爲一個Charts,將幣制並測試後的Charts保存到Charts倉庫中進行存儲和發佈

 

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主要由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
  • delete
  • upgrade/rollback
  • list
  • history release的歷史信息
  • status 獲取release狀態信息

 

chart管理相關:

  • create
  • fetch
  • get
  • inspect
  • package
  • verify

 

Heml Charts

 

Charts文件目錄結構

Chart.yaml

requirements.yaml

values.yaml

 

基它文件:

自定義Charts

 

 

自己搭建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進行登錄 
     

 

 

 

Helm實戰:部署EFK日誌管理系統

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章