-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
📋 개요
AgenticCP에서 AWS EKS 클러스터 및 노드 그룹을 관리할 수 있도록 연동합니다.
상위 기획 이슈: #170
멀티클라우드 환경에서 Kubernetes 기반 컨테이너 오케스트레이션을 관리하는 것이 목표입니다.
🎯 목표
- EKS 클러스터의 생성/조회/수정/삭제 기능 지원
- 노드 그룹(Node Group) 기본 관리
- 클러스터 상태/버전/엔드포인트 조회
- 태그 기반 관리
- (선택) Kubernetes API 연동은 별도 하위 이슈로 분리
🧩 기능 요구사항
-
클러스터 생명주기
- CreateCluster / DescribeCluster / UpdateClusterVersion / DeleteCluster
- VPC/Subnet/Security Group 등은 이미 연동된 리소스와 연계 (참조 ID 기반)
-
노드 그룹 관리 (1단계 – 최소 범위)
- Managed Node Group 생성/삭제
- 상태 조회
-
클러스터 운영
- 상태, 버전, 엔드포인트, 인증 정보 조회
- 로깅 설정은 P1 이후 범위로 분리 가능
-
Kubernetes API (선택적)
io.kubernetes:client-java기반 클러스터 내부 리소스 조회/조작은 별도 이슈에서 진행
🏗️ 아키텍처 / 패턴
상위 이슈 #170에서 정의한 공통 패턴을 따릅니다.
-
domain/cloud/adapter/outbound/aws/eks/AwsEksManagementAdapter– 클러스터/노드 그룹 생명주기AwsEksDiscoveryAdapter– 클러스터/노드 그룹 조회AwsEksMapper– 도메인 <-> AWS SDK 모델 매핑AwsEksErrorTranslator(선택)
-
domain/cloud/port/outbound/eks/EksManagementPortEksDiscoveryPort
-
domain/cloud/service/eks/EksPortRouterEksUseCaseService
-
domain/cloud/controller/EksController– EKS 관련 REST API 엔드포인트
-
공통 설정
config/AwsEksConfigEksClient eksClient()EksClient createEksClient(CloudSessionCredential session, String region)
-
Capability 등록
AwsCapabilityConfig.initializeEksCapabilities()ProviderType.AWS, Service:"EKS", Resource:"Cluster"
🔧 기술 스택
- AWS SDK for Java v2
software.amazon.awssdk.services.eks.EksClient- 주요 API:
CreateCluster,DescribeCluster,UpdateClusterVersion,DeleteCluster
- (선택) Kubernetes Java Client
io.kubernetes:client-java(추후 별도 이슈에서 사용)
✅ 체크리스트
- EKS 도메인 모델 정의 (Cluster, NodeGroup, Networking, Tag 등)
-
EksManagementPort/EksDiscoveryPort정의 -
AwsEksManagementAdapter/AwsEksDiscoveryAdapter구현 - VPC/EC2 등 기존 연동 리소스와의 참조 관계 설계 (ID/ARN 기반)
- EKS용
AwsEksConfig설정 및 세션 기반 Client 팩토리 구현 - Capability 등록 (
AwsCapabilityConfig) -
EksUseCaseService/EksController기본 플로우 구현 - 비즈니스 예외 규칙에 맞는 에러 변환 처리
- 단위 테스트 및 통합 테스트 작성
- API 문서화 (Swagger/RestDocs 등)