Kubernetes MCP(K8s MCP)란 무엇인가요?
Kubernetes MCP(Model Context Protocol)는 Kubernetes 클러스터와 AI 기반 도구 사이의 구조화된 상호작용을 지원하는 프로토콜입니다. K8s MCP는 이러한 MCP를 구현한 서버로, AI 어시스턴트와 자연어(NLP)를 통해 복잡한 Kubernetes 관리를 효율적이고 직관적으로 자동화할 수 있도록 합니다.
🔖 주요 특징 요약
- 복잡한 Kubernetes 명령어 관리의 간소화
- AI 기반 자연어 명령 처리
- Kubernetes 작업의 보안 및 권한 관리
- 다양한 AI 어시스턴트(Claude, Cursor 등)와 연동 가능
K8s MCP의 핵심 기능 및 역할
① AI 기반 자연어 관리
- Kubernetes 명령어를 자연어로 입력하면 AI가 명령을 분석하여 클러스터에 전달합니다.
예) "모든 Pod 목록을 보여줘" AI → kubectl get pods
② MCP를 통한 안전한 인터페이스 제공
- Model Context Protocol (MCP)을 통해 작업의 범위와 권한을 제한하여 안전한 환경 제공
③ 비파괴 모드(Non-destructive mode)
- 읽기 및 생성/업데이트 작업만 허용하여, 클러스터에 대한 위험한 작업을 제한합니다.
④ 다양한 Kubernetes 리소스 관리 기능
- Pods, Deployments, Services, Nodes 등 CRUD 작업 지원
- Helm 차트 관리(설치, 제거, 업그레이드)
- 포드 로그 확인, Exec 명령 실행, 포트 포워딩 등
설치 환경 및 요구사항
다음 환경이 준비되어 있어야 합니다.
- Kubernetes 클러스터 접근 권한
kubectl
설치 및 설정 (필수)- Node.js 및 Bun 또는 Python 3.9 이상 (환경에 따라 선택)
- Helm v3 (옵션)
환경 준비 명령어 예시 (Ubuntu 기준)
# kubectl 설치
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# Node.js 및 Bun 설치 (Node.js 예시)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
# Helm 설치 (옵션)
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
K8s MCP 서버 설치 및 구성하기
대표적 구현체로 Flux159의 Node.js 기반 서버를 예로 듭니다.
설치 명령어
git clone https://github.com/flux159/mcp-server-kubernetes.git
cd mcp-server-kubernetes
bun install
설정 파일 구성 예시 (.env 파일)
# Kubernetes context 설정 (기본 컨텍스트 사용)
KUBECONFIG=~/.kube/config
# 서버 설정 (포트 지정)
PORT=8000
# 보안 모드 설정
ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS=true
서버 구동 명령어
bun start
서버가 구동되면, MCP Inspector 또는 AI 어시스턴트와 연동할 수 있습니다.
AI 어시스턴트와 연동하기
Claude Desktop과의 연동 설정 예시
Claude 설정 파일에 아래 내용을 추가합니다.
tools:
- name: "Kubernetes MCP"
api:
base_url: "http://localhost:8000"
type: "mcp"
이제 Claude와 같은 AI 어시스턴트에서 자연어로 Kubernetes 관리를 수행할 수 있습니다.
- 자연어 명령 예시:
"frontend-deployment의 복제본을 3개로 확장해줘."
지원되는 기능 및 명령 예시
명령어 예시 (자연어) | 대응 kubectl 명령어 |
---|---|
"모든 Pod를 보여줘" | kubectl get pods |
"frontend 서비스 상세정보를 줘" | kubectl describe service frontend |
"pod의 로그를 확인해줘" | kubectl logs <pod-name> |
"deployment를 재시작해줘" | kubectl rollout restart deployment <deployment-name> |
보안 고려사항
AI에게 Kubernetes 접근 권한 부여 시 다음 사항을 반드시 점검하세요.
- 권한 확인: kubectl context의 권한 확인 (
kubectl auth can-i --list
) - 범위 제한: 필요 최소한의 작업만 허용 (RBAC 설정 활용)
- 작업 모니터링: 작업 로그 및 감사(audit) 로그 활성화
- Audit 로그 활성화 예시 (
kube-apiserver.yaml
)- --audit-log-path=/var/log/kubernetes/audit.log - --audit-log-maxage=30 - --audit-log-maxbackup=10 - --audit-log-maxsize=100
- Audit 로그 활성화 예시 (
개발 및 테스트 방법
로컬 환경에서 빠르게 테스트할 때는 MCP Inspector를 사용하는 것이 권장됩니다.
MCP Inspector 설치 및 실행 방법
npm install -g @modelcontextprotocol/inspector
mcp-inspector
MCP 서버가 동작하는지 Inspector로 간편히 테스트할 수 있습니다.
주요 구현체 비교
구현체 | 언어/환경 | 특징 |
---|---|---|
Flux159/mcp-server-kubernetes | Node.js, Bun | kubectl/helm Wrapper 방식, 비파괴 모드 지원 |
manusa/kubernetes-mcp-server | Go | kubectl 없이 네이티브 구현 |
piwheels/kubectl-mcp-tool |
Python | CLI 모드, Server 모드 제공 |
- 복잡도 및 외부 의존성을 줄이고자 하면
manusa
를, kubectl/helm 친숙한 환경이면Flux159
를 추천합니다.
K8s MCP는 AI와 자연어 처리를 통한 Kubernetes 관리 자동화 및 효율성 극대화에 매우 효과적입니다. 다만, AI에 권한을 부여하는 만큼 권한 관리 및 보안 강화에 주의를 기울여야 합니다. 자신의 인프라 환경과 관리 목적에 맞는 구현체를 선택하고 적절한 보안 대책을 세워, Kubernetes 운영의 편리성과 효율성을 동시에 누릴 수 있기를 바랍니다.
댓글