Kubernetes 在雲原生世界發展這麼多年,也發展出了很多管理其集群生命週期的相關專案,如 kops, Rancher 等。而 VMware 則發起了一個名為 Cluster-API 的專案來利用 Kubernetes 本身的功能管理其他 Kubernetes 集群。本篇文章將會來簡單介紹 Cluster-API 這個專案。
Table of Contents
Cluster-API 是什麼?
Cluster API 是 Kubernetes 的子項目,專注於提供聲明式 API 和工具,以簡化多個 Kubernetes 集群的供應、升級和操作。
該專案由 Kubernetes Special Interest Group (SIG) Cluster Lifecycle 發起,使用 Kubernetes 風格的 API 和模式自動化平台運營商的集群生命週期管理。包含部署集群所需要的基礎設施,如虛擬機器、網絡、負載均衡器和虛擬網路等,以及 Kubernetes 集群設定都是和部署應用程式在 Kubernetes 上相似的模式進行設定管理。這使得在各種不同基礎設施環境中能夠實現一致和可重複的集群部署。
簡單來說,Cluster-API 會透過一些不同的 Custom Resource Definitions,來定義一個 Kubernetes cluster,並由相對應的元件去讀取這些定義並部署和管理其對應的集群。
目標:
- 利用使用聲明性 API 管理 Kubernetes 集群的生命周期(建立、擴展、升級、刪除)。
- 在不同的環境中工作,包括本地和雲端。
- 定義常見操作,提供預設的實現方式,並提供能自行開發其他方式的接口。
非目標:
- 將這些 API 整合進 Kubernetes 核心。
- 管理非 Kubernetes 所需的底層基礎設施。
- 管理橫跨多個基礎設施提供者的 Kubernetes。
為什麼要用 Cluster-API
Cluster-API 讓管理 Kubernetes 生命週期更簡單容易。
Kubernetes 是一個複雜的系統,而管理整個集群的生命週期是一件更複雜的事情。Cluster-API 能夠使部署和管理多個不同集群變得簡單,可以實現一致並且可重複的集群管理和部署。而投過其提供各種不同 API 的方式,能夠替換本身底層實作模式,讓使用者能夠根據需求替換所需的基礎設施提供者和部署方式等。
能夠支援不同的服務提供者
Cluster API 在設計時就使用了提供接口的方式給服務提供者撰寫自己的 provider,因此在使用者可以根據自己需求選擇所需的 provider,如 Infrastructure Provider 就有 AWS, Azure, GCP, OpenStack 等。
Cluster-API 的限制
資安
由於管理集群持有所有被管理的集群的憑證,這使其成為潛在的安全目標。獲得對管理集群的訪問權限可能會給攻擊者進一步獲得對所有集群的訪問權限,特別是如果集群由不同租戶擁有。
進階功能
一些進階功能目前還沒有被實作,例如身份驗證、備份和還原、日誌/監控等,以及尚未整合其他基本的 add-ons 安裝。
目前這方面在社群中有些討論,詳細可以去看一下 roadmap discussion
總結
Cluster-API 提供了一個工具讓使用者可以利用 Kubernetes 本身聲明式 API 的方式管理其他 Kubernetes 集群。目前已經有多個不同的 provider 可以提供使用者選擇使用,但在開發上還有很多可以整合的地方。讀者們可以嘗試看看這項計畫是否也符合自己需求,或是也可以針對其提供的模式進行開發整合。
Reference
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.