캐퍼빌리티 Kubernetes 리소스

캐퍼빌리티 Kubernetes 리소스

클러스터에서 캐퍼빌리티를 활성화한 후, Kubernetes 커스텀 리소스를 생성하고 관리하며 각 캐퍼빌리티와 상호작용하는 방법을 설명합니다.

출처: 문서

본문

클러스터에서 캐퍼빌리티를 활성화하면, 대부분 클러스터에서 Kubernetes 커스텀 리소스를 생성하고 관리하는 방식으로 캐퍼빌리티와 상호작용하게 됩니다. 각 캐퍼빌리티는 Kubernetes API를 캐퍼빌리티별 기능으로 확장하는 자체 커스텀 리소스 정의(CRD) 집합을 제공합니다.

Argo CD 리소스

Argo CD 캐퍼빌리티를 활성화하면 다음 Kubernetes 리소스를 생성하고 관리할 수 있습니다.

  • Application - Git 리포지토리의 배포를 대상 클러스터에 정의합니다. Application 리소스는 소스 리포지토리, 대상 네임스페이스, 동기화(sync) 정책을 지정합니다. Argo CD 캐퍼빌리티 인스턴스당 최대 3,000개의 Application 리소스를 생성할 수 있습니다.
  • ApplicationSet - 템플릿에서 여러 Application 리소스를 생성해 멀티 클러스터 및 멀티 환경 배포를 지원합니다. ApplicationSet 리소스는 제너레이터를 사용해 클러스터 목록, Git 디렉터리 또는 다른 소스를 기반으로 Application 리소스를 동적으로 생성합니다.
  • AppProject - Application 리소스에 논리적 그룹화와 접근 제어를 제공합니다. AppProject 리소스는 Application 리소스가 사용할 리포지토리, 클러스터, 네임스페이스를 정의해 멀티 테넌시와 보안 경계를 가능하게 합니다.

Application 리소스 예시:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/org/repo
    targetRevision: main
    path: manifests
  destination:
    server: https://kubernetes.default.svc
    namespace: production

Argo CD 리소스와 개념에 대한 자세한 내용은 Argo CD 개념을 참고하세요.

kro 리소스

kro 캐퍼빌리티를 활성화하면 다음 Kubernetes 리소스를 생성하고 관리할 수 있습니다.

  • ResourceGraphDefinition (RGD) - 여러 Kubernetes 및 AWS 리소스를 더 높은 수준의 추상화로 구성하는 커스텀 API를 정의합니다. 플랫폼 팀은 가드레일이 포함된 재사용 가능한 패턴을 제공하기 위해 ResourceGraphDefinition 리소스를 만듭니다.
  • 커스텀 리소스 인스턴스 - ResourceGraphDefinition 리소스를 만든 후, 해당 ResourceGraphDefinition이 정의한 커스텀 API의 인스턴스를 생성할 수 있습니다. kro는 ResourceGraphDefinition에 지정된 리소스를 자동으로 생성하고 관리합니다.

ResourceGraphDefinition 리소스 예시:

apiVersion: kro.run/v1alpha1
kind: ResourceGraphDefinition
metadata:
  name: web-application
spec:
  schema:
    apiVersion: v1alpha1
    kind: WebApplication
    spec:
      name: string
      replicas: integer
  resources:
    - id: deployment
      template:
        apiVersion: apps/v1
        kind: Deployment
        # ... deployment spec
    - id: service
      template:
        apiVersion: v1
        kind: Service
        # ... service spec

WebApplication 인스턴스 예시:

apiVersion: v1alpha1
kind: WebApplication
metadata:
  name: my-web-app
  namespace: default
spec:
  name: my-web-app
  replicas: 3

이 인스턴스를 적용하면 kro가 ResourceGraphDefinition에 정의된 Deployment와 Service 리소스를 자동으로 생성합니다. kro 리소스와 개념에 대한 자세한 내용은 kro 개념을 참고하세요.

ACK 리소스

ACK 캐퍼빌리티를 활성화하면 Kubernetes 커스텀 리소스를 사용해 AWS 리소스를 생성하고 관리할 수 있습니다. ACK는 50개 이상의 AWS 서비스에 대해 200개가 넘는 CRD를 제공하므로, Kubernetes 워크로드와 함께 AWS 리소스를 정의하고 전용 AWS 인프라 리소스를 Kubernetes로 관리할 수 있습니다.

ACK 리소스 예시:

  • S3 Bucket - Bucket 리소스는 버전 관리, 암호화, 수명 주기 정책과 함께 Amazon S3 버킷을 생성하고 관리합니다.
  • RDS DBInstance - DBInstance 리소스는 자동 백업과 유지 관리 기간과 함께 Amazon RDS 데이터베이스 인스턴스를 프로비저닝하고 관리합니다.
  • DynamoDB Table - Table 리소스는 프로비저닝 또는 온디맨드 용량으로 DynamoDB 테이블을 생성하고 관리합니다.
  • IAM Role - Role 리소스는 AWS 서비스 접근을 위한 신뢰 정책과 권한 정책으로 IAM 역할을 정의합니다.
  • Lambda Function - Function 리소스는 코드, 런타임, 실행 역할 구성과 함께 Lambda 함수를 생성하고 관리합니다.

Bucket 리소스 스펙 예시:

apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-app-bucket
spec:
  name: my-unique-bucket-name-12345
  versioning:
    status: Enabled
  encryption:
    rules:
      - applyServerSideEncryptionByDefault:
          sseAlgorithm: AES256

ACK 리소스와 개념에 대한 자세한 내용은 ACK 개념을 참고하세요.

리소스 제한

EKS 캐퍼빌리티에는 다음과 같은 리소스 제한이 있습니다.

Argo CD 사용 제한:

  • Argo CD 캐퍼빌리티 인스턴스당 최대 3,000개의 Application 리소스
  • Argo CD 캐퍼빌리티 인스턴스당 최대 100개의 원격 클러스터

리소스 구성 제한:

  • Argo CD의 Application 리소스당 최대 150개의 Kubernetes 리소스
  • kro의 ResourceGraphDefinition당 최대 64개의 Kubernetes 리소스

참고

이 제한은 각 캐퍼빌리티 인스턴스가 관리하는 리소스 수에 적용됩니다. 더 높은 제한이 필요하면 여러 클러스터에 캐퍼빌리티를 배포할 수 있습니다.

다음 단계

캐퍼빌리티별 작업과 고급 구성은 다음 항목을 참고하세요.

  • ACK 개념 - ACK 개념과 리소스 수명 주기 이해하기
  • Argo CD 사용하기 - GitOps 워크플로를 위한 Argo CD 캐퍼빌리티 사용하기
  • kro 개념 - kro 개념과 리소스 구성 이해하기

더 알아보기 (Learn more)