MCP 문서 관리

메뉴

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: 파드 포트 번호

사용 방법

설치 및 구성

  1. 기본 설치:

    # NPM을 사용한 설치
    npm install -g @modelcontextprotocol/server-kubernetes
    
    # 또는 Python으로 설치
    pip install mcp-server-kubernetes

  2. Claude Desktop 구성:

    {
      "mcpServers": {
        "kubernetes": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-kubernetes"],
          "env": {
            "KUBECONFIG": "/path/to/your/kubeconfig",
            "K8S_CONTEXT": "your-context-name"
          }
        }
      }
    }

  3. 고급 구성 옵션:

    {
      "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"
          }
        }
      }
    }

기본 사용 예시

  1. 클러스터 연결 및 노드 확인:

    // 클러스터에 연결
    connect_cluster({context: "my-cluster"})
    
    // 노드 목록 확인
    list_nodes()

  2. 파드 관리:

    // 특정 네임스페이스의 파드 목록 확인
    list_pods({namespace: "default"})
    
    // 특정 파드의 로그 확인
    get_pod_logs({name: "my-pod", namespace: "default", tail_lines: 50})

  3. 배포 관리:

    // 배포 목록 확인
    list_deployments({namespace: "default"})
    
    // 배포 스케일링
    scale_deployment({name: "my-deployment", namespace: "default", replicas: 3})

  4. YAML 매니페스트 적용:

    // YAML 매니페스트 적용
    apply_manifest({
      manifest: `
        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: my-config
        data:
          key1: value1
          key2: value2
      `,
      namespace: "default"
    })

  5. 헬름 차트 관리:

    // 헬름 릴리스 목록 확인
    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 서버