

 **協助改進此頁面** 

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

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

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

# 資源合成與 kro (Kube Resource Orchestrator)
<a name="kro"></a>

 **kro (Kube Resource Orchestrator)** 是一種開放原始碼的 Kubernetes 原生專案，可讓您使用簡單且直接的組態來定義自訂 Kubernetes APIs。使用 kro，您可以輕鬆設定新的自訂 APIs，以建立一組 Kubernetes 物件及其之間的邏輯操作。

透過 EKS 功能，kro 完全由 管理 AWS，無需在叢集上安裝、維護和擴展 kro 控制器。

## kro 的運作方式
<a name="_how_kro_works"></a>

kro 推出稱為 (RGD) 的自訂資源定義 `ResourceGraphDefinition`(CRD)，可簡單且簡化地建立自訂 Kubernetes APIs。當您建立 時`ResourceGraphDefinition`，kro 會使用原生 Kubernetes 延伸模組來建立和管理叢集中的新 APIs。從這個單一資源規格中，kro 會根據您的規格為您建立新的 CRD 並註冊，並調整以管理新定義的自訂資源。

RGDs可以包含多個資源，而 kro 會判斷相互依存性和資源排序，因此您不需要。您可以使用簡單的語法，將組態從一個資源注入到另一個資源，大幅簡化合成並消除叢集中對「黏附」運算子的需求。透過 kro，您的自訂資源可以包含原生 Kubernetes 資源，以及叢集中安裝的任何自訂資源定義 (CRDs)。

kro 支援單一主要資源類型：
+  **ResourceGraphDefinition (RGD)**：定義 Kubernetes 自訂資源，封裝一或多個基礎原生或自訂 Kubernetes 資源

除了此資源之外，kro 還將建立和管理使用它建立的自訂資源的生命週期，以及其所有元件資源。

kro 與 AWS Controllers for Kubernetes (ACK) 無縫整合，可讓您使用 AWS 資源編寫工作負載資源，以建立更高階的抽象概念。這可讓您建立自己的雲端建置區塊，簡化資源管理，並根據組織標準，使用預設和不可變的組態設定啟用可重複使用的模式。

## kro 的優點
<a name="_benefits_of_kro"></a>

kro 可讓平台團隊建立自訂 Kubernetes APIs，將多個資源組成更高階的抽象概念。這可讓開發人員使用簡單、標準化和版本控制的自訂資源來部署複雜的應用程式，進而簡化資源管理。您可以定義常用資源組合的可重複使用模式，讓整個組織建立一致的資源。

kro 在 [Kubernetes 中使用通用表達式語言 (CEL)](https://kubernetes.io/docs/reference/using-api/cel/)，在資源之間傳遞值並整合條件式邏輯，提供資源合成的彈性。您可以將 ACK 管理的 Kubernetes AWS 資源和資源組成為統一APIs，以啟用完整的應用程式和基礎設施定義。

kro 透過 Kubernetes 資訊清單支援宣告式組態，讓 GitOps 工作流程和基礎設施成為與現有開發程序無縫整合的程式碼實務。作為 EKS 受管功能的一部分，kro 由 完全管理 AWS，無需在叢集上安裝、設定和維護 kro 控制器。

 **範例：建立 ResourceGraphDefinition** 

下列範例顯示使用 部署和服務建立 Web 應用程式的簡單 `ResourceGraphDefinition` ：

```
apiVersion: kro.run/v1alpha1
kind: ResourceGraphDefinition
metadata:
  name: web-application
spec:
  schema:
    apiVersion: v1alpha1
    kind: WebApplication
    spec:
      name: string
      replicas: integer | default=3
  resources:
    - id: deployment
      template:
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: ${schema.spec.name}
        spec:
          replicas: ${schema.spec.replicas}
    - id: service
      template:
        apiVersion: v1
        kind: Service
        metadata:
          name: ${schema.spec.name}
```

當使用者建立`WebApplication`自訂資源的執行個體時，kro 會自動建立對應的部署和服務資源，並管理其生命週期與自訂資源。

## 與其他 EKS 受管功能的整合
<a name="_integration_with_other_eks_managed_capabilities"></a>

kro 與其他 EKS 受管功能整合。
+  ** AWS Kubernetes (ACK) 的控制器**：使用 kro 將 ACK 資源編寫為更高層級的抽象，簡化 AWS 資源管理。
+  **Argo CD**：使用 Argo CD 管理跨多個叢集的 kro 自訂資源部署，為您的平台建置區塊和應用程式堆疊啟用 GitOps 工作流程。

## kro 入門
<a name="_getting_started_with_kro"></a>

若要開始使用 kro 的 EKS 功能：

1.  透過 AWS 主控台、 AWS CLI 或您偏好的基礎設施做為程式碼工具，在您的 EKS 叢集上[建立 kro 功能資源](create-kro-capability.md)。

1. 建立 ResourceGraphDefinitions (RGDs)，以定義您的自訂 APIs和資源組成。

1. 套用自訂資源的執行個體，以佈建和管理基礎 Kubernetes AWS 和資源。