AWS 기술 블로그

Amazon EKS MCP 서버를 통한 애플리케이션 개발 가속화

본 게시글은 AWS Containers Blog에 게시된 Accelerating application development with the Amazon EKS MCP server by ramadit을 한국어 번역 및 편집하였습니다.

이 블로그 포스트는 Niall Thomson (컨테이너 수석 솔루션즈 아키텍트), Carlos Santana (컨테이너 솔루션즈 아키텍트), George John (아마존 EKS 시니어 프로덕트 매니저)가 공동으로 작성했습니다.

소개

Amazon Elastic Kubernetes Service(Amazon EKS)를 위한 오픈 소스 Model Context Protocol(MCP) 서버의 출시를 발표하게 되어 기쁩니다. 이 새로운 기능을 통해 Amazon Q Developer CLI, Cline, Cursor와 같은 인공지능(AI) 코드 어시스턴트들이 표준화된 방식으로 EKS 클러스터와 원활하게 상호작용할 수 있게 되었습니다. MCP 서버는 AI 어시스턴트에게 상황별 데이터를 제공하고 EKS 및 쿠버네티스 리소스를 관리할 수 있도록 지원합니다. 그 결과, 개발자들은 이제 전체 개발 수명 주기에 걸쳐 맞춤형 가이드를 받을 수 있게 되어 애플리케이션 개발 프로세스를 간소화하고 가속화할 수 있게 되었습니다.

대규모 언어 모델(Large Language Models, LLMs)은 개발자들의 코드 작성 방식을 혁신적으로 변화시켰으며, 모델 컨텍스트 프로토콜(Model Context Protocol, MCP) 서버와 같은 혁신적인 솔루션을 통해 그 기능이 더욱 향상되고 있습니다. LLM이 학습 데이터를 기반으로 일반적인 코딩 지원을 제공하는 데 탁월한 반면, MCP 서버는 외부 도구와 데이터 소스에 실시간으로 접근할 수 있게 함으로써 그 기능을 확장하며, 특히 쿠버네티스와 같은 복잡한 환경에서 매우 유용합니다.
개방형 표준인 MCP는 LLM이 현재의 맥락적 정보에 접근할 수 있게 하는 표준화된 인터페이스를 생성하여, 특정 애플리케이션 개발 사용 사례를 지원하는 데 있어 더욱 강력하고 정확한 기능을 제공합니다. LLM과 MCP 간의 이러한 시너지는 AI 지원 개발 분야에서 중요한 진전을 나타냅니다.

EKS MCP 서버는 AI 코드 어시스턴트에게 리소스 관리 도구와 Amazon EKS 클러스터에 대한 최신의 문맥적 정보를 제공합니다. 이를 통해 코드 어시스턴트는 초기 설정부터 프로덕션 최적화 및 문제 해결에 이르기까지 애플리케이션 수명 주기 전반에 걸쳐 더욱 정확하고 맞춤화된 가이드를 제공할 수 있습니다. 개발 워크플로우에 EKS MCP 서버를 통합하면 애플리케이션 개발의 다양한 단계에서 상당한 개선을 얻을 수 있습니다. 시작 단계에서는 필요한 모든 전제 조건이 자동으로 생성되고 모범 사례가 적용된 가이드 방식으로 클러스터를 생성 할 수 있습니다. 개발 단계에서는 애플리케이션 배포와 클러스터 관리를 위한 상위 수준의 워크플로우를 제공하고 EKS에 적용할 코드와 매니페스트를 생성함으로써 EKS와 쿠버네티스의 학습 곡선을 낮춥니다. 또한 디버깅과 문제 해결을 위해 EKS MCP 서버는 문제 해결 도구와 지식 기반 접근을 제공하여 이슈 해결을 가속화합니다. 이러한 기능들은 이제 AI 코드 어시스턴트 내에서 자연어 상호작용을 통해 접근할 수 있게 되어, 개발자들이 EKS와 상호작용하는 방식을 변화시키고 복잡한 쿠버네티스 운영을 더욱 직관적이고 효율적으로 만들어줍니다.

주요 기능

EKS MCP 서버는 여러 MCP 도구를 제공하며, 이러한 도구들은 AI 어시스턴트가 API나 지식 기반 도구 같은 외부 시스템과 상호작용하기 위해 호출할 수 있습니다.

