前天我在 2019 台灣雲端大會帶了兩個場次,一個是現場實作場次,一個是經驗分享演講:

兩個場次,一言以蔽之,都圍繞在 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, Tetrate1 已經給了很好的建議。因此,我引述她的論點,建議大家可以採用兩種路徑:(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 小時。



希望這一場演講,一場實作工作坊,對大家有助益。


  1. 我在〈Next ’19 的 Istio 場次重點摘要〉一文中,有介紹 Prajakta Joshi 在 Google Cloud Next ’19 另一場精彩的演講。 [return]
  2. 關於 Kubernetes 的 API gateway,請參考〈Nginx Ingress 與 Ambassador 簡易性能比較〉一文。 [return]