Kube Resource Orchestrator(kro)를 사용하는 리소스 구성 - Amazon EKS

이 페이지 개선에 도움 주기

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

Kube Resource Orchestrator(kro)를 사용하는 리소스 구성

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

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

kro 작동 방식

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의 이점

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

kro는 여러 리소스 사이에서 값을 전달하고 조건부 로직을 통합하기 위해 Kubernetes의 공통 표현식 언어(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 관리형 기능과 통합

kro는 다른 EKS 관리형 기능과 통합됩니다.

  • AWS Controllers for Kubernetes(ACK): kro를 통해 ACK 리소스를 상위 수준의 추상화로 구성하여 AWS 리소스 관리를 단순화합니다.

  • Argo CD: Argo CD를 사용하여 여러 클러스터에서 kro 사용자 지정 리소스 배포를 관리하여 플랫폼 구성 요소 및 애플리케이션 스택에 대한 GitOps 워크플로를 지원합니다.

kro 시작하기

kro의 EKS 기능을 시작하는 방법:

  1. AWS 콘솔, AWS CLI 또는 기본 코드형 인프라를 통해 EKS 클러스터에서 kro 기능 리소스를 생성하세요.

  2. 사용자 지정 API 및 리소스 구성을 정의하는 ResourceGraphDefinitions(RGDs)를 생성하세요.

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