本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

Kubernetes 中的策略現狀

Kubernetes對行業的影響顯著增長;伴隨快速增長,我們開始看到各元件在如何定義和應用策略方面出現差異。

目前,策略相關元件可以在身份服務、網路服務、儲存服務、多叢集聯邦、RBAC 和許多其他領域中找到,它們具有不同程度的成熟度,並且針對特定問題有不同的動機。在每個元件中,有些策略是可擴充套件的,而另一些則不是。每個專案用於表達意圖的語言因原始作者和經驗而異。在整個領域內推動一致的策略檢視是一項艱鉅的任務。

在受監管行業中採用Kubernetes也將推動確保部署的叢集符合各種法律要求,例如 PCI、HIPPA 或 GDPR。這些合規標準都對使用者資訊、資料和隔離 enforced 了特定級別的隱私。

當前 Kubernetes 策略實現的核心問題如下:

  • 缺乏平臺整體檢視
  • 不同策略元件之間缺乏協調和通用語言
  • 缺乏建立可擴充套件策略的平臺一致性。
    • 有些領域,策略元件是可擴充套件的;也有一些領域,嚴格的端到端解決方案被強制執行。對於可擴充套件和可插拔架構的偏好尚未達成共識。
  • Kubernetes 架構中,對已建立、修改或停用策略以及代表已應用策略執行的操作,缺乏一致的可審計性。

組建 Kubernetes 策略工作組

我們已經成立了一個新的工作組,以直接解決這些問題。我們打算提供一個整體架構,描述 Kubernetes 中當前與策略相關的實現以及未來與策略相關的提案。透過協作方法,我們希望向開發人員和終端使用者呈現 Kubernetes 中策略的通用檢視。

我們並非旨在重新定義和取代經過充分討論和共識達成的現有實現。而是要對現有實現進行總結性審查,並解決差距,以應對我們初始設計提案中定義的廣泛端到端場景。

Kubernetes 策略工作組一直專注於設計提案文件,並利用每週會議進行工作組成員之間的討論。設計提案概述了我們成立工作組的背景和動機,從中推匯出差距/需求分析的具體用例,以及整體架構和容器策略介面提案。

Kubernetes 中的關鍵策略場景

在工作組集思廣益的幾個用例中,最終有三個主要場景脫穎而出。

第一個是關於立法/法規合規性,要求 Kubernetes 叢集符合。合規場景以 GDPR 為立法示例,討論中建議的策略架構是設定一個負責審計的資料策略控制器。

第二個場景是關於容量租用,或傳統 IaaS 概念中的多租戶配額,它處理當大型企業想要將其資源控制委託給其各種業務線時,Kubernetes 叢集應如何配置以擁有一個策略驅動機制來強制執行配額系統。多租戶工作組中正在進行的多租戶控制器設計可能是配額策略控制器的理想執行點,而該控制器反過來可能會從 kube-arbitrator 中汲取靈感。

最後一個場景是關於叢集策略,它指的是一般的安全和資源導向的策略控制。叢集策略將涉及叢集級別和名稱空間級別的策略控制以及執行,並且策略工作組成員正在開發一個名為 Kubernetes 安全配置檔案 的提案,以提供此用例的 PoC。

Kubernetes 策略架構

基於這三個場景,工作組目前正與 sig-arch、sig-auth 和其他相關專案一起制定三個具體提案。除了針對叢集策略用例的 Kubernetes 安全配置檔案提案外,我們還有部分針對容量租用用例的排程策略提案,以及處理基於服務需求和路由級別強制執行的親和性的拓撲服務策略提案。

當這些具體提案變得更清晰時,工作組將能夠提供一個高級別的 Kubernetes 策略架構,作為策略工作組成立動機的一部分。

邁向雲原生策略驅動架構

策略無疑超越了 Kubernetes,適用於更廣泛的雲原生環境。我們在 Kubernetes 策略工作組的工作將為構建 CNCF 範圍內的策略架構奠定基礎,並整合 Kubernetes 和各種其他雲原生元件,如開放策略代理(Open Policy Agent)、Istio、Envoy、SPIFEE/SPIRE 等。策略工作組已經與 CNCF SAFE WG(正在組建中)團隊合作,並將致力於更多的協作,以確保社群驅動的雲原生策略架構設計。