Amazon EKS MCP 서버 시작하기 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.

Amazon EKS MCP 서버 시작하기

이 가이드에서는 AI 코드 어시스턴트를 사용하여 Amazon ECS MCP 서버를 설정 및 사용하는 단계를 안내합니다. 환경을 구성하고 서버에 연결하며 자연어 상호 작용을 통해 EKS 클러스터 관리를 시작하는 방법에 대해 알아봅니다.

참고

Amazon EKS MCP 서버는 Amazon EKS의 미리 보기 릴리스로 제공되며 변경될 수 있습니다.

사전 조건

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

설정

1. 사전 조건 확인

# Check that your Python version is 3.10 or higher python3 --version # Check uv installation uv --version # Verify CLI configuration aws configure list

2. IAM 권한 설정

EKS MCP 서버에 연결하려면 IAM 역할eks-mcp:InvokeMcp(사용 가능한 도구에 대한 정보를 초기화 및고 검색하는 데 필요한 권한), eks-mcp:CallReadOnlyTool(읽기 전용 도구 사용에 필요한 권한) 및 eks-mcp:CallPrivilegedTool(전체 액세스(쓰기) 도구 사용에 필요한 권한) 정책이 연결되어 있어야 합니다. 이러한 eks-mcp 권한은 아래 제공된 읽기 전용 및 전체 액세스 AWS 관리형 정책에 포함되어 있습니다.

  • IAM 콘솔을 엽니다.

  • 왼쪽 탐색 창에서 정책을 연결할 ID에 따라 사용자, 사용자 그룹 또는 역할을 선택하고 특정 사용자, 그룹 또는 역할의 이름을 선택합니다.

  • 권한 탭을 선택합니다.

  • 정책 연결을 선택합니다. 또는 처음인 경우 권한 추가를 선택합니다.

  • 정책 목록에서 연결하려는 관리형 정책을 검색하고 선택합니다.

  • 읽기 전용 작업: AmazonEKSMCPReadOnlyAccess

  • 정책 연결을 선택하거나 다음권한 추가를 선택하여 확인합니다.

그러면 정책이 연결되고 권한이 즉시 적용됩니다. 여러 정책을 동일한 ID에 연결하고 각각에서 다양한 권한을 포함할 수 있습니다. 이러한 정책에 대한 자세한 내용은 Amazon Elastic Kubernetes Service에 대한 AWS 관리형 정책을 참조하세요.

3. AI 어시스턴트 선택

다음과 같은 MCP 호환 AI 어시스턴트 또는 MCP 호환 도구에서 하나를 선택합니다.

1단계: AI 어시스턴트 구성

다음 옵션 중 하나를 선택하여 AI 코드 어시스턴트를 설정합니다. 이 단계를 완료하면 Amazon EKS MCP 서버에 대한 인증된 보안 액세스에 필요한 AWS에 대한 MCP 프록시를 사용하도록 AI 코드 어시스턴트를 설정합니다. 여기에는 MCP 구성 파일(예: Amazon Q Developer CLI의 경우 ~/.aws/amazonq/mcp.json) 추가 또는 편집이 포함됩니다. 프록시는 클라이언트 측 브리지 역할을 함으로써 로컬 AWS 자격 증명을 사용하여 AWS SigV4 인증을 처리하고 EKS MCP 서버와 같은 백엔드 AWS MCP 서버와 상호 작용하기 위한 동적 도구 검색을 지원합니다. 자세한 내용은 MCP Proxy for AWS repository를 참조하세요.

옵션 A: Amazon Q Developer CLI

Q Developer CLI는 EKS MCP 서버와 가장 통합된 환경을 제공합니다.

1. MCP 구성 파일 찾기

  • macOS/Linux: ~/.aws/q/mcp.json

  • Windows: %USERPROFILE%\.aws\q\mcp.json

2. MCP 서버 구성 추가

구성 파일이 없는 경우 생성합니다. 리전({region}) 자리 표시자를 원하는 리전으로 바꿔야 합니다.

Mac/Linux의 경우:

{ "mcpServers": { "eks-mcp": { "disabled": false, "type": "stdio", "command": "uvx", "args": [ "mcp-proxy-for-aws@latest", "https://eks-mcp.{region}.api.aws/mcp", "--service", "eks-mcp", "--profile", "default", "--region", "{region}" ] } } }

