Helm 是 Kubernetes 的包管理器,這里下載的是 3.4.1 版本:其它版本請或者其它系統請移步官網:https://helm.sh/zh/docs/intro/install/
wget https://get.helm.sh/helm-v3.4.1-linux-amd64.tar.gz
tar -zxvf helm-v3.4.1-linux-amd64.tar.gz
cd linux-amd64/
cp helm /usr/bin
chmod a+x /usr/bin/helm
訪問 Helm 倉庫:https://artifacthub.io/
Helm常用命令
[root@master ~]# helm version //查看helm版本信息
[root@master ~]# helm list /查看當前安裝的Chart包
[root@master ~]# helm search mysql //查看與mysql相關的chart包
[root@master ~]# helm fetch stable/mysql //將mysql軟件包下載到本地
[root@master ~]# helm inspect stable/mysql //查看該軟件包的詳細信息
[root@master ~]# helm install stable/mysql -n mysql //安裝指定的mysql軟件包,並命名為mysql
[root@master ~]# helm status mysql //查看mysql的狀態信息
[root@master ~]# helm delete --purge mysql //刪除mysql,並將本地的緩存也進行刪除
[root@master ~]# helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
//添加阿里雲的repo源
[root@master ~]# helm repo update //更新repo倉庫資源
[root@master ~]# helm create helm_charts //創建一個chart,名稱為helm_charts
[root@master ~]# cd helm_charts/ && helm lint //測試charts語法
[root@master ~]# helm package helm_charts //打包charts
[root@master helm_charts]# helm template helm_charts-0.1.0.tgz //查看該軟件包生成的yaml文件
搜索需要的包
按照 install 步驟操作即可
Helm 自定義模板
chart 是一個組織在文件目錄中的集合。
在這個目錄中,Helm 期望可以匹配以下結構:
Chart.yaml # 包含了chart信息的YAML文件
LICENSE # 可選: 包含chart許可證的純文本文件
README.md # 可選: 可讀的README文件
values.yaml # chart 默認的配置值
values.schema.json # 可選: 一個使用JSON結構的values.yaml文件
charts/ # 包含chart依賴的其他chart
crds/ # 自定義資源的定義
templates/ # 模板目錄, 當和values 結合時,可生成有效的Kubernetes manifest文件
templates/NOTES.txt # 可選: 包含簡要使用說明的純文本文件
Chart.yaml 結構
Chart.yaml 文件是 chart 必需的。包含了以下字段:
apiVersion: chart API 版本 (必需)
name: chart名稱 (必需)
version: 版本(必需)
kubeVersion: 兼容Kubernetes版本的語義化版本(可選)
description: 一句話對這個項目的描述(可選)
type: chart類型 (可選)
keywords:
- 關於項目的一組關鍵字(可選)
home: 項目home頁面的URL (可選)
sources:
- 項目源碼的URL列表(可選)
dependencies: # chart 必要條件列表 (可選)
- name: chart名稱 (nginx)
version: chart版本 ("1.2.3")
repository: 倉庫URL ("https://example.com/charts") 或別名 ("@repo-name")
condition: (可選) 解析為布爾值的yaml路徑,用於啟用/禁用chart (e.g. subchart1.enabled )
tags: # (可選)
- 用於一次啟用/禁用 一組chart的tag
enabled: (可選) 決定是否加載chart的布爾值
import-values: # (可選)
- ImportValue 保存源值到導入父鍵的映射。每項可以是字符串或者一對子/父列表項
alias: (可選) chart中使用的別名。當你要多次添加相同的chart時會很有用
maintainers: # (可選)
- name: 維護者名字 (每個維護者都需要)
email: 維護者郵箱 (每個維護者可選)
url: 維護者URL (每個維護者可選)
icon: 用做icon的SVG或PNG圖片URL (可選)
appVersion: 包含的應用版本(可選)。不需要是語義化的
deprecated: 不被推薦的chart (可選,布爾值)
annotations:
example: 按名稱輸入的批注列表 (可選).
apiVersion:在 Helm3 中,apiVersion=v2;在 Helm3 之前的版本,apiVersion=v1
內置對象
(1) Values
Values 對象是為 Chart 模板提供值,這個對象的值有4個來源,后面的可以覆蓋前面的:
chart 包中的 values.yaml 文件
父 chart 包的 values.yaml 文件
通過 helm install 或者 helm upgrade 的 -f 或者 --values 參數傳入的自定義的 yaml 文件
通過 --set 參數傳入的值
在模板文件中,通過 {{.Values}} 對象來訪問設置的值。