Argocd - 託管另一個 k3d cluster
託管 k3d cluster 給 argocd 時發生錯誤 dial tcp 0.0.0.0:26443: connect: connection refused , 透過手動增加 k3d cluster credential secret,並且透過 docker network 讓 argocd cluster 可以解析 k3d cluster api server ,就可以正常進行託管。
K3d - K3s 輕量化 wrapper
K3d 是 K3s 的輕量化 wrapper , 讓 K3s 得以 Docker 上執行。
K3s 設定 etcd
先前在 “Mac M2 安裝 K3s” 介紹如何快速安裝並啟動一個 K3s cluster,但發現 control-plane node 並沒有 etcd 的角色,查詢之後發現需要進行額外的設定,且可以採用 K3s 提供的 embedded etcd,或是自己建立 etcd 服務後供 cluster 使用。 就把兩種方式都玩了一遍: 1.對既有 cluster 設定使用 embedded etcd ,以及2.自己建立 etcd 並在新建立的 cluster 中使用。
透過 NFS Server 在 K3s cluster 新增 Storage Class
之前讀過 Shawn Ho 大大的在GKE上使用ReadWrite Many的Disk , 突然意識到 multipass 產生的 Ubuntu VM ,不就是現成的 Filesystem ! 只要在 Ubuntu 上安裝了 NFS server , 並在其他 VM 上安裝 NFS client , 那應該就能新增使用 NFS 的 Storage Class 了!查了一些資料後發現可行,於是就手動實做看看。
Mac M2 安裝 K3s
K3s是輕量化的 Kubernetes,由於先前我都是使用Docker Desktop Kubernetes,因為 Docker Desktop Kubernetes 是 single-node Kubernetes or Docker Swarm cluster,在local 部署 Pod 時也無法實際測試 affinity 功能,因此就想玩玩看 K3s 。
Design Patterns - Abstract Factory Pattern
簡而言之, Factory Method Pattern 描述的是定義製作者(Creator)和產品(Product)間的關係 , Abstract Factory Pattern 則是一種將多個製作者(Creator) 群組化的關係;Abstract Factory Pattern是基於Factory Method Pattern建構而成的一種設計模式,因此需要先理解 Factory Method Pattern 的核心精神與設計方式。
Design Patterns - Factory Method Pattern
Factory Method Pattern 簡明扼要的說,就是定義製作者(Creator)和產品(Product)間的關係。我們並不需要在意具體是哪個製作者生產產品,也不需要在意製作者用何種方式生產特定產品,因為我們關注的部分為,是否可拿到特定產品。
Design Patterns - Decorator Pattern
Decorator Pattern 透過修改已定義的行為,以擴展或變更其功能,而不需透過繼承和覆寫。 使用組合 (composition) 替代繼承 (inherit),可動態地添加或移除行為,且不需要在繼承關係中堆疊子類別。 Decorator模式更具靈活性和可維護性,因此被廣泛地應用於軟體開發領域中。
Design Patterns - Observer Pattern
在 Observer Pattern 中,將會明確定義出兩種角色 : 1. IObservable : 被觀察者,如上述的 Server (A類), 2. IObserver : 觀察者,如上述的 Client (B類) 。讓 Server 主動推送(Push)狀態變更的信號給 Client,可以有效的改善輪詢帶來的缺點。
Design Patterns - Strategy Pattern
相對於繼承(inherit), Strategy Pattern 則是組合優於繼承(composition over inheritance)的精神。假設有一個薪水計算器要給兩個不同的客戶使用 : 速食業客戶以每小時時薪和工時來核算薪水,外送業客戶以每單獎金和總外送單數來核算薪水。薪水計算器需要提供給不同業者不同核算薪水的方法, Strategy Pattern 則提供了一種方式,使得不同業者可以使用同一個計算器,並選擇不同的核算方式,來獲取薪水計算的結果。