Windows의 경우:

{ "mcpServers": { "eks-mcp": { "disabled": false, "type": "stdio", "command": "uvx", "args": [ "--from", "mcp-proxy-for-aws@latest", "mcp-proxy-for-aws.exe", "https://eks-mcp.{region}.api.aws/mcp", "--service", "eks-mcp", "--profile", "default", "--region", "{region}" ] } } }

보안 참고 사항: --read-only는 읽기 전용 도구 작업만 허용하는 데 사용할 수 있습니다.

3. 구성 확인

Q Developer CLI를 다시 시작하고 사용 가능한 도구를 확인합니다.

q /tools

옵션 B: Kiro IDE

Kiro는 기본 제공 MCP 지원을 포함하는 AI 우선 코딩 워크스페이스입니다.

1. Kiro 설정 열기

  • Kiro 열기

  • KiroSettings로 이동하여 'MCP Config' 검색

  • 또는 Cmd+Shift+P,(Mac) 또는 Ctrl+Shift+P,(Windows/Linux)를 누르고 'MCP Config' 검색

2. MCP 서버 구성 추가

  • 'Open Workspace MCP Config' 또는 'Open User MCP Config'를 클릭하여 MCP 구성 파일을 직접 편집합니다.

리전({region}) 자리 표시자를 원하는 리전으로 바꿔야 합니다.

Mac/Linux의 경우:

{ "mcpServers": { "eks-mcp": { "disabled": false, "type": "stdio", "command": "uvx", "args": [ "mcp-proxy-for-aws@latest", "https://eks-mcp.{region}.api.aws/mcp", "--service", "eks-mcp", "--profile", "default", "--region", "{region}" ] } } }

Windows의 경우:

{ "mcpServers": { "eks-mcp": { "disabled": false, "type": "stdio", "command": "uvx", "args": [ "--from", "mcp-proxy-for-aws@latest", "mcp-proxy-for-aws.exe", "https://eks-mcp.{region}.api.aws/mcp", "--service", "eks-mcp", "--profile", "default", "--region", "{region}" ] } } }

보안 참고 사항: --read-only는 읽기 전용 도구 작업만 허용하는 데 사용할 수 있습니다.

옵션 C: 커서 IDE

Cursor는 그래픽 구성 인터페이스를 통해 기본 제공 MCP 지원을 제공합니다.

1. Cursor 설정 열기

  • Cursor 열기

  • SettingsCursor SettingsTools & MCP로 이동

  • 또는 Cmd+Shift+P(Mac)/Ctrl+Shift+P(Windows)를 누르고 'MCP' 검색

2. MCP 서버 구성 추가

  • 'New MCP Server' 클릭

구성 파일이 없는 경우 생성합니다. 리전({region}) 자리 표시자를 원하는 리전으로 바꿔야 합니다.

Mac/Linux의 경우:

{ "mcpServers": { "eks-mcp": { "disabled": false, "type": "stdio", "command": "uvx", "args": [ "mcp-proxy-for-aws@latest", "https://eks-mcp.{region}.api.aws/mcp", "--service", "eks-mcp", "--profile", "default", "--region", "{region}" ] } } }

Windows의 경우:

{ "mcpServers": { "eks-mcp": { "disabled": false, "type": "stdio", "command": "uvx", "args": [ "--from", "mcp-proxy-for-aws@latest", "mcp-proxy-for-aws.exe", "https://eks-mcp.{region}.api.aws/mcp", "--service", "eks-mcp", "--profile", "default", "--region", "{region}" ] } } }

보안 참고 사항: --read-only는 읽기 전용 도구 작업만 허용하는 데 사용할 수 있습니다.

3. Cursor 다시 시작

변경 사항을 적용하려면 Cursor를 닫았다가 다시 엽니다.

4. Cursor 채팅에서 확인

채팅 패널을 열고 다음을 시도합니다.

What EKS MCP tools are available?

사용 가능한 EKS 관리 도구 목록이 표시됩니다.

옵션 D: Cline(VS Code 확장)

Cline은 에디터에 AI 지원을 직접 제공하는 인기 있는 VS Code 확장입니다.

1. Cline Settings 열기

  • Cline 열기

  • Cmd+Shift+P(Mac)/Ctrl+Shift+P(Windows)를 누르고 'MCP' 검색

