協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 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-database、s3-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 的詳細資訊:
-
kro 入門
- 建立 ResourceGraphDefinitions -
CEL 表達式
- 撰寫 CEL 表達式 -
kro Guides
- 進階合成模式 -
故障診斷
- 故障診斷和偵錯
後續步驟
-
設定 kro 許可 - 為平台和應用程式團隊設定 RBAC
-
kro 概念 - 了解 kro 概念和資源生命週期
-
對 kro 功能的問題進行故障診斷 - 對 kro 問題進行故障診斷
-
ACK 概念 - 了解用於合成的 ACK 資源
-
使用 Argo CD - 使用 GitOps 部署 RGDs 和執行個體