鐵人賽系列文章 - DevOps 與 Kubernetes 的愛恨情仇
這次的鐵人賽的題目則著重於 Kubernetes 與 DevOps 之間的關係, DevOps 這詞發展多年以來,似乎成為一個顯學 每間公司都會朗朗上口需要招聘專門負責 DevOps 的人,工作內容百百種,實在讓人難以一言就斷定到底什麼是 DevOps。
本次系列文則不會針對 DevOps 去進行細部探討,到底 DevOps 的日常生活中可能會有哪些事情要處理,相反的
本系列文主要會針對 CI/CD
的流程去探討,看看當 CI/CD 與 Kubernetes 整合的過程中,要怎麼處理
舉例來說,一個最大的差別就是當所有應用程式都容器化後,要如何透過 CI/CD
流水線將新版本部署到 Kubernetes 之中
這中間有哪些議題可以探討,針對不同議題有哪些解決方案可以使用,以及這些解決方案彼此的優缺點
下圖是一個參考流程,從開發階段到部署階段中, Kubernetes 可能會扮演哪些角色,而 CI/CD
流水線則會跟哪些角色有所互動
上次的流程中有非常多的環節可以探討,每個環節中都有不同的解決方案與取捨,這些歡節包含
- Kubernetes 內的應用程式該如何包裝? 原生 Yaml 還是 Helm?
- 本地開發者需要 Kubernetes 來測試 Kubernetes 嗎?
- CI 流水線系統要選擇哪一套? 流水線工作要如何被觸發?
- CI 流水線過程中,需要 Kubernetes 來測試應用程式嗎 ?
- Container Registry 要使用雲端服務還是要自架,自架的話該怎麼使用以及如何與 Kubernetes 整合
- CD 流水線系統要選擇哪一套? 流水線工作要如何被觸發?
- CD 流水線過程中,要怎麼將應用程式更新到遠方 Kubernetes? 雲端架構或是地端架構會有什麼差異
- CD 更新過程中,如果有機密資料,該怎麼處理
接下來的章節會針對上述環節進行介紹,每個環節都會透過下述流程來介紹
- 概念介紹
- 相關專案介紹
- 使用範例
再次強調,上面的流程圖不是一個唯一的流程圖,而是一個範例,真正的運作流程都會根據不同的環境與需求而有所差異 但是選擇跟設計解決方案的思路則是不變的,透過培養思考的能力,才能夠遇到任何環境都有辦法構建出一套符合的解決流程。