2. MCP 서버 구성 추가

  • 'Add Server' 클릭

  • 'Open User Configuration' 클릭

구성 파일이 없는 경우 생성합니다. 리전({region}) 자리 표시자를 원하는 리전으로 바꿔야 합니다.

Mac/Linux의 경우:

{ "mcpServers": { "eks-mcp": { "disabled": false, "type": "stdio", "command": "uvx", "args": [ "mcp-proxy-for-aws@latest", "https://eks-mcp.{region}.api.aws/mcp", "--service", "eks-mcp", "--profile", "default", "--region", "{region}" ] } } }

Windows의 경우:

{ "mcpServers": { "eks-mcp": { "disabled": false, "type": "stdio", "command": "uvx", "args": [ "--from", "mcp-proxy-for-aws@latest", "mcp-proxy-for-aws.exe", "https://eks-mcp.{region}.api.aws/mcp", "--service", "eks-mcp", "--profile", "default", "--region", "{region}" ] } } }

보안 참고 사항: --read-only는 읽기 전용 도구 작업만 허용하는 데 사용할 수 있습니다.

2. VS Code 다시 로드

Cmd+Shift+P/Ctrl+Shift+P를 누르고 'Developer: Reload Window' 선택

3. 구성 확인

Cline을 열고 다음을 질문합니다.

List the available MCP tools for EKS

2단계: (선택 사항) '쓰기' 정책 생성

선택적으로 Amazon EKS MCP 서버에 대한 전체 액세스를 제공하는 고객 관리형 IAM 정책을 생성할 수 있습니다. 이 정책은 쓰기 작업과 읽기 전용 도구가 관련될 수 있는 권한 있는 도구를 포함하여 EKS MCP 서버의 모든 도구를 사용할 권한을 부여합니다. 위험도가 높은 권한(삭제* 또는 무제한 IAM 리소스 포함)은 manage_eks_stacks 도구에서 클러스터 리소스를 설정/해체하는 데 필요하므로 이 정책에 포함됩니다.

aws iam create-policy \ --policy-name EKSMcpWriteManagementPolicy \ --policy-document "{\"Version\": \"2012-10-17\", \"Statement\": [{\"Effect\": \"Allow\", \"Action\": [\"eks:DescribeCluster\", \"eks:ListClusters\", \"eks:DescribeNodegroup\", \"eks:ListNodegroups\", \"eks:DescribeAddon\", \"eks:ListAddons\", \"eks:DescribeAccessEntry\", \"eks:ListAccessEntries\", \"eks:DescribeInsight\", \"eks:ListInsights\", \"eks:AccessKubernetesApi\"], \"Resource\": \"*\"}, {\"Effect\": \"Allow\", \"Action\": [\"eks:CreateCluster\", \"eks:DeleteCluster\", \"eks:CreateAccessEntry\", \"eks:TagResource\"], \"Resource\": \"*\"}, {\"Effect\": \"Allow\", \"Action\": [\"iam:GetRole\", \"iam:ListRolePolicies\", \"iam:ListAttachedRolePolicies\", \"iam:GetRolePolicy\", \"iam:GetPolicy\", \"iam:GetPolicyVersion\"], \"Resource\": \"*\"}, {\"Effect\": \"Allow\", \"Action\": [\"iam:TagRole\", \"iam:CreateRole\", \"iam:AttachRolePolicy\", \"iam:PutRolePolicy\", \"iam:DetachRolePolicy\", \"iam:DeleteRole\"], \"Resource\": \"*\"}, {\"Effect\": \"Allow\", \"Action\": [\"iam:PassRole\"], \"Resource\": \"*\", \"Condition\": {\"StringEquals\": {\"iam:PassedToService\": [\"eks.amazonaws.com\", \"ec2.amazonaws.com\"]}}}, {\"Effect\": \"Allow\", \"Action\": [\"ec2:CreateVpc\", \"ec2:CreateSubnet\", \"ec2:CreateRouteTable\", \"ec2:CreateRoute\", \"ec2:CreateInternetGateway\", \"ec2:CreateNatGateway\", \"ec2:CreateSecurityGroup\", \"ec2:AttachInternetGateway\", \"ec2:AssociateRouteTable\", \"ec2:ModifyVpcAttribute\", \"ec2:ModifySubnetAttribute\", \"ec2:AllocateAddress\", \"ec2:CreateTags\"], \"Resource\": \"*\"}, {\"Effect\": \"Allow\", \"Action\": [\"ec2:DeleteVpc\", \"ec2:DeleteSubnet\", \"ec2:DisassociateRouteTable\", \"ec2:DeleteRouteTable\", \"ec2:DeleteRoute\", \"ec2:DetachInternetGateway\", \"ec2:DeleteInternetGateway\", \"ec2:DeleteNatGateway\", \"ec2:ReleaseAddress\", \"ec2:DeleteSecurityGroup\"], \"Resource\": \"*\"}, {\"Effect\": \"Allow\", \"Action\": [\"ec2:DescribeVpcs\", \"ec2:DescribeSubnets\", \"ec2:DescribeRouteTables\", \"ec2:DescribeInternetGateways\", \"ec2:DescribeNatGateways\", \"ec2:DescribeAddresses\", \"ec2:DescribeSecurityGroups\", \"ec2:DescribeAvailabilityZones\"], \"Resource\": \"*\"}, {\"Effect\": \"Allow\", \"Action\": [\"cloudformation:CreateStack\", \"cloudformation:UpdateStack\", \"cloudformation:DeleteStack\", \"cloudformation:DescribeStacks\", \"cloudformation:TagResource\"], \"Resource\": \"*\"}, {\"Effect\": \"Allow\", \"Action\": [\"sts:GetCallerIdentity\"], \"Resource\": \"*\"}, {\"Effect\": \"Allow\", \"Action\": [\"logs:StartQuery\", \"logs:GetQueryResults\"], \"Resource\": \"*\"}, {\"Effect\": \"Allow\", \"Action\": [\"cloudwatch:GetMetricData\"], \"Resource\": \"*\"}, {\"Effect\": \"Allow\", \"Action\": [\"eks-mcp:*\"], \"Resource\": \"*\"}]}"

