AKS MCP(모델 컨텍스트 프로토콜) 서버를 사용하면 AI 도우미가 명확성, 안전성 및 제어를 통해 AKS(Azure Kubernetes Service) 클러스터와 상호 작용할 수 있습니다. 이는 AI 도구(예: GitHub Copilot, Claude 및 기타 MCP 호환 AI 도우미)와 AKS 간의 브리지 역할을 하며, 자연어 요청을 AKS 작업으로 변환하고 AI 도구가 이해할 수 있는 형식으로 결과를 반환합니다.
AKS MCP 서버는 Azure SDK를 사용하여 Azure에 연결하고 AI 도우미가 AKS 리소스와 상호 작용하는 데 사용할 수 있는 도구 집합을 제공합니다. 이러한 도구를 통해 AI 에이전트는 다음과 같은 작업을 수행할 수 있습니다.
- 문제 해결 및 진단
- 클러스터의 상태 분석
- AKS 리소스 운영 (CRUD)
- AKS 클러스터(VNet, 서브넷, NSG(네트워크 보안 그룹), 경로 테이블 등)과 관련된 세부 정보를 검색합니다.
- 모범 사례 적용 및 권장 기능 활성화
- 다중 클러스터 시나리오에 대한 Azure Fleet 작업 관리
AKS MCP 서버는 GitHub 리포지토리에서 사용할 수 있는 예제 템플릿 및 Helm 구성이 있는 완전히 오픈 소스 프로젝트입니다.
AKS MCP 서버를 사용하는 경우
AKS MCP 서버는 AKS 및 Microsoft Copilot 용 에이전트 CLI 를 포함하여 호환되는 AI 도우미와 함께 사용할 수 있습니다. 일반적인 사용 사례는 다음과 같습니다.
- AI 도우미에게 다음과 같은 질문을 합니다.
- "Pod가 이 클러스터에서 보류 중인 이유는 무엇인가요?"
- "내 AKS 클러스터의 네트워크 구성은 무엇인가요?"
- "app=frontend 레이블을 사용하여 클러스터에 nginx 워크로드를 배포하는 배치를 만듭니다."
- AI 도구에서 다음을 수행할 수 있도록 허용:
- 클러스터 상태 및 구성 읽기
- 메트릭, 이벤트 및 로그 검사
- Kubernetes 및 Azure 리소스 간에 신호 상관 관계 지정
- 변경 내용을 적용하고 클러스터에서 직접 새 기능을 사용하도록 설정
AKS MCP 서버를 통해 수행되는 모든 작업은 Kubernetes Role-Based RBAC(Access Control) 및 Azure RBAC에 의해 제한됩니다. 기본적으로 AKS MCP 서버는 클러스터 및 Azure 리소스에 액세스할 때 사용자의 권한을 상속합니다. AKS MCP 서버의 역할 및 권한을 사용자 지정하려면 기본 제공 RBAC 제어를 사용하여 원격 AKS MCP 서버 모드를 배포합니다.
사용 가능한 도구
AKS MCP 서버는 AKS 클러스터 및 관련 리소스와 상호 작용하기 위한 포괄적인 도구 집합을 제공합니다. 기본적으로 서버는 Kubernetes 및 Azure 리소스와 상호 작용하기 위한 보다 유연한 인터페이스를 제공하는 call_az(call_kubectlAzure 작업 및 Kubernetes 작업용)를 사용합니다.
AKS MCP 서버에는 읽기 전용(기본값), 읽기/쓰기 및 관리자의 세 가지 사용 권한 집합이 있습니다. 클러스터에 디버깅 Pod 또는 CRUD 작업 배포와 같은 작업을 수행하려면 일부 도구에 읽기/쓰기 또는 관리자 권한이 필요합니다. AKS-MCP 서버에 대한 읽기-쓰기 또는 관리자 권한을 사용하도록 설정하려면 MCP 구성 파일에 액세스 수준 매개 변수를 추가합니다.
-
mcp.json 파일로 이동하거나 MCP: 서버 나열 - AKS-MCP ->>명령 팔레트에 구성 세부 정보 표시(VS Code의 경우,
Ctrl+Shift+PWindows/Linux 또는Cmd+Shift+PmacOS)로 이동합니다. - AKS-MCP의 "args" 섹션에서 "--access-level", "readwrite" 또는 "admin" 매개 변수를 추가합니다.
다음은 그 예입니다.
"args": [
"--transport",
"stdio",
"--access-level",
"readwrite"
]
이러한 도구는 통합 인터페이스를 통해 포괄적인 기능을 제공하도록 설계되었습니다.
Azure CLI 작업(통합 도구)
도구:call_az
Azure CLI 명령을 직접 실행하기 위한 통합 도구입니다. 이 도구는 Azure CLI 명령을 실행할 수 있는 유연한 인터페이스를 제공합니다.
매개 변수:
-
cli_command: 실행할 전체 Azure CLI 명령입니다. 예를 들어az aks list --resource-group myRG또는az vm list --subscription <sub-id>. -
timeout: 선택적 시간 제한(초)(기본값: 120)
사용 예:
{
"cli_command": "az aks list --resource-group myResourceGroup --output json"
}
액세스 제어:
- 읽기 전용: 읽기 작업만 허용됩니다.
- readwrite/admin: 읽기 및 쓰기 작업이 모두 허용됩니다.
중요합니다
명령은 파이프(|), 리디렉션>(, <), 명령 대체 또는 세미콜론(;) 같은 셸 기능이 없는 간단한 Azure CLI 호출이어야 합니다.
Kubernetes 작업(통합 도구)
통합 kubectl 도구
도구:call_kubectl
kubectl 명령을 직접 실행하기 위한 통합 도구입니다. 이 도구는 전체 인수 지원을 사용하여 모든 kubectl 명령을 실행할 수 있는 유연한 인터페이스를 제공합니다.
매개 변수:
-
args: kubectl 명령 인수입니다. 예를 들어get pods,describe node mynode또는apply -f deployment.yaml입니다.
사용 예:
{
"args": "get pods -n kube-system -o wide"
}
액세스 제어: 작업은 구성된 액세스 수준에 따라 제한됩니다.
- readonly: 읽기 작업(가져오기, 설명, 로그 등)만 허용됩니다.
- readwrite/admin: 변경 명령을 포함한 모든 작업(만들기, 삭제, 적용 등)
헬름
도구:call_helm
Kubernetes에 대한 Helm 패키지 관리자입니다.
Cilium
도구:call_cilium
eBPF 기반 네트워킹 및 보안을 위한 Cilium CLI입니다.
허블
도구:call_hubble
Cilium에 대한 허블 네트워크 관찰 가능성.
네트워크 리소스 관리
도구:aks_network_resources
AKS 클러스터에서 사용하는 Azure 네트워크 리소스 정보를 가져오기 위한 통합 도구입니다.
사용 가능한 리소스 종류:
-
all: 모든 네트워크 리소스에 대한 정보 가져오기 -
vnet: Virtual Network 정보 -
subnet: 서브넷 정보 -
nsg: 네트워크 보안 그룹 정보 -
route_table: 경로 테이블 정보 -
load_balancer: 로드 밸런서 정보 -
private_endpoint: 프라이빗 엔드포인트 정보
모니터링 및 진단
도구:aks_monitoring
AKS 클러스터에 대한 Azure 모니터링 및 진단 작업을 위한 통합 도구입니다.
사용 가능한 작업:
-
metrics: 리소스에 대한 메트릭 값 나열 -
resource_health: AKS 클러스터에 대한 리소스 상태 이벤트 검색 -
app_insights: Application Insights 원격 분석 데이터에 대해 KQL 쿼리 실행 -
diagnostics: AKS 클러스터에 진단 설정이 구성되어 있는지 확인 -
control_plane_logs: 안전 제약 조건 및 시간 범위 유효성 검사를 사용하여 AKS 컨트롤 플레인 로그 쿼리
컴퓨팅 리소스
도구:get_aks_vmss_info
- AKS 클러스터에서 Virtual Machine Scale Sets(노드 풀)의 자세한 구성 가져오기
플릿 관리
도구:az_fleet
다중 클러스터 시나리오에 대한 포괄적인 Azure Fleet 관리.
사용 가능한 작업:
- Fleet Operations: 목록, 열기, 생성, 업데이트, 삭제, 자격증명 가져오기
- 멤버 작업: 목록, 표시, 만들기, 업데이트, 삭제
- 실행 작업 업데이트: 목록, 표시, 만들기, 시작, 중지, 삭제
- 업데이트 전략 작업: 목록, 표시, 만들기, 삭제
- ClusterResourcePlacement 작업: 목록, 표시, 가져오기, 만들기, 삭제
Azure Fleet 관리 및 Kubernetes ClusterResourcePlacement CRD 작업을 모두 지원합니다.
진단 탐지기
도구:aks_detector
AKS 진단 탐지기 작업을 실행하기 위한 통합 도구입니다.
사용 가능한 작업:
-
list: 사용 가능한 모든 AKS 클러스터 감지기 나열 -
run: 특정 AKS 진단 탐지기 실행 -
run_by_category: 특정 범주의 모든 탐지기 실행
매개 변수:
-
operation(필수): 수행할 작업(list또는runrun_by_category) -
aks_resource_id(필수): AKS 클러스터 리소스 ID -
detector_name(작업에 필요run): 실행할 탐지기의 이름 -
category(run_by_category작업에 필요): 감지기 범주 -
start_time(필수run및run_by_category작업): UTC ISO 형식의 시작 시간(지난 30일 이내) -
end_time(필수run및run_by_category작업): UTC ISO 형식의 종료 시간(지난 30일 이내, 시작 후 최대 24시간)
사용 가능한 범주:
- 모범 사례
- 클러스터 및 컨트롤 플레인 가용성 및 성능
- 연결 문제
- 만들기, 업그레이드, 삭제 및 크기 조정
- 사용 중단
- ID 및 보안
- 노드 상태
- Storage
사용 예:
도구:run_detectors_by_category
{
"operation": "list",
"aks_resource_id": "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.ContainerService/managedClusters/xxx"
}
{
"operation": "run",
"aks_resource_id": "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.ContainerService/managedClusters/xxx",
"detector_name": "node-health-detector",
"start_time": "2025-01-15T10:00:00Z",
"end_time": "2025-01-15T12:00:00Z"
}
Azure Advisor
도구:aks_advisor_recommendation
AKS 클러스터에 대한 Azure Advisor 권장 사항을 검색하고 관리합니다.
사용 가능한 작업:
-
list: 필터링 옵션을 사용하여 권장 사항 나열 -
report: 권장 사항 보고서 생성 - 필터 옵션: resource_group, cluster_names, 범주(비용, 고가용성, 성능, 보안), 심각도(높음, 중간, 낮음)
실시간 관찰 가능성
도구:inspektor_gadget_observability
eBPF를 사용하는 AKS(Azure Kubernetes Service) 클러스터에 대한 실시간 관찰 도구입니다.
사용 가능한 작업:
-
deploy: 클러스터에 Inspektor 가젯 배포 -
undeploy: 클러스터에서 Inspektor 가젯 제거 -
is_deployed: 배포 상태 확인 -
run: 원샷 가젯 실행 -
start: 연속 가젯 시작 -
stop: 가젯 실행 중지 -
get_results: 가젯 결과 검색 -
list_gadgets: 사용 가능한 가젯 나열
사용 가능한 가젯:
-
observe_dns: DNS 요청 및 응답 모니터링 -
observe_tcp: TCP 연결 모니터링 -
observe_file_open: 파일 시스템 작업 모니터링 -
observe_process_execution: 프로세스 실행 모니터링 -
observe_signal: 신호 전달 모니터링 -
observe_system_calls: 시스템 호출 모니터링 -
top_file: I/O 작업별 상위 파일 -
top_tcp: 트래픽별 상위 TCP 연결 -
tcpdump: 네트워크 패킷 캡처
AKS MCP 서버 시작
AKS MCP 서버에는 로컬 및 원격의 두 가지 모드가 있습니다. 이 섹션에서는 두 모드 모두에 대한 사용 사례 및 설치 프로세스를 다룹니다.
로컬 MCP 서버
로컬 모드에서 MCP 서버는 개발자의 로컬 컴퓨터에서 실행되고 개발자의 기존 권한을 사용하여 AKS에 연결합니다. 이 모드는 클러스터 쪽 구성 요소 없이 AKS 전문 지식 및 도구를 사용하여 로컬 AI 에이전트를 신속하게 설정하는 데 가장 적합합니다. 로컬 모드는 현재 클러스터 컨텍스트를 사용할 수 있으며 개발자의 Kubernetes 및 Azure RBAC 권한을 적용합니다. 기본적으로 로컬 AKS MCP 서버는 STDIO 및 SSE 전송 모드를 지원합니다.
필수 조건
AKS MCP 서버를 설치하기 전에 Azure CLI 를 설정하고 다음을 인증합니다.
az login
AKS-MCP 시작하는 가장 쉬운 방법은 VS Code용 Azure Kubernetes 서비스 확장을 사용하는 것입니다. AKS 확장은 이진 다운로드, 업데이트 및 구성을 자동으로 처리하여 최적의 설정으로 항상 최신 버전을 사용할 수 있도록 합니다.
1단계: AKS 확장 설치
- VS Code를 열고 확장(
Ctrl+Shift+XWindows/Linux 또는Cmd+Shift+XmacOS)으로 이동합니다. - Azure Kubernetes Service를 검색합니다.
- 공식 Microsoft AKS 확장을 설치합니다.
2단계: AKS-MCP 서버 시작
-
명령 팔레트(
Ctrl+Shift+PWindows/Linux 또는Cmd+Shift+PmacOS)를 엽니다. - 검색 및 실행: AKS: AKS MCP 서버를 설치합니다.
설치가 성공하면 서버가 MCP: 목록 서버 (명령 팔레트를 통해)에 표시됩니다. 여기에서 MCP 서버를 시작하거나 해당 상태를 볼 수 있습니다.
3단계: AKS-MCP 사용 시작
시작되면 MCP 서버는 코-파일럿 채팅: 도구 구성 드롭다운에 MCP Server: AKS MCP 나타나며, AKS 환경에 맞춰 상황별 프롬프트를 개선할 준비가 됩니다. 기본적으로 모든 AKS-MCP 서버 도구가 사용하도록 설정됩니다. 사용 가능한 도구 목록을 검토하고 시나리오에 필요하지 않은 도구를 사용하지 않도록 설정할 수 있습니다.
"모든 AKS 클러스터 나열"이라는 프롬프트를 사용하여 AKS-MCP 서버의 도구 사용을 시작합니다.
팁 (조언)
WSL 구성: Windows에서 WSL과 함께 VS Code를 사용하는 경우, "command": "wsl"를 사용하여 WSL 이진 파일을 호출합니다. VS Code가 WSL(Remote-WSL) 내에서 실행되는 경우 이진 파일을 직접 호출하거나 대신 bash 래퍼를 사용합니다.
원격 MCP 서버
원격 모드에서 MCP 서버는 AKS 클러스터 내의 워크로드 또는 선택한 컴퓨팅으로 실행됩니다. 이 모드는 공유 도구, 사용자 간에 일관된 권한 및 Kubernetes ServiceAccount 및 워크로드 ID를 사용하는 모든 액세스 제어가 있는 프로덕션 환경에 가장 적합합니다. 원격 AKS MCP 서버는 HTTP 프로토콜을 사용하여 AI 도우미와 AKS 클러스터 간의 상호 작용을 용이하게 합니다.
필수 조건
- Kubernetes 1.19 이상인 AKS 클러스터
- Helm 3.8+
- Azure CLI 설치 및 인증(
az login)
Helm 차트를 사용하여 설치
리포지토리를 복제하고 AKS-MCP Helm 차트를 설치합니다.
git clone https://github.com/Azure/aks-mcp.git
cd aks-mcp/chart
helm install aks-mcp . --namespace aks-mcp --create-namespace
구성 매개 변수의 전체 목록은 Helm 차트 설명서를 참조하세요.
인증 구성
환경 및 보안 요구 사항에 따라 인증 방법을 선택합니다.
워크로드 ID는 Kubernetes ServiceAccount를 Azure 관리 ID에 연결하여 암호 없는 인증을 제공합니다.
1. AKS 클러스터에서 OIDC 사용
az aks update \
--resource-group <your-resource-group> \
--name <your-aks-cluster> \
--enable-oidc-issuer \
--enable-workload-identity
2. 관리 ID 만들기 및 RBAC 권한 할당
# Create identity
az identity create --resource-group <your-resource-group> --name aks-mcp-identity --location <your-location>
# Get IDs
IDENTITY_CLIENT_ID=$(az identity show --resource-group <your-resource-group> --name aks-mcp-identity --query "clientId" -o tsv)
IDENTITY_PRINCIPAL_ID=$(az identity show --resource-group <your-resource-group> --name aks-mcp-identity --query "principalId" -o tsv)
# Assign Reader role (use Contributor for readwrite access)
az role assignment create --role "Reader" --assignee-object-id $IDENTITY_PRINCIPAL_ID --assignee-principal-type ServicePrincipal --scope "/subscriptions/<subscription-id>"
3. 페더레이션 ID 자격 증명 만들기
AKS_OIDC_ISSUER=$(az aks show --resource-group <your-resource-group> --name <your-aks-cluster> --query "oidcIssuerProfile.issuerUrl" -o tsv)
az identity federated-credential create \
--name "aks-mcp-federated-credential" \
--identity-name aks-mcp-identity \
--resource-group <your-resource-group> \
--issuer $AKS_OIDC_ISSUER \
--subject "system:serviceaccount:aks-mcp:aks-mcp" \
--audience api://AzureADTokenExchange
중요합니다
Helm 차트를 설치 하기 전에 페더레이션 자격 증명을 만듭니다.
4. 워크로드 ID를 사용하도록 설정하여 설치
helm install aks-mcp . \
--namespace aks-mcp \
--create-namespace \
--set workloadIdentity.enabled=true \
--set azure.clientId=$IDENTITY_CLIENT_ID \
--set azure.subscriptionId=<your-subscription-id>
Azure 앱 라우팅으로 인그레스를 활성화하세요.
Azure 앱 라우팅을 사용하여 MCP 서버를 외부에서 노출합니다.
# Enable App Routing on your cluster
az aks approuting enable --resource-group <your-resource-group> --name <your-cluster-name>
# Install with Ingress enabled
helm install aks-mcp . \
--namespace aks-mcp \
--create-namespace \
--set ingress.enabled=true \
--set ingress.hosts[0].host=aks-mcp.example.com \
--set ingress.hosts[0].paths[0].path=/ \
--set ingress.hosts[0].paths[0].pathType=Prefix \
--set azure.existingSecret=azure-credentials
MCP 클라이언트 연결
배포 후 AI 도우미를 원격 MCP 서버에 연결합니다.
# Port forward for local testing
kubectl port-forward svc/aks-mcp 8000:8000 -n aks-mcp
연결하도록 MCP 클라이언트를 구성합니다.
{
"mcpServers": {
"aks-mcp": {
"url": "http://localhost:8000",
"transport": "streamable-http"
}
}
}
클러스터 내 액세스의 경우 다음을 사용합니다. http://aks-mcp.aks-mcp.svc.cluster.local:8000
Helm 구성 참조
| 매개 변수 | Description | Default |
|---|---|---|
workloadIdentity.enabled |
Azure 워크로드 ID 활성화 | false |
azure.clientId |
Azure 클라이언트 ID | "" |
azure.tenantId |
Azure 테넌트 ID | "" |
azure.clientSecret |
Azure 클라이언트 암호 | "" |
azure.subscriptionId |
Azure 구독 ID | "" |
azure.existingSecret |
기존 Kubernetes 비밀 사용 | "" |
app.accessLevel |
액세스 수준: readonly, readwriteadmin |
readonly |
app.transport |
전송: stdio, sse, streamable-http |
streamable-http |
oauth.enabled |
OAuth 인증 사용 | false |
ingress.enabled |
인그레스 활성화 | false |
AKS MCP 서버 제거
AKS MCP 서버를 제거하는 프로세스는 배포 모드와 현재 실행 중인 위치에 따라 달라집니다.
AKS 확장을 사용하는 VS Code
-
명령 팔레트(
Ctrl+Shift+PWindows/Linux 또는Cmd+Shift+PmacOS)를 엽니다. - MCP 실행: 서버 나열
- 목록에서 AKS MCP 를 선택합니다.
- 서버 중지를 선택하여 실행 중인 서버를 중지합니다.
- 구성을 제거하려면 서버 구성 삭제를 선택합니다.
또는 서버 구성을 수동으로 제거합니다.
-
.vscode/mcp.json파일 또는 VS Code 사용자 설정을 엽니다. -
aks-mcp-server또는servers개체에서github.copilot.chat.mcp.servers항목을 삭제합니다. - 시스템에서 AKS-MCP 이진 파일을 삭제합니다(위치는 설치 방법에 따라 다름).
도커
Docker MCP 도구 키트를 사용하는 경우:
- Docker Desktop을 엽니다.
- 왼쪽 사이드바에서 MCP 도구 키트 를 선택합니다.
- AKS-MCP 서버를 찾아 사용하지 않도록 설정합니다.
컨테이너화된 구성을 사용하는 경우 컨테이너를 중지하고 제거합니다.
docker stop <container-id>
docker rm <container-id>
기타 MCP 클라이언트
aks 또는 aks-mcp 항목을 MCP 클라이언트 구성 파일(예: Claude Desktop의 경우)에서 제거합니다.
일반적인 문제 및 문제 해결
이 섹션에서는 일반적인 설정 및 런타임 문제, 증상 및 해결 방법을 간략하게 설명합니다.
AKS MCP 서버가 클러스터에 액세스할 수 없습니다.
증상:
- 도구에서 권한 부여 오류를 반환합니다.
- 리소스가 표시되지 않음
가능한 원인:
- 사용자 또는 MCP ID에 충분한 권한이 없습니다.
- 잘못된 ServiceAccount 바인딩
- 잘못 구성된 kubeconfig 컨텍스트(로컬 모드)
해결 방법:
- 로컬 모드: 클러스터에 액세스할 수 있는 충분한 권한이 있는지 확인합니다. 올바른 클러스터 및 구독 컨텍스트에 있는지 확인합니다.
- 원격 모드: MCP 서버에서 사용하는 ServiceAccount에 대한 ClusterRole 바인딩 확인
Azure API 호출 실패
증상:
- call_az 도구는 인증 또는 권한 부여 오류를 반환합니다.
가능한 원인:
- 클러스터에 대해 워크로드 ID를 사용하도록 설정되지 않음
- ServiceAccount가 페더레이션되지 않음
- 누락된 Azure RBAC 할당
해결 방법:
- 클러스터에서 워크로드 ID가 사용하도록 설정되어 있는지 확인합니다.
- 페더레이션 ID 구성 확인
- 관리 ID에 적절한 Azure 역할 할당
다음 단계:
AKS용으로 기본적으로 빌드된 지능형 기능에 대해 자세히 알아봅니다.
- AKS용 에이전트 특성을 가진 CLI 소개
- AKS용 에이전트 CLI 설치 및 사용