EKS 的 kro 考量 - Amazon EKS

協助改進此頁面

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

EKS 的 kro 考量

本主題涵蓋使用 kro 的 EKS 功能的重要考量,包括何時使用資源合成、RBAC 模式,以及與其他 EKS 功能的整合。

何時使用 kro

kro 旨在建立可重複使用的基礎設施模式和自訂 APIs,以簡化複雜的資源管理。

當您需要下列項目時,請使用 kro

  • 使用簡化APIs 為應用程式團隊建立自助式平台

  • 標準化跨團隊的基礎設施模式 (資料庫 + 備份 + 監控)

  • 管理資源相依性,並在資源之間傳遞值

  • 建置可隱藏實作複雜性的自訂抽象概念

  • 將多個 ACK 資源組成更高階的建置區塊

  • 為複雜的基礎設施堆疊啟用 GitOps 工作流程

以下情況請勿使用 kro

  • 管理簡單、獨立的資源 (直接使用 ACK 或 Kubernetes 資源)

  • 您需要動態執行時間邏輯 (kro 是宣告式而非必要)

  • 資源沒有相依性或共用組態

kro 擅長建立「鋪設路徑」 - 有意見且可重複使用的模式,可讓團隊輕鬆正確部署複雜的基礎設施。

RBAC 模式

kro 可讓建立 ResourceGraphDefinitions 的平台團隊和建立執行個體的應用程式團隊之間分離疑慮。

平台團隊責任

平台團隊會建立和維護定義自訂 APIs ResourceGraphDefinitions (RGDs)。

所需的許可

  • 建立、更新、刪除 ResourceGraphDefinitions

  • 管理基礎資源類型 (部署、服務、ACK 資源)

  • 存取將使用 RGDs的所有命名空間

平台團隊的範例 ClusterRole

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: platform-kro-admin rules: - apiGroups: ["kro.run"] resources: ["resourcegraphdefinitions"] verbs: ["*"] - apiGroups: ["*"] resources: ["*"] verbs: ["get", "list", "watch"]

如需詳細 RBAC 組態,請參閱 設定 kro 許可

應用程式團隊的責任

應用程式團隊會建立 RGDs定義的自訂資源執行個體,而不需要了解基礎複雜性。

所需的許可

  • 建立、更新、刪除自訂資源的執行個體

  • 對其命名空間的讀取存取權

  • 無法存取基礎資源或 RGDs

優點

  • 團隊使用簡單、高階 APIs

  • 平台團隊控制實作詳細資訊

  • 降低組態錯誤的風險

  • 加快新團隊成員的加入速度

與其他 EKS 功能整合

編寫 ACK 資源

與 ACK 結合以建立基礎設施模式時,kro 特別強大。

常見模式

  • 具有儲存體的應用程式:S3 儲存貯體 + SQS 佇列 + 通知組態

  • 資料庫堆疊:RDS 執行個體 + 參數群組 + 安全群組 + Secrets Manager 秘密

  • 網路:VPC + 子網路 + 路由表 + 安全群組 + NAT 閘道

  • 使用儲存體運算:EC2 執行個體 + EBS 磁碟區 + IAM 執行個體描述檔

kro 會處理相依性排序、在資源之間傳遞值 (例如 ARNs 和連線字串),並以單一單位管理完整生命週期。

如需編寫 ACK 資源的範例,請參閱 ACK 概念

使用 Argo CD 的 GitOps

使用適用於 Argo CD 的 EKS 功能,從 Git 儲存庫部署 RGDs 和執行個體。

儲存庫組織

  • 平台儲存庫:包含由平台團隊管理的 ResourceGraphDefinitions

  • 應用程式儲存庫:包含應用程式團隊管理的自訂資源執行個體

  • 共用儲存庫:包含小型組織的 RGDs 和執行個體

考量:

  • 在執行個體之前部署 RGDs(Argo CD 同步波可協助您)

  • 為平台和應用程式團隊使用單獨的 Argo CD 專案

  • 平台團隊控制 RGD 儲存庫存取

  • 應用程式團隊具有 RGD 定義的唯讀存取權

如需 Argo CD 的詳細資訊,請參閱使用 Argo CD

組織 ResourceGraphDefinitions

依用途、複雜性和擁有權來組織 RGDs。

依用途

  • 基礎設施:資料庫堆疊、聯網、儲存

  • 應用程式:Web 應用程式、APIs、批次任務

  • 平台:共用服務、監控、記錄

根據複雜性

  • 簡單:2-3 個具有最少相依性的 資源

  • 中等:具有某些相依性的 5-10 個資源

  • 複雜:超過 10 個具有複雜相依性的資源

命名慣例

  • 使用描述性名稱:webapp-with-databases3-notification-queue

  • 在名稱中包含版本以進行重大變更: webapp-v2

  • 對相關 RGDs 使用一致的字首:platform- app-

命名空間策略

  • RGDs是叢集範圍 (非命名空間)

  • 執行個體為命名空間

  • 在 RGDs 中使用命名空間選擇器來控制可以建立執行個體的位置

版本控制和更新

規劃 RGD 演變和執行個體遷移。

RGD 更新

  • 非重大變更:就地更新 RGD (新增選用欄位、使用 includeWhen 的新資源)

  • 重大變更:使用不同名稱建立新的 RGD (webapp-v2)

  • 棄用:使用註釋標記舊 RGDs、傳達遷移時間表

執行個體遷移

  • 使用更新的 RGD 建立新的執行個體

  • 驗證新執行個體是否正常運作

  • 刪除舊執行個體

  • kro 會自動處理基礎資源更新

最佳實務

  • 先測試非生產環境中的 RGD 變更

  • 在 RGD 名稱中使用語意版本控制進行主要變更

  • 文件重大變更和遷移路徑

  • 為應用程式團隊提供遷移範例

驗證和測試

在部署到生產環境之前驗證 RGDs。

驗證策略

  • 結構描述驗證:kro 會自動驗證 RGD 結構

  • 乾執行執行個體:在開發命名空間中建立測試執行個體

  • 整合測試:確認編寫的資源可一起運作

  • 政策強制執行:使用許可控制器強制執行組織標準

要測試的常見問題

  • 資源相依性和排序

  • 在資源之間傳遞的值 (CEL 表達式)

  • 條件式資源包含 (includeWhen)

  • 基礎資源的狀態傳播

  • 執行個體建立的 RBAC 許可

上游文件

如需使用 kro 的詳細資訊:

後續步驟