캐퍼빌리티 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 개념과 리소스 구성 이해하기