前天我在 2019 台灣雲端大會帶了兩個場次,一個是現場實作場次,一個是經驗分享演講:
-
Lab / 給 RD 的 Kubernetes 初體驗 (90 minutes)
-
Speech / 當 .NET 遇到 Kubernetes (30 minutes)
兩個場次,一言以蔽之,都圍繞在 Kubernetes 的入門認知與導入策略上。
以「問題解決」角度看 Kubernetes 導入
〈當 .NET 遇到 Kubernetes〉這場演講,是以「問題解決」的角度,探討導入 Kubernetes 的困難與策略,尤其是針對 .NET 族群。
整場演講的脈絡如下:
① 為什麼要導入 Kubernetes?
- 我們的現況是什麼?
- 外面的世界已經是什麼樣子?
- 不正視差距,會有什麼影響?
② 為什麼還 不 導入 Kubernetes?
我嘗試用法格行為模型 (B=MAP) 來歸類問題原因:
- Motivation / 我們真的認識 Kubernetes 真實的利益是什麼嗎?
- Ability / 正確認識技術核心、外在因素、內在因素,才能正確評估我們的技術能力是否已經提升到足以擁抱 Kubernetes 的地步。
- Prompt / 是否有臨門一腳的驅動力?
③ 有什麼建議的導入選項?
我發現 Prajakta Joshi 的演講 “Strategies for Bringing Kubernetes, Istio, Traffic Director, and Envoy to Brownfield with Walmart, Google, Tetrate” 1 已經給了很好的建議。因此,我引述她的論點,建議大家可以採用兩種路徑:(a) Container first and mesh next,(b) Mesh first and container next。
我這場演講有開放錄影。等上線了,我會再補上連結。
RD 也需要略懂 Kubernetes
Kubernetes 是目前雲端環境的顯學。可是,傳統的程式,並不是原封不動搬上去,就能夠自動享受 Kubernetes 所宣稱的種種好處。新的環境,不僅需要新的 Ops 思維,也需要新的 Dev 思維。
我設計〈給 RD 的 Kubernetes 初體驗〉工作坊,嘗試以一個半小時的時間,從軟體研發者的角度,探討軟體的設計該做哪些最起碼的改變,並從實作中體驗 Kubernetes 引進的新觀念及新效益。
我希望能夠讓學員從實例中體驗,傳統 web 應用程式在搬上 Kubernetes 時,可能會經歷哪些架構面的調整,才能享受新架構的效益。
我試圖不只是 demo,也不只是讓大家能無腦照著做,還試圖進行一些觀念講解。短短一個半小時,野心太大,只好割捨原本已經準備好的 API Gateway 例子 2,集中在以下課題:
- 容器化
- 微服務
- 組態管理
- 多重環境管理:本機端與雲端(以 GKE 為例)
範例程式也以疊代演進的形式,逐步添加 Kubernetes 功能,呼應〈當 .NET 遇到 Kubernetes〉演講所提出的 “Container first and mesh next” 導入策略。
Container:
-
1.0: Extracted from Microsoft Docs.
-
2.0: Dockerize the app with simple Dockerfile and docker-compose.yml.
-
3.0: Separate frontend and backend into 2 distinct containers.
Kubernetes:
-
4.0: Support Kubernetes (locally).
-
4.1: Use Kubernetes dashboard.
-
5.0: Support ConfigMap and naming convention.
Cloud(感謝上官林傑大力支援 Google Cloud 的 redeem coupon):
-
6.0: Support Kubernetes on the cloud (GKE for example).
-
7.0: Support canary release.
可惜,一個半小時的時間還是太短了,最後面 30 分鐘其實是在趕進度,跳過了一些原本應該仔細講解的環節(譬如:ConfigMap、label & selector、ephemeral vs static external IP 的區分⋯⋯)。我再考慮另外找個社群的場子,辦一次較完整的 workshop 吧。完整的,應該會需要 2.5~3 小時。
一個月後,應 GCPUG Taipei 之邀,我辦了一場 3+1 小時的 Workshop,投影片及實作範例都有更新。
希望這一場演講,一場實作工作坊,對大家有助益。
-
我在〈Next ’19 的 Istio 場次重點摘要〉一文中,有介紹 Prajakta Joshi 在 Google Cloud Next ’19 另一場精彩的演講。 ↩︎
-
關於 Kubernetes 的 API gateway,請參考〈Nginx Ingress 與 Ambassador 簡易性能比較〉一文。 ↩︎