Skip to content

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

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 등)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions