Skip to content

[FEATURE] AWS k8s(EKS) 리소스 연동 #178

@moonhyeonmin

Description

@moonhyeonmin

📋 개요

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/

    • EksManagementPort
    • EksDiscoveryPort
  • domain/cloud/service/eks/

    • EksPortRouter
    • EksUseCaseService
  • domain/cloud/controller/

    • EksController – EKS 관련 REST API 엔드포인트
  • 공통 설정

    • config/AwsEksConfig
      • EksClient 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 등)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions