

 **協助改進此頁面** 

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

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

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

# EKS 的 kro 考量
<a name="kro-considerations"></a>

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

## 何時使用 kro
<a name="_when_to_use_kro"></a>

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

 **當您需要下列項目時，請使用 kro**：
+ 使用簡化APIs 為應用程式團隊建立自助式平台
+ 標準化跨團隊的基礎設施模式 （資料庫 \$1 備份 \$1 監控）
+ 管理資源相依性，並在資源之間傳遞值
+ 建置可隱藏實作複雜性的自訂抽象概念
+ 將多個 ACK 資源組成更高階的建置區塊
+ 為複雜的基礎設施堆疊啟用 GitOps 工作流程

 **以下情況請勿使用 kro**：
+ 管理簡單、獨立的資源 （直接使用 ACK 或 Kubernetes 資源）
+ 您需要動態執行時間邏輯 (kro 是宣告式而非必要）
+ 資源沒有相依性或共用組態

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

## RBAC 模式
<a name="_rbac_patterns"></a>

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

### 平台團隊責任
<a name="_platform_team_responsibilities"></a>

平台團隊會建立和維護定義自訂 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 許可](kro-permissions.md)。

### 應用程式團隊的責任
<a name="_application_team_responsibilities"></a>

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

 **所需的許可**：
+ 建立、更新、刪除自訂資源的執行個體
+ 對其命名空間的讀取存取權
+ 無法存取基礎資源或 RGDs

 **優點**：
+ 團隊使用簡單、高階 APIs
+ 平台團隊控制實作詳細資訊
+ 降低組態錯誤的風險
+ 加快新團隊成員的加入速度

## 與其他 EKS 功能整合
<a name="_integration_with_other_eks_capabilities"></a>

### 編寫 ACK 資源
<a name="_composing_ack_resources"></a>

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

 **常見模式**：
+  **具有儲存體的應用程式**：S3 儲存貯體 \$1 SQS 佇列 \$1 通知組態
+  **資料庫堆疊**：RDS 執行個體 \$1 參數群組 \$1 安全群組 \$1 Secrets Manager 秘密
+  **網路**：VPC \$1 子網路 \$1 路由表 \$1 安全群組 \$1 NAT 閘道
+  **使用儲存體運算**：EC2 執行個體 \$1 EBS 磁碟區 \$1 IAM 執行個體描述檔

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

如需編寫 ACK 資源的範例，請參閱 [ACK 概念](ack-concepts.md)。

### 使用 Argo CD 的 GitOps
<a name="_gitops_with_argo_cd"></a>

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

 **儲存庫組織**：
+  **平台儲存庫**：包含由平台團隊管理的 ResourceGraphDefinitions 
+  **應用程式儲存庫**：包含應用程式團隊管理的自訂資源執行個體
+  **共用儲存庫**：包含小型組織的 RGDs 和執行個體

 **考量：**
+ 在執行個體之前部署 RGDs(Argo CD 同步波可協助您）
+ 為平台和應用程式團隊使用單獨的 Argo CD 專案
+ 平台團隊控制 RGD 儲存庫存取
+ 應用程式團隊具有 RGD 定義的唯讀存取權

如需 Argo CD 的詳細資訊，請參閱[使用 Argo CD](working-with-argocd.md)。

## 組織 ResourceGraphDefinitions
<a name="_organizing_resourcegraphdefinitions"></a>

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

 **依用途**：
+  **基礎設施**：資料庫堆疊、聯網、儲存
+  **應用程式**：Web 應用程式、APIs、批次任務
+  **平台**：共用服務、監控、記錄

 **根據複雜性**：
+  **簡單**：2-3 個具有最少相依性的 資源
+  **中等**：具有某些相依性的 5-10 個資源
+  **複雜**：超過 10 個具有複雜相依性的資源

 **命名慣例**：
+ 使用描述性名稱：`webapp-with-database`、 `s3-notification-queue`
+ 在名稱中包含版本以進行重大變更： `webapp-v2`
+ 對相關 RGDs 使用一致的字首：`platform- `、 `app-`

 **命名空間策略**：
+ RGDs是叢集範圍 （非命名空間）
+ 執行個體為命名空間
+ 在 RGDs 中使用命名空間選擇器來控制可以建立執行個體的位置

## 版本控制和更新
<a name="_versioning_and_updates"></a>

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

 **RGD 更新**：
+  **非重大變更**：就地更新 RGD （新增選用欄位、使用 includeWhen 的新資源）
+  **重大變更**：使用不同名稱建立新的 RGD (webapp-v2)
+  **棄用**：使用註釋標記舊 RGDs、傳達遷移時間表

 **執行個體遷移**：
+ 使用更新的 RGD 建立新的執行個體
+ 驗證新執行個體是否正常運作
+ 刪除舊執行個體
+ kro 會自動處理基礎資源更新

 **最佳實務**：
+ 先測試非生產環境中的 RGD 變更
+ 在 RGD 名稱中使用語意版本控制進行主要變更
+ 文件重大變更和遷移路徑
+ 為應用程式團隊提供遷移範例

## 驗證和測試
<a name="_validation_and_testing"></a>

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

 **驗證策略**：
+  **結構描述驗證**：kro 會自動驗證 RGD 結構
+  **乾執行執行個體**：在開發命名空間中建立測試執行個體
+  **整合測試**：確認編寫的資源可一起運作
+  **政策強制執行**：使用許可控制器強制執行組織標準

 **要測試的常見問題**：
+ 資源相依性和排序
+ 在資源之間傳遞的值 (CEL 表達式）
+ 條件式資源包含 (includeWhen)
+ 基礎資源的狀態傳播
+ 執行個體建立的 RBAC 許可

## 上游文件
<a name="_upstream_documentation"></a>

如需使用 kro 的詳細資訊：
+  [kro 入門](https://kro.run/docs/guides/getting-started) - 建立 ResourceGraphDefinitions
+  [CEL 表達式](https://kro.run/docs/concepts/cel) - 撰寫 CEL 表達式
+  [kro Guides](https://kro.run/docs/guides/) - 進階合成模式
+  [故障診斷](https://kro.run/docs/troubleshooting) - 故障診斷和偵錯

## 後續步驟
<a name="_next_steps"></a>
+  [設定 kro 許可](kro-permissions.md) - 為平台和應用程式團隊設定 RBAC
+  [kro 概念](kro-concepts.md) - 了解 kro 概念和資源生命週期
+  [對 kro 功能的問題進行故障診斷](kro-troubleshooting.md) - 對 kro 問題進行故障診斷
+  [ACK 概念](ack-concepts.md) - 了解用於合成的 ACK 資源
+  [使用 Argo CD](working-with-argocd.md) - 使用 GitOps 部署 RGDs 和執行個體