Skip to main content

鐵人賽系列文章 - DevOps 與 Kubernetes 的愛恨情仇

這次的鐵人賽的題目則著重於 Kubernetes 與 DevOps 之間的關係, DevOps 這詞發展多年以來,似乎成為一個顯學 每間公司都會朗朗上口需要招聘專門負責 DevOps 的人,工作內容百百種,實在讓人難以一言就斷定到底什麼是 DevOps。

本次系列文則不會針對 DevOps 去進行細部探討,到底 DevOps 的日常生活中可能會有哪些事情要處理,相反的 本系列文主要會針對 CI/CD 的流程去探討,看看當 CI/CD 與 Kubernetes 整合的過程中,要怎麼處理

舉例來說,一個最大的差別就是當所有應用程式都容器化後,要如何透過 CI/CD 流水線將新版本部署到 Kubernetes 之中 這中間有哪些議題可以探討,針對不同議題有哪些解決方案可以使用,以及這些解決方案彼此的優缺點

下圖是一個參考流程,從開發階段到部署階段中, Kubernetes 可能會扮演哪些角色,而 CI/CD 流水線則會跟哪些角色有所互動

img

上次的流程中有非常多的環節可以探討,每個環節中都有不同的解決方案與取捨,這些歡節包含

  1. Kubernetes 內的應用程式該如何包裝? 原生 Yaml 還是 Helm?
  2. 本地開發者需要 Kubernetes 來測試 Kubernetes 嗎?
  3. CI 流水線系統要選擇哪一套? 流水線工作要如何被觸發?
  4. CI 流水線過程中,需要 Kubernetes 來測試應用程式嗎 ?
  5. Container Registry 要使用雲端服務還是要自架,自架的話該怎麼使用以及如何與 Kubernetes 整合
  6. CD 流水線系統要選擇哪一套? 流水線工作要如何被觸發?
  7. CD 流水線過程中,要怎麼將應用程式更新到遠方 Kubernetes? 雲端架構或是地端架構會有什麼差異
  8. CD 更新過程中,如果有機密資料,該怎麼處理

接下來的章節會針對上述環節進行介紹,每個環節都會透過下述流程來介紹

  1. 概念介紹
  2. 相關專案介紹
  3. 使用範例

再次強調,上面的流程圖不是一個唯一的流程圖,而是一個範例,真正的運作流程都會根據不同的環境與需求而有所差異 但是選擇跟設計解決方案的思路則是不變的,透過培養思考的能力,才能夠遇到任何環境都有辦法構建出一套符合的解決流程。