chart 是 Helm 的應用打包格式。chart 由一系列文件組成,這些文件描述了 Kubernetes 部署應用時所需要的資源,比如 Service、Deployment、PersistentVolumeClaim、Secret、ConfigMap 等。
單個的 chart 可以非常簡單,只用於部署一個服務,比如 Memcached;chart 也可以很複雜,部署整個應用,比如包含 HTTP Servers、 Database、消息中間件、cache 等。
chart 將這些文件放置在預定義的目錄結構中,通常整個 chart 被打成 tar 包,而且標註上版本信息,便於 Helm 部署。
下面我們將詳細討論 chart 的目錄結構以及包含的各類文件。
chart 目錄結構
以前面 MySQL chart 爲例。一旦安裝了某個 chart,我們就可以在 ~/.helm/cache/archive 中找到 chart 的 tar 包。
解壓後,MySQL chart 目錄結構如下:
目錄名就是 chart 的名字(不帶版本信息),這裏是 mysql
,包含如下內容:
Chart.yaml
YAML 文件,描述 chart 的概要信息。
name
和 version
是必填項,其他都是可選。
README.md
Markdown 格式的 README 文件,相當於 chart 的使用文檔,此文件爲可選。
LICENSE
文本文件,描述 chart 的許可信息,此文件爲可選。
requirements.yaml
chart 可能依賴其他的 chart,這些依賴關係可通過 requirements.yaml 指定,比如:
在安裝過程中,依賴的 chart 也會被一起安裝。
values.yaml
chart 支持在安裝的時根據參數進行定製化配置,而 values.yaml 則提供了這些配置參數的默認值。
templates 目錄
各類 Kubernetes 資源的配置模板都放置在這裏。Helm 會將 values.yaml 中的參數值注入到模板中生成標準的 YAML 配置文件。
模板是 chart 最重要的部分,也是 Helm 最強大的地方。模板增加了應用部署的靈活性,能夠適用不同的環境,我們後面會詳細討論。
templates/NOTES.txt
chart 的簡易使用文檔,chart 安裝成功後會顯示此文檔內容。
與模板一樣,可以在 NOTE.txt 中插入配置參數,Helm 會動態注入參數值。
下一節我們詳細討論 chart 模板的用法。
書籍:
1.《每天5分鐘玩轉Kubernetes》
https://item.jd.com/26225745440.html
2.《每天5分鐘玩轉Docker容器技術》
https://item.jd.com/16936307278.html
3.《每天5分鐘玩轉OpenStack》
https://item.jd.com/12086376.html