

 **이 페이지 개선에 도움 주기** 

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 **GitHub에서 이 페이지 편집** 링크를 선택합니다.

# Kube Resource Orchestrator(kro)를 사용하는 리소스 구성
<a name="kro"></a>

 **Kube Resource Orchestrator(kro)**는 직관적이고 단순한 구성을 사용하여 사용자 지정 Kubernetes API를 정의할 수 있는 오픈 소스 Kubernetes 네이티브 프로젝트입니다. kro를 사용하면 Kubernetes 객체 그룹과 이들 사이의 논리적 작업을 생성하는 새 사용자 지정 API를 쉽게 구성할 수 있습니다.

EKS 기능을 사용하면 kro는 AWS에서 완전하게 관리되므로 클러스터에서 kro 컨트롤러를 설치, 유지 관리 및 조정할 필요가 없습니다.

## kro 작동 방식
<a name="_how_kro_works"></a>

kro는 사용자 지정 Kubernetes API의 직관적이고 간단한 생성을 지원하는 `ResourceGraphDefinition`(RGD)이라고 하는 사용자 지정 리소스 정의(CRD)를 도입합니다. `ResourceGraphDefinition`을 생성할 때 kro는 기본 Kubernetes 확장을 사용하여 클러스터에서 새 API를 생성 및 관리합니다. 이 단일 리소스 사양에서 kro는 사양을 기반으로 새 CRD를 생성 및 등록하고 새로 정의된 사용자 지정 리소스를 관리하도록 조정합니다.

RGD에는 여러 리소스가 포함될 수 있으며, kro는 상호 종속성과 리소스 정렬을 결정하므로 사용자가 수행하지 않아도 됩니다. 간단한 구문을 사용하여 한 리소스에서 다른 리소스로 구성을 주입할 수 있으므로 구성을 대폭 단순화하고 클러스터에서 'glue' 연산자가 필요하지 않습니다. kro를 사용하면 사용자 지정 리소스에 기본 Kubernetes 리소스와 클러스터에 설치된 사용자 지정 리소스 정의(CRD)가 포함될 수 있습니다.

kro는 단일 기본 리소스 유형을 지원합니다.
+  **ResourceGraphDefinition(RGD)**: 하나 이상의 기본 네이티브 또는 사용자 지정 Kubernetes 리소스를 캡슐화하여 Kubernetes 사용자 지정 리소스를 정의함

이 리소스 외에도 kro는 여기에서 생성된 사용자 지정 리소스의 수명 주기와 모든 구성 해당 리소스를 생성 및 관리합니다.

kro는 AWS Controllers for Kubernetes(ACK)와 원활하게 통합되어 워크로드 리소스를 AWS 리소스와 함께 구성하여 상위 수준의 추상화를 생성할 수 있습니다. 이를 통해 자체 클라우드 구성 요소를 생성하여 리소스 관리를 단순화하고 조직 표준을 기반으로 기본 및 변경 불가능한 구성 설정을 사용해 재사용 가능한 패턴을 활성화할 수 있습니다.

## kro의 이점
<a name="_benefits_of_kro"></a>

kro를 사용하면 플랫폼 팀이 여러 리소스를 상위 수준 추상화로 구성하는 사용자 지정 Kubernetes API를 생성할 수 있습니다. 그러면 개발자가 표준화되고 버전이 지정된 간단한 사용자 지정 리소스를 사용하여 복잡한 애플리케이션을 배포할 수 있으므로 리소스 관리가 단순화됩니다. 일반적인 리소스 조합에 재사용 가능한 패턴을 정의하여 조직 전체에서 일관된 리소스 생성을 지원합니다.

kro는 여러 리소스 사이에서 값을 전달하고 조건부 로직을 통합하기 위해 [Kubernetes의 공통 표현식 언어(CEL)](https://kubernetes.io/docs/reference/using-api/cel/)를 사용하여 리소스 구성의 유연성을 제공합니다. Kubernetes 리소스와 ACK에서 관리하는 AWS 리소스를 모두 통합된 사용자 지정 API로 구성하여 완전한 애플리케이션 및 인프라 정의를 지원할 수 있습니다.

kro는 Kubernetes 매니페스트를 통해 선언적 구성을 지원하여 GitOps 워크플로 및 인프라를 기존 개발 프로세스와 원활하게 통합하는 코드 사례로 사용할 수 있습니다. EKS 관리형 기능의 일부로 kro는 AWS에서 완전하게 관리되므로 클러스터에 kro 컨트롤러를 설치, 구성 및 유지 관리할 필요가 없습니다.

 **예제: ResourceGraphDefinition 생성** 

다음 예제에서는 배포 및 서비스를 사용하여 웹 애플리케이션을 생성하는 간단한 `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 Controllers for 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. 사용자 지정 API 및 리소스 구성을 정의하는 ResourceGraphDefinitions(RGDs)를 생성하세요.

1. 사용자 지정 리소스의 인스턴스를 적용하여 기본 Kubernetes 및 AWS 리소스를 프로비저닝 및 관리하세요.