3단계: 설정 확인

연결 테스트

AI 어시스턴트에 연결을 확인하기 위한 간단한 질문을 합니다.

List all EKS clusters in my {aws} account

ECS 클러스터 목록이 표시됩니다.

4단계: 첫 번째 태스크 실행

예제 1: 클러스터 탐색

Show me all EKS clusters and their status What insights does EKS have about my production-cluster? Show me the VPC configuration for my staging cluster

예제 2: Kubernetes 리소스 확인

Get the details of all the kubernetes resources deployed in my EKS cluster Show me pods that are not in Running state or pods with any restarts Get the logs from the aws-node daemonset in the last 30 minutes

예제 3: 문제 해결

Why is my nginx-ingress-controller pod failing to start? Search the EKS troubleshooting guide for pod networking issues Show me events related to the failed deployment in the staging namespace

예제 4: 리소스 생성('쓰기' 모드가 활성화된 경우)

Create a new EKS cluster named demo-cluster with VPC and Auto Mode Deploy my containerized app from ECR to the production namespace with 3 replicas Generate a Kubernetes deployment YAML for my Node.js app running on port 3000

일반적인 구성

시나리오 1: 여러 AWS 프로파일

여러 AWS 계정으로 작업하는 경우 별도의 MCP 서버 구성을 생성합니다.

Mac/Linux의 경우:

{ "mcpServers": { "eks-mcp-prod": { "disabled": false, "type": "stdio", "command": "uvx", "args": [ "mcp-proxy-for-aws@latest", "https://eks-mcp.{region}.api.aws/mcp", "--service", "eks-mcp", "--profile", "production", "--region", "us-west-2" ] }, "eks-mcp-dev": { "disabled": false, "type": "stdio", "command": "uvx", "args": [ "mcp-proxy-for-aws@latest", "https://eks-mcp.{region}.api.aws/mcp", "--service", "eks-mcp", "--profile", "development", "--region", "us-east-1" ] } } }

Windows의 경우:

{ "mcpServers": { "eks-mcp-prod": { "disabled": false, "type": "stdio", "command": "uvx", "args": [ "--from", "mcp-proxy-for-aws@latest", "mcp-proxy-for-aws.exe", "https://eks-mcp.{region}.api.aws/mcp", "--service", "eks-mcp", "--profile", "production", "--region", "us-west-2" ] }, "eks-mcp-dev": { "disabled": false, "type": "stdio", "command": "uvx", "args": [ "--from", "mcp-proxy-for-aws@latest", "mcp-proxy-for-aws.exe", "https://eks-mcp.{region}.api.aws/mcp", "--service", "eks-mcp", "--profile", "development", "--region", "us-east-1" ] } } }

