本文件介紹最佳做法,說明如何使用組織、專案和 Kubernetes 叢集,設計 Google Distributed Cloud (GDC) 實體隔離方案中工作負載的階層和區隔。這項指引可平衡資源使用效率、工作負載隔離和作業便利性。
設計組織,在客戶之間進行實體和邏輯隔離
Organization 資源是單一客戶擁有的所有資源的根。您可以透過角色繫結和網路政策,定義組織內工作負載之間的精細存取控管。詳情請參閱「身分與存取權管理」。
GDC 可用區中的每個組織都會為運算基礎架構提供實體隔離,並為網路、儲存空間和其他服務提供邏輯隔離。除非明確授予存取權,否則某個機構的使用者無法存取其他機構的資源。根據預設,系統不允許從一個組織連線至另一個組織,除非明確設定允許從一個組織傳出資料,並傳入另一個組織。
定義可共用組織的工作負載範圍
公司情境中的組織範圍,可能會因公司定義信任邊界的方式而有所不同。有些公司可能偏好為公司內的不同實體建立多個組織資源。舉例來說,如果各部門的工作負載需要完全獨立的實體和管理作業,則每個公司部門都可能是 GDC 的獨立客戶,並擁有獨立組織。
一般來說,建議您根據下列信號,將多個工作負載歸入單一組織:
- 工作負載可以共用依附元件。例如共用資料來源、工作負載之間的連線,或共用監控工具。
- 工作負載可以共用管理信任根。同一位管理員可以獲得信任,擁有組織中所有工作負載的特殊存取權。
- 只要有足夠的邏輯區隔,工作負載就能與同一組織中的其他工作負載共用基礎實體基礎架構。
- 同一位預算負責人須對工作負載預算總額負責。如要瞭解如何查看組織的匯總費用,或依工作負載進行精細分析,請參閱「帳單」頁面。
- 工作負載可用性需求必須符合多可用區距離的高可用性需求。
設計專案,在工作負載之間建立邏輯隔離
在機構中,建議您佈建多項專案,以在資源之間建立邏輯區隔。同一組織中的專案可能會共用基礎實體基礎架構,但專案會根據 Identity and Access Management (IAM) 政策和網路政策,以邏輯邊界分隔工作負載。
設計專案邊界時,請考量資源可共用的最大功能組合,例如角色繫結、網路政策或觀測能力需求。將可共用這項功能的資源分組到一個專案,並將無法共用這項功能的資源移至另一個專案。
以 Kubernetes 術語來說,專案是指在組織中所有叢集預留的 Kubernetes 命名空間。雖然命名空間會保留在多個叢集中,但這不代表 Pod 會自動排定在所有叢集中。排定至特定叢集的 Pod 會維持排定至該特定叢集。
下圖顯示如何將角色繫結套用至跨多個叢集的專案。

角色繫結是在專案層級設定,用於定義誰可以對哪些資源類型執行什麼操作。VM 或 Pod 等工作負載會部署至專案,而這些工作負載的存取權則由角色繫結控管。無論部署到哪個叢集,角色繫結都會一致套用至 VM 型工作負載和容器型工作負載。
下圖顯示網路政策如何管理專案之間的存取權。Backend Project、Frontend Project 和 Database Project 之間的專案間通訊功能已停用。不過,各專案內的資源可以相互通訊。

網路政策是在專案層級設定,可選擇性允許資源之間的網路存取。根據預設,單一專案中的所有資源都可以在內部網路上相互通訊,而某個專案中的資源無法與其他專案中的資源通訊。無論資源是否部署至同一個叢集,網路政策都會採取這種行為。
您也可以定義 ProjectNetworkPolicy 自訂資源,啟用專案間通訊。這項政策是針對各項專案定義,允許來自其他專案的輸入流量。下圖說明為 Backend Project 定義的 ProjectNetworkPolicy 自訂資源,可啟用從 Frontend Project 和 Database Project 轉入資料的功能。

此外,監控堆疊會收集整個組織的指標,但您可以在資源階層的不同層級進行篩選和查詢。您可以使用叢集或命名空間等實體查詢指標。
為每個軟體開發環境建立專案
建議您為每個工作負載建立個別專案,用於各個軟體開發環境。軟體開發環境是 GDC 宇宙中的一個區域,用於執行與指定生命週期階段相對應的所有作業。舉例來說,您可以建立測試、開發和正式環境的軟體開發環境。區隔軟體開發環境後,您就能精細定義角色繫結和網路政策,確保在非正式環境專案中進行的變更不會影響正式環境。
在專案中授予資源層級角色繫結
視團隊結構和需求而定,您可以允許開發人員修改所管理專案中的任何資源,也可以要求更精細的存取控管。在專案中,您可以授予精細的角色繫結,讓個別開發人員存取專案中的部分資源,而非所有資源。舉例來說,團隊可能會有資料庫管理員,必須管理資料庫,但不得修改其他資源,而團隊中的軟體開發人員則不得擁有修改資料庫的權限。
設計叢集,以邏輯方式隔離 Kubernetes 作業
Kubernetes 叢集並非硬性租戶邊界,因為角色繫結和網路政策適用於專案,而非 Kubernetes 叢集。Kubernetes 叢集和專案之間為多對多關係。您可能在單一專案中有多個 Kubernetes 叢集,或單一 Kubernetes 叢集跨越多個專案。