다음과 같이 EKS MCP 서버에서 제공하는 도구들은 세 가지 카테고리로 분류될 수 있습니다.

1) 쿠버네티스 리소스 관리: 쿠버네티스 명령어에 의존하지 않고 EKS 클러스터의 쿠버네티스 리소스를 조작하고 관리합니다. 이러한 도구들은 EKS 클러스터에 대한 원활한 인증을 포함하여, kubeconfig 파일을 관리할 필요 없이 여러 클러스터에서 효율적인 작업을 가능하게 합니다.

  • list_k8s_resources – 특정 종류의 쿠버네티스 리소스 목록 조회
  • list_api_versions – 사용 가능한 모든 쿠버네티스 API 버전 목록 조회
  • manage_k8s_resource – 개별 쿠버네티스 리소스 생성, 업데이트 또는 삭제
  • apply_yaml – YAML 객체 적용
  • get_k8s_events – 특정 쿠버네티스 리소스와 관련된 이벤트 조회
  • get_pod_logs – 특정 파드의 로그 조회

1) EKS 클러스터 관리: AWS CloudFormation을 통해 EKS Auto Mode가 지원하는 EKS 클러스터를 편리하게 생성하고 관리합니다.

  • manage_eks_stacks – EKS 클러스터를 위한 CloudFormation 스택 생성, 배포 및 삭제

1) 트러블슈팅: 로그 및 지표와 같은 포괄적인 원격 측정 데이터를 제공하여 트러블슈팅 과정을 간소화합니다. 실시간 클러스터 인사이트와 일반적인 장애 시나리오에 대한 체계적인 트러블슈팅 플레이북을 결합하여 LLM 기능을 향상시킴으로써, 보다 신속하고 정확한 문제 진단 및 해결이 가능합니다.

  • search_eks_troubleshoot_guide – Amazon EKS 기술 자료에서 트러블슈팅 방법 검색
  • get_cloudwatch_logsAmazon CloudWatch에서 파드 또는 EKS 클러스터 컨트롤 플레인의 로그 추출
  • get_cloudwatch_metrics – 컨테이너, 파드, 노드 또는 클러스터에 대한 CloudWatch 지표 추출

추가 도구들이 포함되어 있으니, 자세한 내용은 문서를 참조하시기 바랍니다.

실습

EKS MCP 서버의 기능을 보여주기 위해 다음 섹션에서는 예제 시나리오들을 단계별로 살펴보겠습니다.

워크로드 배포하기

이 섹션에서는 EKS MCP 서버가 Amazon EKS에서 워크로드를 더 빠르게 실행할 수 있도록 하는 방법을 설명합니다. 이를 위해 새로운 애플리케이션을 생성하고 Amazon EKS에 배포할 수 있도록 컨테이너로 패키징합니다. 이 과정에는 코딩이 포함되므로 VS Code용 자율 에이전트인 Cline을 사용할 수 있습니다.

IAM 권한을 포함한 사전 요구 사항을 설치하려면 여기에 있는 EKS MCP 서버 문서를 따르십시오. Cline이 EKS MCP 서버를 사용하도록 구성하려면 여기에 있는 Cline 문서를 따르십시오. cline_mcp_settings.json 파일은 다음 예시와 유사해야 합니다.

설치가 성공적으로 완료되면, 다음 그림과 같이 Cline에 설치된 MCP 서버 목록에서 EKS MCP 서버를 확인할 수 있습니다.

그림 1: Cline에서 EKS MCP 서버 구성

그림 2: Cline에 성공적으로 설치된 MCP

Amazon EKS에 배포할 애플리케이션이 필요하며, 이를 위해 Cline과 구성된 LLM 모델을 사용합니다. 아직은 EKS MCP 서버에 의존할 필요가 없습니다. 다음 프롬프트를 새로운 Cline 작업에 입력하세요:

Bootstrap the current directory with a Node.js application which uses Express to provide 
an API. The application should provide a single path “/demo” which responds with 
the text “Welcome to the Amazon EKS MCP server”. It should also provide a health 
endpoint at “/health” which will be used to perform health checks of the 
application.

Create a Dockerfile which can be used to package this application as a container. 
Use Node.js version 22, which is the current Long-Term Support version. Use 
"docker build" to build the container image after the file is created and tag it 
with "eks-mcp-demo". Once the container is built run it with "docker run" and test 
the endpoints. Make sure the container is built as a multi-architecture image 
supporting both x86_64 and ARM64.

Push this image to an Amazon ECR repository called "eks-mcp-demo" in the AWS account 
Provide the image URL once this is complete.

다음과 같이 프롬프트를 분석할 수 있습니다.

  1. Express 프레임워크를 사용하는 Node.js 애플리케이션을 구축하도록 어시스턴트에게 요청하며, 접근 가능한 기본 엔드포인트들 포함하여 생성하도록 해야 합니다.
  2. Dockerfile이 필요하므로 어시스턴트에게 이를 생성하도록 요청합니다.
  3. 다음으로 여러 CPU 아키텍처를 지원하도록 컨테이너 이미지를 빌드하고, 기본 기능이 올바르게 작동하는지 확인하기 위해 로컬에서 빠르게 테스트 하도록 요청 합니다.
  4. 마지막으로 Amazon EKS에 배포할 수 있도록 컨테이너 이미지를 Amazon Elastic Container Registry(Amazon ECR)에 푸시하도록 요청합니다.

생성된 애플리케이션 리포지토리는 다음과 같은 구조를 가지게 됩니다.

그림 3: 생성된 애플리케이션 파일 구조

다음 그림과 같이 컨테이너 이미지가 빌드되어 Amazon ECR에 푸시되었습니다.

그림 4: Cline에서의 애플리케이션 부트스트랩 작업 완료

이제 어시스턴트에게 Amazon EKS에 애플리케이션을 배포하도록 요청합니다.

Deploy this application to Amazon EKS. Create a new cluster for the application. I 
want to test the application over the public Internet.

내부적으로, 코드 어시스턴트는 EKS MCP 서버의 manage_eks_stacks 도구를 사용하여 다음 그림과 같이 전체 클러스터 프로비저닝 프로세스를 자동화합니다. 사용자의 입력이 전혀 필요하지 않으며, VPC, 서브넷, AWS Identity and Access Management 역할과 같은 모든 클러스터 사전 요구사항의 생성을 자동화합니다. EKS MCP 서버 도구는 인프라 설정을 간소화할 뿐만 아니라, 간소화된 클러스터 관리를 위한 EKS Auto Mode 활성화와 같은 Amazon EKS 권장사항을 클러스터에 자동으로 적용합니다.

그림 5: Cline이 EKS MCP 스택 관리 도구를 호출하는 모습

다음 그림과 같이 클러스터 생성에는 몇 분이 소요되며, 그 후 어시스턴트가 EKS MCP 서버의 apply_yaml 도구를 사용하여 쿠버네티스 매니페스트를 생성하고 배포합니다

그림 6: YAML 매니페스트 적용을 위해 EKS MCP 도구를 호출하는 Cline

매니페스트가 배포되면, 어시스턴트는 다음 그림과 같이 Pod의 상태를 확인하기 위해 list_k8s_resourcesmanage_k8s_resources와 같은 EKS MCP 서버 도구를 사용합니다.

그림 7: Cline이 쿠버네티스 리소스를 나열하기 위해 EKS MCP 도구를 호출하는 모습

마지막으로, 어시스턴트는 다음 그림과 같이 애플리케이션이 배포되어 실행 중인지 확인하기 위해 애플리케이션 URL을 추출합니다.

그림 8: Cline이 Amazon EKS에 애플리케이션을 성공적으로 배포함

이번 안내에서는 도커를 사용했지만, 사용자들의 다양한 컨테이너 관리 요구사항을 지원하기 위해 Finch MCP 서버도 개발했습니다. Finch는 컨테이너 운영에 대한 안전하고 표준화된 접근 방식을 제공하며, AWS 서비스와 원활하게 통합되는 동시에 강력한 보안 제어를 유지합니다. 이는 다양한 사용자 요구사항을 충족하는 유연한 엔터플라이즈급 솔루션을 제공하려는 우리의 노력을 보여줍니다.

트러블슈팅

EKS MCP 서버가 AI 어시스턴트에게 유용한 컨텍스트를 제공할 수 있는 또 다른 영역은 문제 식별과 해결입니다. MCP 서버의 이식성을 보여주기 위해, 도구와 프롬프트를 위한 MCP 서버를 지원하는 Amazon Q Developer CLI로 전환하겠습니다. Q Developer CLI를 설치한 후, mcp.json 파일을 구성하여 EKS MCP를 추가할 수 있습니다.

{
  "mcpServers": {
    "awslabs.eks-mcp-server": {
      "command": "uvx",
      "args": [
        "awslabs.eks-mcp-server",
        "--allow-write",
        "--allow-sensitive-data-access"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "autoApprove": [],
      "disabled": false
    }
  }
}

CLI가 로드되면 /tools 명령어를 사용하여 추가된 도구들을 확인할 수 있습니다.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
awslabseks_mcp_server (MCP):
- awslabseks_mcp_server___add_inline_policy                * not trusted
- awslabseks_mcp_server___apply_yaml                       * not trusted
- awslabseks_mcp_server___generate_app_manifest            * not trusted
- awslabseks_mcp_server___get_cloudwatch_logs              * not trusted
- awslabseks_mcp_server___get_cloudwatch_metrics           * not trusted
- awslabseks_mcp_server___get_k8s_events                   * not trusted
- awslabseks_mcp_server___get_pod_logs                     * not trusted
- awslabseks_mcp_server___get_policies_for_role            * not trusted
- awslabseks_mcp_server___list_api_versions                * not trusted
- awslabseks_mcp_server___list_k8s_resources               * not trusted
- awslabseks_mcp_server___manage_eks_stacks                * not trusted
- awslabseks_mcp_server___manage_k8s_resource              * not trusted
- awslabseks_mcp_server___search_eks_troubleshoot_guide    * not trusted

다음으로 EKS MCP가 AI 어시스턴트를 지원할 수 있는 두 가지 시나리오를 살펴보겠습니다.

파드 문제 해결 하기

시작하지 못하는 두 개의 파드(pod)가 있다고 상황을 가정하겠습니다.

NAMESPACE      NAME                               READY   STATUS             RESTARTS   AGE
default        nginx-deployment-6ccc9899c-nhbrf   0/1     ImagePullBackOff   0          17s
default        nginx-deployment-6ccc9899c-wq5ls   0/1     ImagePullBackOff   0          17s

AI 어시스턴트에게 트러블슈팅하고, 직접 문제를 해결하도록 요청하겠습니다.

The Pods in the nginx-deployment Deployment are not starting. Diagnose and remediate 
the issue, apply any fixes directly and not via a manifest. Once the deployment is 
healthy provide a brief summary of the issues identified and the fixes applied.

어시스턴트는 이 작업의 여러 부분에서 EKS MCP 서버를 활용할 수 있습니다. 예를 들어, EKS MCP 서버의 get_pod_logsget_k8s_events를 각각 사용하여 로그와 이벤트를 검색할 수 있습니다:

그림 9: Amazon Q CLI가 쿠버네티스 이벤트를 가져오기 위해 EKS MCP 도구를 호출하는 모습

다음 그림과 같이 EKS MCP 서버의 manage_k8s_resources를 통해 Deployment 리소스를 업데이트하여 문제를 직접 해결할 수 있습니다.

그림 10: Amazon Q CLI가 쿠버네티스 리소스를 업데이트하기 위해 EKS MCP 도구를 호출하는 모습

마지막으로, 다음 그림과 같이 식별되고 해결된 여러 문제들에 대한 요약을 확인할 수 있습니다.

그림 11: Amazon Q CLI가 트러블슈팅을 진행한 이슈와 해결 방안을 요약하고 있음

인프라 문제 해결 하기

사용자가 Amazon EKS 환경의 문제를 해결할 때는 쿠버네티스 리소스뿐만 아니라 클러스터를 생성하는 데 사용되는 AWS 리소스, 그리고 VPC 네트워킹 및 IAM과 같은 관련 리소스들도 함께 고려해야 합니다.

이번 예시에서는 이전 시나리오와 비슷한 상황에서 시작하지만, 파드들이 Pending 상태로, EKS 워커 노드에 스케줄링될 수 없는 상황입니다.

NAMESPACE   NAME                                READY   STATUS    RESTARTS   AGE
default     nginx-deployment-5559f849f6-ccg6l   0/1     Pending   0          4m
default     nginx-deployment-5559f849f6-w9bs6   0/1     Pending   0          4m

AI 어시스턴트에게 트러블슈팅을 요청해보겠습니다.

The Pods in the nginx-deployment Deployment are not starting. Diagnose the issue and 
suggest how to fix it.

어시스턴트는 이전 시나리오와 유사하게 문제를 진단하기 위해 Deployment와 Pod의 상태를 확인하고 쿠버네티스 이벤트를 조회하는 등의 조치를 취할 것입니다. 그러나 이 경우에는 다음 그림과 같이 EKS MCP 서버의 search_eks_troubleshoot_guide 지식 기반 도구를 활용하여 Amazon EKS 트러블슈팅와 관련된 전문적인 지식을 얻을 수도 있습니다.

그림 12: Amazon EKS 관련 지식을 검색하기 위해 EKS MCP 도구를 호출하는 Amazon Q CLI

Amazon EKS 트러블슈팅 도구는 어시스턴트의 질의에 대해 맞춤형 해결 방안을 제시하며, 추가 리서치에 사용될수 있는 참조 문서도 함께 제공합니다. 그 예시는 다음과 같습니다.

{
  "answer": "This can occur if the compute configuration associated with the EKS Auto Mode cluster does not include either a general purpose or system node group, or if required IAM permissions for Auto Mode have been deleted from the associated role, or if the trust policy for the role is incorrect.",
  "symptoms": [
    "Pod remains in 'Pending' state for an extended period",
    "kubectl describe pod shows '0/0 nodes are available' or similar scheduling errors",
    "No nodes are listed in 'kubectl get nodes' output for the EKS Auto Mode cluster",
    "Events indicate scheduling failures due to lack of available nodes"
  ],
  "references": [
    "https://docs.aws.amazon.com/eks/latest/userguide/auto-cluster-iam-role.html"
  ]
}

위에 제공된 문서는 어시스턴트가 문제를 파악하고 해결책을 찾는 데 필요한 맥락을 제공합니다. 이 경우에는 다음 그림과 같이 EKS 클러스터에 권한을 제공하는 데 사용되는 IAM 역할과 관련된 문제를 정확하게 식별했습니다.

그림 13: Amazon Q CLI가 식별된 문제점과 해결 단계를 요약하여 제공

결론

오픈 소스 Amazon EKS용 MCP 서버는 사용자들에게 쿠버네티스 환경과 상호작용 할 수 있는 흥미로운 새 방법을 제공합니다.

이 MCP 서버를 사용하면 다음과 같은 작업이 가능합니다.

  • AI 기반 가이드를 통한 쿠버네티스 리소스 배포 및 관리
  • 대화형 AI를 활용한 EKS 클러스터 문제 해결

컨테이너화된 아키텍처를 계속해서 도입함에 따라, 관리를 간소화하고 인지적 부담을 줄여주는 도구들의 가치가 더욱 증가하고 있습니다. EKS MCP 서버를 통해 Amazon EKS 사용자들이 기대하는 강력한 기능과 유연성을 유지하면서도 쿠버네티스에 더욱 접근하기 쉽게 만들고자 합니다.

AWS에서는 고객 피드백이 로드맵에 깊은 영향을 미칩니다. EKS MCP 서버에 대한 여러분의 경험을 공유해 주시기 바랍니다. 새로운 기능 제안, 문제점 보고, 또는 AI가 더 효과적으로 활용될 수 있는 워크플로우를 제시하는 등 다양한 의견을 환영합니다.
일상적인 개발 패턴, 애로사항, 그리고 자동화나 가이드가 더 필요한 영역에 대한 여러분의 통찰은 이 도구의 미래 기능을 형성하는 데 매우 귀중한 자료가 됩니다. AWSLabs MCP 서버 Github 리포지토리에서 새로운 이슈를 생성하여 피드백을 제공하실 수 있습니다.

EKS MCP 서버 문서를 통해 AI 지원 쿠버네티스 관리의 미래를 함께 만들어가는 여정을 오늘 시작하세요.

Yeorae Kim

Yeorae Kim

김여래 Cloud Support Engineer는 Container, Infrastructure as Code (IaC), 그리고 Code Delivery and Analysis (CDA) 분야의 전문가로서 고객들의 복잡한 기술적 도전과제를 해결하는 데 전념하고 있습니다. 단순한 문제 해결을 넘어서 AWS 모범 사례를 바탕으로 한 아키텍처 설계 가이던스를 제공하며, 고객의 비즈니스 목표 달성을 위한 실질적이고 확장 가능한 솔루션을 제시합니다.