DAY20 — 利用 Helm 把 K8s 元件都包裝起來吧!

被選召的 Gopher 們,從零開始探索 Golang, Istio, K8s 數碼微服務世界 — 第12屆iT邦幫忙鐵人賽

髒桶子
喜歡解決問題的髒桶子
3 min readOct 5, 2020

--

本文章同時發佈於:

大家好,今天我們要介紹 Helm,

昨天已經將 K8s 的 Pod、Service、Deployment、Ingress 元件都介紹完畢,容器的管理都變得更加容易,但各個元件的 config yaml 檔將會變得如下圖這麼多,

這麼多的元件導致每次 K8s 啟動時都要下以下指令:

就管理上還是麻煩了些,而 Helm 就是將這些 config yaml 檔在包裝起來的工具,讓後端部署更加的一鍵解決XD。

Helm 安裝

Mac 安裝可以使用 Homebrew 安裝,

而其他的平台也相當簡單,可以參考官網

安裝完後,記得將 Helm repostory URL 添加至 Helm,這就像 Mac 的 Homebrew、Ubuntu 的 apt 的 library URL

先 run 起來

Clone Example-Code,進入到 Helm 的資料夾,

將 Helm 啟動,

此時可以下以下指令,會發現 Helm 將我們前幾篇文章的元件一次建立完畢,

而開啟web.digimon.com,work!

實作

建立一 helm chart,

指令下完後,會建立以下資料夾,

  • charts: 放置其他 chart 的資料夾,由於這次的實作較簡單,所以並沒有用到其他 chart
  • templates: 放置 K8s 的元件
  • .helmignore: 要忽略的檔案
  • Chart.yaml: 說明此 chart 的 metadata,有名稱與版本等等
  • values.yaml: 可將 K8s 元件的參數抽象出來,並在 values.yaml 統一控管

由於 templates 中的元件我都將它刪除了,放入前幾篇文章的元件,會如下,

並把 deployment 裡頭的replicaCount抽象出來,統一由 value.yaml 來控管,以 server-deployment.yaml 來說會如下:

參考

Write Medium in Markdown? Try Markdium!

--

--