k8s的chart學習(下)


1.開發自己的chart

Kubernetes 給我們提供了大量官方 chart,不過要部署微服務應用,還是需要開發自己的 chart,下面就來實踐這個主題。

1.1創建 chart

執行 helm create mychart 的命令創建 chart mychart

Helm 會幫我們創建目錄 mychart,並生成了各類 chart 文件。這樣我們就可以在此基礎上開發自己的 chart 了。

新建的 chart 默認包含一個 nginx 應用示例,values.yaml 內容如下:

開發時建議大家參考官方 chart 中的模板、values.yaml、Chart.yaml,里面包含了大量最佳實踐和最常用的函數、流控制,這里就不一一展開了。

1.2調試 chart

只要是程序就會有 bug,chart 也不例外。Helm 提供了 debug 的工具:helm lint 和 helm install --dry-run --debug

helm lint 會檢測 chart 的語法,報告錯誤以及給出建議。

比如我們故意在 values.yaml 的第 10 行漏掉了一個 :

 

helm lint mychart 會指出這個語法錯誤。 

 

將:加上之后再次 helm lint 檢查一下, mychart 目錄被作為參數傳遞給 helm lint。錯誤修復后則能通過檢測。

helm install --dry-run --debug 會模擬安裝 chart,並輸出每個模板生成的 YAML 內容。

我們可以檢視這些輸出,判斷是否與預期相符。

同樣,mychart 目錄作為參數傳遞給 helm install --dry-run --debug

2.安裝 chart的方式

 當我們覺得准備就緒,就可以安裝 chart,Helm 支持四種安裝方法:

2.1安裝倉庫中的 chart

例如:helm install stable/nginx

2.2通過 tar 包安裝

例如:helm install ./nginx-1.2.3.tgz

2.3通過 chart 本地目錄安裝

例如:helm install ./nginx

2.4通過 URL 安裝

例如:helm install https://example.com/charts/nginx-1.2.3.tgz

這里我們使用本地目錄安裝:

 

 當 chart 部署到 Kubernetes 集群,便可以對其進行更為全面的測試。

3.將 chart 添加到倉庫

chart 通過測試后可以將其添加到倉庫,團隊其他成員就能夠使用。任何 HTTP Server 都可以用作 chart 倉庫,下面演示在 k8s-node1 10.0.0.12 上搭建倉庫。

3.1在 k8s-node1 上啟動一個 httpd 容器。

3.2通過 helm package 將 mychart 打包。

3.3執行 helm repo index 生成倉庫的 index 文件。

mkdir myrepo
cd chart/
helm package mychart
mv chart/mychart-0.1.0.tgz myrepo/

Helm 會掃描 myrepo 目錄中的所有 tgz 包並生成 index.yaml--url指定的是新倉庫的訪問路徑。新生成的 index.yaml 記錄了當前倉庫中所有 chart 的信息:

 

當前只有 mychart 這一個 chart。

3.4將 mychart-0.1.0.tgz 和 index.yaml 上傳到 k8s-node1 的 /var/www/charts 目錄。

3.5通過 helm repo add 將新倉庫添加到 Helm。

倉庫命名為 newrepo,Helm 會從倉庫下載 index.yaml。

3.6現在已經可以 repo search 到 mychart 了。

除了 newrepo/mychart,這里還有一個 local/mychart。這是因為在執行第 2 步打包操作的同時,mychart 也被同步到了 local 的倉庫。

3.7已經可以直接從新倉庫安裝 mychart 了。

3.8如果以后倉庫添加了新的 chart,需要用 helm repo update 更新本地的 index。

①是本地倉庫默認跳過

②是我們創建的私有倉庫能夠成功更新

③是阿里的倉庫,發現亦可以更新成功

④是google的倉庫,國內如果不使用科學上網,是沒法訪問的,所以更新失敗。

4.小結

本章我們學習了 Kubernetes 包管理器 Helm。

Helm 讓我們能夠像 apt 管理 deb 包那樣安裝、部署、升級和刪除容器化應用。

Helm 由客戶端和 Tiller 服務器組成。客戶端負責管理 chart,服務器負責管理 release。

chart 是 Helm 的應用打包格式,它由一組文件和目錄構成。其中最重要的是模板,模板中定義了 Kubernetes 各類資源的配置信息,Helm 在部署時通過 values.yaml 實例化模板。

Helm 允許用戶開發自己的 chart,並為用戶提供了調試工具。用戶可以搭建自己的 chart 倉庫,在團隊中共享 chart。

Helm 幫助用戶在 Kubernetes 上高效地運行和管理微服務架構應用,Helm 非常重要。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM