1. 程式人生 > 其它 >Kubernetes 多叢集管理平臺 OCM v0.9.0 釋出:進一步改善託管叢集安全性問題

Kubernetes 多叢集管理平臺 OCM v0.9.0 釋出:進一步改善託管叢集安全性問題

作者:Brae Troutman

隨著 OpenClusterManagement(OCM)專案的持續發展,我們覺得有必要週期性向大家同步近期專案的一些進展了,包括我們我們下一步未來發展的方向以及作為貢獻者如何參與進來我們的社群。2022 年的尾聲即將到來,讓我們來進一步看一下專案研發方面的新內容吧!

關於 Open Cluster Management

OCM 是一款 Kubernetes 多叢集平臺開源專案,它可以幫助你大大簡化跨雲/多雲場景下的叢集管理,無論這些叢集是在雲上託管,還是部署在自建資料中心,再或者是在邊緣資料中心中。OCM 提供的基礎模型可以幫助我們同時理解單叢集內部的容量情況,也可以橫跨多叢集進行資源/工作負載的編排排程。與此同時,OCM 還提供了一系列強大的擴充套件性或者叫做外掛框架(addon-framework)來幫助我們整合 CNCF 生態中的其他專案,這些擴充套件性也可以幫助我們無侵入地針對你的特定使用場景手工擴充套件特性。

OCM 目前是 CNCF 官方 Sandbox 級別專案,吸納了來自超過 15 個不同組織的維護者橫跨不同的雲原生廠商和解決方案提供商。我們認為 OCM 是一種對於目前已經廢棄的 Kubernetes 多叢集工作小組下的 Kubefed 專案的可行的平行替代方案,同時我們也在致力於在 Kubefed 的正式下線後繼承延續 Kubernetes 官方多叢集管理的使命。

Website:

https://open-cluster-management.io/

GitHub:

https://github.com/open-cluster-management-io/OCM

新版本 v0.9.0 內容

我們很高興在此宣佈 OCM v0.9.0 版本的正式釋出。在這個版本中,我們已經進一步提升了託管叢集上的安全性相關問題並且可以提供了流暢的託管叢集到主叢集的服務暴露功能。你也可以根據這裡的研發計劃來看到這個版本中的新增特性等等,同時窺見社群整體正在朝哪個方向發展。

降級 Work 守護容器的安全許可權

在之前的 OCM 迭代版本中,Work 守護容器通常在託管叢集中是執行在管理員許可權上的。這個釋出版本中,為了實踐“許可權最小化”的原則,OCM 支援了以 ManifestWork 粒度單獨定義非管理員的許可權身份,這樣以來就允許例如多叢集應用運維的終端使用者針對場景為不同的叢集定義不同的許可權。

支援多叢集服務的暴露和路由

在最新版本的 OCM 的 Cluster-Proxy 外掛裡新增了在託管叢集中暴露/開放一個 Service 以使得中樞叢集內的客戶端可以訪問的特性,即使是橫跨 VPC 可以流暢進行暴露。原本所有的流量是被定向路由到了各個託管叢集的 Kube-Apiserver 上面,這一定程度上增加了執行 master 相關元件的節點的壓力。現在 Cluster-Proxy 的外掛守護容器支援了可以通過指定某個叢集的某個目標服務,以使得流量的負載均衡得到了些優化,同時向中樞叢集暴露服務的粒度調整也更加靈活。

支援通用化外掛配置

對於某些希望可配置化的 OCM 外掛,我們提供了一些新的外掛 API 可擴充套件性來支援使用者提供定製外掛的配置引用資訊,同時在外掛框架中,我們也支援了在發現對應配置發生變化時,可以即時觸發外掛相關的資源的重新部署下發。

其他更新

除了以上三點的主要進展之外,這個版本也在 OCM 本身的多版本支援上取得了一些進展,同時我們也更新了 ClusterSet 以及 Placement API 的定義:

  • 升級 ManagedClusterSet API 到 v1beta2 版本:更新了 ClusterSet API 並且漸漸下線移除了一些歷史的資源,同時我們也提供了存量資料到 v1beta2 版本的向後相容性。

  • 提升了 Placement API 的狀態反饋:為 Placement API 提供了更多狀態型別和錯誤型別來描述場景,尤其是當用戶需要診斷排查問題的時候。

  • 新增了使用者場景指導在 OCM 的社群倉庫中:分享了更多現實中的 OCM 使用場景以及進一步展示瞭如何橫跨多個叢集部署應用,以及如何操作 OCM 的核心功能。

接下來還有什麼?

接下來的 OCM 版本中會側重於如何更好地和 Kubernetes 相關的官方社群標準整合,以使得從 Kubernetes 社群來到 OCM 社群貢獻的體驗更加友好,同時也我們也在致力於如何將 OCM 現有的功能使用到其他邊緣場景中。

OCM 控制平面的獨立部署

作為向 OCM 邊緣場景落地的一部分投入,我們已經做出了一個初步版本的實現以支援將 OCM 整體編譯成一個二進位制檔案簡易執行(在這裡由@ycyaoxdu展示)。在下一個版本中,我們計劃進一步完善這些概念,包括在 OCM 的中樞叢集中甚至遮蔽刪除掉 Pod,Node 等主叢集本身的資源相關API。

基於 Pull 模式的 ArgoCD 整合

在之前的 OCM 版本中,中樞叢集上的 ArgoCD 的控制器負責直接與託管叢集進行 API 互動以維持應用相關的資源達到預期的狀態。但這繞過了 OCM 裡中樞叢集和託管叢集之間的安全通訊管道,同時將託管叢集內部的狀態檢查以及更新等等的任務成本轉移到了中樞叢集上面。我們計劃引入一個新的 MultiClusterApplicationSet API 資源,來聚合 ArgoCD 的應用模版並複用OCM的通訊管道下發到各個託管叢集中,之後部署在各個託管叢集上的 ArgoCD 代理控制器就可以在叢集內部進行狀態維護了。

Placement 擴散策略 + 拓撲感知的排程

當我們橫跨多雲/異構叢集管理應用時,有些使用者的場景需要指定某種型別的 Kubernetes 叢集來進行工作負載的下發。根據場景我們提煉出了三種多叢集部署的排程語義:叢集親和性,叢集反親和性和擴散。這些功能可以幫助我們指定我們傾向於將某些資源部署到某些期望的叢集上,哪些不期望的叢集上等等。

感知代理的中樞和託管叢集網路通訊

在多叢集的架構中,有些隔離託管叢集只能通過一個代理進行訪問,這往往需要我們除了證書之外進行大量的配置工作圍繞網路代理。通過以註冊令牌作為 CSR 的替代品,OCM 可以靈活接管並且維護更大範圍的叢集配置了。

感謝貢獻者

開源社群軟體的美好存在於體驗的多樣性和貢獻者們對貢獻的嚮往。OCM 招攬了超過 70 名貢獻者來自超過 15 個不同的公司。像在我們的專案中,每個社群成員都可以扮演一個重要角色在軟體的成長與發展中,不僅僅可以是在社群的構建中,也可以是在開源的參與過程中。

也就是說,我們很高興歡迎新的貢獻者在過去的 3 個月的開發週期裡持續湧現新的貢獻者:

  • Ian Miller 幫助社群啟動了“Selective Policy Enforment”特性
  • TYTaO 通過使用雜湊功能在 ManifestWork 中實現瞭如何辨別不同的 OCM 資源
  • IlonaShishov 為 OCM 實現了 VSCode 的外掛,包括但並不限於:清理並新增更多的資訊為 Webview UI 工具庫,同時為 ManagedCluster 和 Klusterlet OCM 物件新增了視覺化元件。

當然,一個社群專案離不開持續陪伴使用的人們,這裡是一些使用者的使用例子和他們所屬的公司正在 OCM 社群中探索或者已經運用於他們的多叢集應用管理中:

  • Endre Karlson (@ekarlso) 來自 TietoEvry 正在使用 OCM 管理多個叢集。
  • Dan Gorst (@dgorst) 來自 Expedia Group 正在致力於強化 OCM 叢集註冊過程中第三方身份提供商的相關擴充套件功能。
  • Ivan Farinic 來自 ESET 將 OCM 作為他們的多叢集中樞控制面。

瞭解更多

即將到來的活動

KubeCon (10/24 2022年 - 10/28 2022年)

  • Multicluster Kubernetes Management Made Easy WithOpen ClusterManagement

https://kccncna2022.sched.com/event/182IA/multicluster-kubernetes-management-made-easy-with-open-cluster-management-joshua-packer-red-hat?iframe=yes&w=100%&sidebar=yes&bg=no

  • Open ClusterManagement (Workload distribution with Placement API)

https://kccncna2022.sched.com/event/1Banx/virtual-project-office-hours-open-cluster-management-workload-distribution-with-placement-api?iframe=yes&w=100%&sidebar=yes&bg=no

  • Work APIa Kubernetes SIGs project

https://kccncna2022.sched.com/event/1Baom/virtual-project-office-hours-work-api-a-kubernetes-sigs-project?iframe=yes&w=100%&sidebar=yes&bg=no

如何參與進來

如果對上述的內容感興趣,或者希望進一步參與 OCM 社群的貢獻建設的話,歡迎聯絡我們!

  • 如果有問題? -> Open Cluster Management 來到我們在 K8s Slack 的頻道

https://kubernetes.slack.com/?redir=%2Farchives%2Fopen-cluster-mgmt

  • 提出 Issue 或者程式碼 -> 來到 OCM Organization on Github

https://github.com/open-cluster-management-io

  • 想看到定期的社群進展更新? -> 加入我們的 Gmail Group

https://groups.google.com/g/open-cluster-management

  • 想要線上的會議交流? -> 我們有每週的 Weekly Community Zoom Meetings

https://calendar.google.com/calendar/u/0/[email protected]

如果你不知道從哪裡開始的話,點選此處前往我們的官方網頁來大體感受 OCM 的核心功能,包括它的用例,架構以及所有的資訊!

相關連結

[1] 研發計劃

https://github.com/orgs/open-cluster-management-io/projects/2/views/9

[ 2] 雜湊功能

https://github.com/open-cluster-management-io/work/pull/151

[3] IlonaShishov

https://github.com/IlonaShishov