k8s學習十-helm

孟諸 2022-01-08 03:57:38 阅读数:936

k8s helm

1 helm概述

之前部署應用需要編寫yaml文件,然後執行文件。這種方式部署少量的服務可以,但是如果部署幾十個,上百個微服務需要維護大量yaml文件,特別不方便。通過helm可以解决如下問題

  • 把多個yaml作為一個整體管理
  • 實現yaml高效複用
  • 使用helm應用級別的版本管理

helm是一個k8s的包管理工具,就像linux下的包管理器,如yum/apt等,可以很方便的將之前打包好的yaml文件部署到k8s上

2 相關概念

  • helm:一個命令行客戶端工具,主要用於 Kubernetes 應用 chart 的創建、打包、發布和管理。
  • Chart:應用描述,一系列用於描述 k8s 資源相關文件的集合。
  • Release:基於 Chart 的部署實體,一個 chart 被 Helm 運行後將會生成對應的一個release;將在 k8s 中創建出真實運行的資源對象。

3 架構介紹

在這裏插入圖片描述
2019 年 11 月 13 日, Helm 團隊發布 Helm v3 的第一個穩定版本。
該版本主要變化如下:
架構變化:
1、最明顯的變化是 Tiller 的删除
2、Release 名稱可以在不同命名空間重用
3、支持將 Chart 推送至 Docker 鏡像倉庫中4、使用 JSONSchema 驗證 chart values
4、使用 JSONSchema 驗證 chart values
5、其他

4 helm使用

4.1 安裝配置

1 安裝helm
Helm 客戶端下載地址:https://github.com/helm/helm/releases 解壓移動到/usr/bin/目錄即可。

wget https://get.helm.sh/helm-vv3.2.1-linux-amd64.tar.gz tar zxvf helm-v3.2.1-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin/

2 配置 chart 倉庫

  • 微軟倉庫(http://mirror.azure.cn/kubernetes/charts/)這個倉庫推薦,基本 上官網有的 chart 這裏都有。
  • 阿裏雲倉庫(https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts )
  • 官方倉庫(https://hub.kubeapps.com/charts/incubator)官方 chart 倉庫,國內有點不好使

添加倉庫

helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts helm repo update
在這裏插入圖片描述

删除倉庫

helm repo remove aliyun
在這裏插入圖片描述

更新倉庫

helm repo update

4.2 部署應用

1 搜索應用

helm search repo weave
在這裏插入圖片描述

2 安裝應用

helm install ui stable/weave-scope
在這裏插入圖片描述

3 查看應用

  • helm list
    在這裏插入圖片描述
  • helm status ui
    在這裏插入圖片描述

4 暴露端口

kubectl edit svc ui-weave-scope
在這裏插入圖片描述
在這裏插入圖片描述
再次查看
在這裏插入圖片描述

4.3 自定義chart部署

1 創建chart
在這裏插入圖片描述

  • Chart.yaml:用於描述這個 Chart 的基本信息,包括名字、描述信息以及版本等。
  • values.yaml :用於存儲 templates 目錄中模板文件中用到變量的值。
  • Templates: 目錄裏面存放所有 yaml 模板文件。
  • charts:目錄裏存放這個 chart 依賴的所有子 chart。
  • NOTES.txt :用於介紹 Chart 幫助信息, helm install 部署後展示給用戶。例如: 如何使用這個 Chart、列出缺省的設置等。
  • helpers.tpl:放置模板助手的地方,可以在整個 chart 中重複使用

2 在templates文件夾下創建兩個yaml文件

  • deployment.yaml
    在這裏插入圖片描述
  • service.yaml

首先創建應用:kubectl create deployment web1 --image=nginx
在這裏插入圖片描述
3 安裝mychart
在這裏插入圖片描述
4 應用昇級
helm upgrade [chart名稱] 目錄
在這裏插入圖片描述

5 chart模板使用

通過傳遞參數,動態渲染模板,yaml內容動態傳入參數生成,實現yaml高效複用。chart中有values.vaml文件,定義yaml全局變量
yaml文件大體有如下幾個地方不同

  • image
  • tag
  • label
  • port
  • replicas

1 在values.yaml文件定義變量
在這裏插入圖片描述
2 在templates的yaml文件引用變量
在這裏插入圖片描述
通過Values前綴引用值,通過Release動態生成名字

版权声明:本文为[孟諸]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201080357382366.html