Kubernetes
Kubernetes
Kubernetes MCP 서버는 쿠버네티스 클러스터에 연결하고 파드(Pods), 배포(Deployments), 서비스(Services) 및 기타 쿠버네티스 리소스를 관리할 수 있게 해주는 Model Context Protocol 서버입니다. 이 서버를 통해 AI 어시스턴트가 자연어를 사용하여 쿠버네티스 클러스터와 효과적으로 상호작용할 수 있습니다.
특징
- 쿠버네티스 클러스터 연결 및 컨텍스트 관리
- 파드, 배포, 서비스, 네임스페이스 및 기타 리소스 관리
- 리소스 상태 확인 및 모니터링
- 로그 조회 및 분석
- 실시간 클러스터 문제 진단
- 보안 정책 및 접근 제어 관리
- 여러 클러스터 간 전환 지원
- 클러스터 메트릭 및 성능 분석
- 헬름(Helm) 차트 관리 및 배포
- 커스텀 리소스 정의(CRD) 및 오퍼레이터 지원
API
리소스
클러스터
- 연결된 쿠버네티스 클러스터에 대한 정보와 상태
네임스페이스
- 클러스터 내의 네임스페이스 목록 및 세부 정보
노드
- 클러스터 내의 노드 목록 및 세부 정보
워크로드
- 파드, 배포, 스테이트풀셋, 데몬셋 등의 워크로드 리소스
서비스
- 클러스터 내의 서비스, 인그레스 및 네트워크 정책
도구
connect_cluster
쿠버네티스 클러스터에 연결합니다. - 입력: - context: 사용할 kubeconfig 컨텍스트 이름 - config_path: (선택적) kubeconfig 파일 경로
list_namespaces
클러스터의 모든 네임스페이스를 나열합니다. - 입력: 없음
get_namespace
특정 네임스페이스의 세부 정보를 조회합니다. - 입력: - name: 조회할 네임스페이스 이름
create_namespace
새 네임스페이스를 생성합니다. - 입력: - name: 생성할 네임스페이스 이름 - labels: (선택적) 네임스페이스에 적용할 레이블
delete_namespace
네임스페이스를 삭제합니다. - 입력: - name: 삭제할 네임스페이스 이름
list_pods
네임스페이스 내의 모든 파드를 나열합니다. - 입력: - namespace: 파드가 있는 네임스페이스 이름 - label_selector: (선택적) 레이블 선택기
get_pod
특정 파드의 세부 정보를 조회합니다. - 입력: - name: 조회할 파드 이름 - namespace: 파드가 있는 네임스페이스 이름
get_pod_logs
파드의 로그를 조회합니다. - 입력: - name: 로그를 조회할 파드 이름 - namespace: 파드가 있는 네임스페이스 이름 - container: (선택적) 로그를 조회할 컨테이너 이름 - tail_lines: (선택적) 조회할 마지막 로그 줄 수
list_deployments
네임스페이스 내의 모든 배포를 나열합니다. - 입력: - namespace: 배포가 있는 네임스페이스 이름
get_deployment
특정 배포의 세부 정보를 조회합니다. - 입력: - name: 조회할 배포 이름 - namespace: 배포가 있는 네임스페이스 이름
scale_deployment
배포의 레플리카 수를 조정합니다. - 입력: - name: 스케일링할 배포 이름 - namespace: 배포가 있는 네임스페이스 이름 - replicas: 원하는 레플리카 수
list_services
네임스페이스 내의 모든 서비스를 나열합니다. - 입력: - namespace: 서비스가 있는 네임스페이스 이름
get_service
특정 서비스의 세부 정보를 조회합니다. - 입력: - name: 조회할 서비스 이름 - namespace: 서비스가 있는 네임스페이스 이름
list_events
네임스페이스 내의 이벤트를 조회합니다. - 입력: - namespace: 이벤트를 조회할 네임스페이스 이름 - field_selector: (선택적) 필드 선택기
apply_manifest
YAML 매니페스트를 적용합니다. - 입력: - manifest: 적용할 YAML 매니페스트 - namespace: (선택적) 매니페스트를 적용할 네임스페이스
helm_list_releases
헬름 릴리스를 나열합니다. - 입력: - namespace: (선택적) 릴리스를 조회할 네임스페이스
helm_install_release
헬름 차트를 설치합니다. - 입력: - name: 릴리스 이름 - chart: 차트 이름 또는 경로 - namespace: 설치할 네임스페이스 - values: (선택적) 값 파일 또는 값 문자열
exec_command
파드 내에서 명령을 실행합니다. - 입력: - pod_name: 명령을 실행할 파드 이름 - namespace: 파드가 있는 네임스페이스 이름 - container: (선택적) 명령을 실행할 컨테이너 이름 - command: 실행할 명령 (문자열 배열)
get_cluster_info
클러스터 정보를 조회합니다. - 입력: 없음
port_forward
파드의 포트를 로컬 포트로 포워딩합니다. - 입력: - pod_name: 포트를 포워딩할 파드 이름 - namespace: 파드가 있는 네임스페이스 이름 - local_port: 로컬 포트 번호 - pod_port: 파드 포트 번호
사용 방법
설치 및 구성
-
기본 설치:
# NPM을 사용한 설치 npm install -g @modelcontextprotocol/server-kubernetes # 또는 Python으로 설치 pip install mcp-server-kubernetes -
Claude Desktop 구성:
{ "mcpServers": { "kubernetes": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-kubernetes"], "env": { "KUBECONFIG": "/path/to/your/kubeconfig", "K8S_CONTEXT": "your-context-name" } } } } -
고급 구성 옵션:
{ "mcpServers": { "kubernetes": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-kubernetes"], "env": { "KUBECONFIG": "/path/to/your/kubeconfig", "K8S_CONTEXT": "your-context-name", "K8S_NAMESPACE": "default", "K8S_RESOURCE_QUOTA": "true", "K8S_MAX_PODS": "100", "K8S_LOG_LINES": "50", "K8S_TIMEOUT": "30", "K8S_ALLOW_PV_OPS": "false", "K8S_ALLOW_DELETE": "false", "K8S_ALLOW_EXEC": "true", "K8S_RBAC_ENABLED": "true" } } } }
기본 사용 예시
-
클러스터 연결 및 노드 확인:
// 클러스터에 연결 connect_cluster({context: "my-cluster"}) // 노드 목록 확인 list_nodes() -
파드 관리:
// 특정 네임스페이스의 파드 목록 확인 list_pods({namespace: "default"}) // 특정 파드의 로그 확인 get_pod_logs({name: "my-pod", namespace: "default", tail_lines: 50}) -
배포 관리:
// 배포 목록 확인 list_deployments({namespace: "default"}) // 배포 스케일링 scale_deployment({name: "my-deployment", namespace: "default", replicas: 3}) -
YAML 매니페스트 적용:
// YAML 매니페스트 적용 apply_manifest({ manifest: ` apiVersion: v1 kind: ConfigMap metadata: name: my-config data: key1: value1 key2: value2 `, namespace: "default" }) -
헬름 차트 관리:
// 헬름 릴리스 목록 확인 helm_list_releases({namespace: "default"}) // 헬름 차트 설치 helm_install_release({ name: "my-release", chart: "stable/nginx-ingress", namespace: "default", values: { controller: { replicaCount: 2 } } })
보안 고려사항
- 기본적으로 위험한 작업(삭제, 실행 등)은 비활성화되어 있습니다.
- 공유 클러스터에서는 읽기 전용 접근만 허용하는 것이 좋습니다.
- 민감한 환경에서는 제한된 RBAC 권한을 가진 서비스 계정을 사용하세요.
- 중요한 프로덕션 환경에서는 테스트 환경에서 먼저 명령을 확인하세요.
- 항상 최소 권한 원칙을 적용하여 필요한 작업만 허용하세요.
연결된 구성 요소
- Docker - 컨테이너, 이미지, 볼륨 및 네트워크를 관리하기 위한 Docker 통합
- Azure DevOps - Azure DevOps 서비스에 대한 브리지를 제공하는 MCP 서버
- Kubernetes and OpenShift - OpenShift에 대한 추가 지원이 포함된 강력한 Kubernetes MCP 서버