시나리오 2: 프로덕션에 대해 읽기 전용

프로덕션 환경에 대한 읽기 전용 구성을 생성합니다.

Mac/Linux의 경우:

{ "mcpServers": { "eks-mcp-prod-readonly": { "command": "uvx", "args": [ "mcp-proxy-for-aws@latest", "https://eks-mcp.{region}.api.aws/mcp", "--service", "eks-mcp", "--profile", "production", "--region", "us-west-2", "--read-only" ], "autoApprove": [ "list_k8s_resources", "get_pod_logs", "get_k8s_events" ] } } }

Windows의 경우:

{ "mcpServers": { "eks-mcp-prod-readonly": { "command": "uvx", "args": [ "--from", "mcp-proxy-for-aws@latest", "mcp-proxy-for-aws.exe", "https://eks-mcp.{region}.api.aws/mcp", "--service", "eks-mcp", "--profile", "production", "--region", "us-west-2", "--read-only" ], "autoApprove": [ "list_k8s_resources", "get_pod_logs", "get_k8s_events" ] } } }

시나리오 3: 전체 액세스 권한을 사용하는 개발

전체 쓰기 액세스 권한을 사용하는 개발 환경의 경우.

Mac/Linux의 경우:

{ "mcpServers": { "eks-mcp-dev-full": { "command": "uvx", "args": [ "mcp-proxy-for-aws@latest", "https://eks-mcp.{region}.api.aws/mcp", "--service", "eks-mcp", "--profile", "development", "--region", "us-east-1" ] } } }

Windows의 경우:

{ "mcpServers": { "eks-mcp-dev-full": { "command": "uvx", "args": [ "--from", "mcp-proxy-for-aws@latest", "mcp-proxy-for-aws.exe", "https://eks-mcp.{region}.api.aws/mcp", "--service", "eks-mcp", "--profile", "development", "--region", "us-east-1" ] } } }

고려 사항

보안

허용된 입력 메커니즘을 통해 보안 암호 또는 민감한 정보를 전달하지 마세요.

  • apply_yaml을 사용하여 적용된 YAML 파일에 보안 암호 또는 자격 증명을 포함하지 마세요.

  • 프롬프트에서 직접 민감한 정보를 모델에 전달하지 마세요.

  • CloudFormation 템플릿 또는 애플리케이션 매니페스트에 보안 암호를 포함하지 마세요.

  • Kubernetes 보안 암호를 생성하기 위해 MCP 도구를 사용하지 마세요. 이 경우 모델에 보안 암호 데이터를 제공해야 하기 때문입니다.

  • Kubernetes 포드 내 애플리케이션 로그에 민감한 정보를 로깅하지 마세요.

YAML 콘텐츠 보안:

  • 신뢰할 수 있는 소스의 YAML 파일만 사용합니다.

  • 서버는 YAML 콘텐츠에 대해 Kubernetes API 검증을 사용하며 자체 검증을 수행하지 않습니다.

  • 클러스터에 적용하기 전에 YAML 파일을 감사합니다.

MCP를 통해 보안 암호를 전달하는 대신 다음을 수행합니다.

  • AWS Secrets Manager 또는 Parameter Store를 사용하여 민감한 정보를 저장합니다.

  • 서비스 계정에 대해 적절한 Kubernetes RBAC를 구성합니다.

  • 포드에서 AWS 서비스 액세스를 위해 서비스 계정에 대한 IAM 역할(IRSA)을 사용합니다.

민감한 데이터 삭제:

  • EKS MCP 서버는 도구 응답에서 보안 토큰, 인증서 및 기타 민감한 정보의 일반적인 패턴을 자동으로 삭제합니다.

  • 실수로 데이터가 모델에 노출되지 않도록 삭제된 값은 HIDDEN_FOR_SECURITY_REASONS로 대체됩니다.

  • 이 민감한 정보 삭제는 로그, 리소스 설명 및 구성 데이터를 포함한 모든 도구 응답에 적용됩니다.

다음 단계

구성 옵션은 Amazon EKS MCP 서버 구성 참조 섹션을 참조하세요. 전체 도구 목록은 Amazon EKS MCP 서버 도구 참조 섹션을 참조하세요.