1. 소개
이 실습에서는 인프라 관리를 위해 Gemini CLI와 GKE 모델 컨텍스트 프로토콜 (MCP) 서버를 사용하는 방법을 기술적으로 소개합니다. 기존 GKE 관리에서는 운영자가 인프라 요구사항을 gcloud 명령어로 수동으로 변환하고 애플리케이션 정의를 작성된 YAML 매니페스트로 변환합니다. 이 실습에서는 자연어 의도와 Google Kubernetes Engine (GKE)의 기술적 실행을 연결하는 대화형 인터페이스를 사용하는 다른 접근 방식을 보여줍니다. 이러한 변화는 플랫폼 엔지니어링의 광범위한 추세의 일부로, 엄격한 자동화 스크립트를 빌드하는 데서 인프라 운영의 미묘한 세부사항을 처리할 수 있는 지능형 에이전트를 관리하는 데로 초점이 이동합니다.
핵심 개념
- 플랫폼 엔지니어링: 소프트웨어 개발자가 모든 기본 클라우드 서비스의 전문가가 될 필요 없이 자체 인프라를 관리할 수 있도록 내부 도구와 워크플로를 빌드하고 유지보수하는 관행입니다. 목표는 일관성과 보안을 유지하면서 기술적 마찰을 줄이는 것입니다. 표준화된 골든 경로를 만들어 플랫폼팀은 애플리케이션 개발자가 안전하고 빠르게 배포할 수 있도록 지원하고 플랫폼팀은 거버넌스와 비용을 관리할 수 있습니다.
- Gemini CLI: 터미널에서 바로 Gemini 모델과 상호작용할 수 있도록 지원하는 명령줄 인터페이스입니다. 표준 웹 기반 챗봇과 달리 CLI는 개발 환경 내에 존재하도록 설계되어 기존 셸 기반 워크플로에 AI를 더 쉽게 통합할 수 있습니다. 이를 통해 터미널 환경을 벗어나지 않고도 다른 명령어의 출력을 모델로 직접 파이프하고 명령어를 실행할 수 있습니다.
- 모델 컨텍스트 프로토콜 (MCP): MCP는 AI 모델이 특정 도구 또는 데이터 소스에 연결할 수 있도록 지원하는 개방형 표준입니다. MCP가 없으면 AI 모델은 학습된 내용만 알고 사용자의 특정 리소스를 볼 수 없습니다. GKE MCP 서버를 사용하면 Gemini CLI가 Google Cloud 프로젝트의 API를 적극적으로 쿼리하고, 클러스터의 상태를 검사하고, 사용자를 대신하여 명령어를 실행할 수 있습니다. 모델의 추론 엔진과 실제 GKE API 사이의 브리지 역할을 합니다.
실습 목표
이 세션의 목표는 다음과 같습니다.
- 환경 구성: Cloud Shell에 액세스하고 GKE MCP 확장 프로그램을 인증하여 Gemini CLI가 Google Cloud 리소스와 상호작용하도록 허용합니다.
- 인프라 설계: 대화형 프롬프트를 사용하여 비용, 관리 오버헤드, 워크로드 요구사항에 따라 최적의 클러스터 구성을 결정합니다.
- 리소스 관리: 자연어를 사용하여 Kubernetes 매니페스트 (배포, 서비스 등)를 생성, 감사, 배포합니다.
- 운영 분석: AI의 로그 및 이벤트 집계 기능을 사용하여 배포 실패의 근본 원인을 파악하고 구체적인 기술 수정사항을 제안합니다.
2. 프로젝트 설정
Gemini CLI가 리소스와 상호작용하려면 Google Cloud 환경이 올바르게 구성되어 있어야 합니다. 이렇게 설정하면 프로젝트에 올바른 권한이 있고 필요한 모든 백엔드 서비스가 AI 에이전트의 요청을 받을 준비가 됩니다.
Cloud Shell 열기
이 실습에서는 Google Cloud에서 제공하는 브라우저 기반 터미널 환경인 Cloud Shell을 사용합니다. Cloud Shell에는 Google Cloud CLI (gcloud), kubectl, Gemini CLI를 비롯해 필요한 모든 도구가 사전 구성되어 있으므로 로컬 머신에 이러한 도구를 설치하는 시간을 절약할 수 있습니다.
- Google Cloud Console로 이동합니다.
- 콘솔의 오른쪽 상단 헤더를 확인하고 Cloud Shell 활성화 버튼 (터미널 프롬프트
>_와 유사함)을 클릭합니다. - 브라우저 창 하단에 터미널 세션이 열립니다. 메시지가 표시되면 계속을 클릭합니다.
프로젝트 선택
Cloud Shell 터미널에서 올바른 프로젝트 내에서 작업하고 있는지 확인합니다.
- 콘솔에서 기존 프로젝트를 선택하거나 이 실습을 위한 새 프로젝트를 만듭니다.
- 프로젝트 ID를 기록해 둡니다.
gcloud config set project [YOUR_PROJECT_ID]를 실행하여 현재 셸에서 프로젝트를 설정할 수 있습니다.
API 사용 설정
Kubernetes 및 AI 기능은 새 프로젝트에 대해 기본적으로 사용 설정되지 않습니다. 이러한 API를 사용 설정하면 컨테이너 관리, 생성형 모델, 중앙 집중식 로깅을 처리하는 기본 Google Cloud 서비스가 초기화됩니다.
👉💻 Cloud Shell에서 다음 명령어를 실행하여 사용 설정합니다. 이 과정은 1분 정도 걸릴 수 있습니다.
gcloud services enable \
container.googleapis.com \
generativelanguage.googleapis.com \
cloudresourcemanager.googleapis.com \
logging.googleapis.com
- container.googleapis.com: Google Kubernetes Engine API입니다. 클러스터 생성, 업데이트, 삭제를 비롯한 모든 클러스터 수준 작업에 필요합니다.
- generativelanguage.googleapis.com: Gemini CLI가 텍스트 생성 및 추론을 위해 Gemini 대규모 언어 모델과 통신할 수 있도록 지원하는 API입니다.
- cloudresourcemanager.googleapis.com: 에이전트가 프로젝트 수준 메타데이터를 검사하고, 프로젝트 ID를 확인하고, IAM 권한을 관리하는 데 필요합니다.
- logging.googleapis.com: 문제가 발생할 때 MCP 서버가 컨테이너에서 로그를 가져와 분석할 수 있으므로 문제 해결에 필수적입니다.
3. Gemini CLI 구성
Cloud Shell에는 Gemini CLI가 기본적으로 포함되어 있으므로 이 워크플로에 적합한 환경입니다. 첫 번째 단계는 GKE 환경을 관리하는 데 필요한 권한과 특정 도구를 모두 갖춘 '에이전트' 역할을 하도록 구성하는 것입니다. 이 구성 단계는 AI의 로직과 실제 클라우드 인프라 간의 보안 연결을 설정하므로 매우 중요합니다.
Gemini CLI 시작
Cloud Shell 터미널에서 새 작업 디렉터리를 만들고 Gemini CLI를 실행합니다. 이렇게 하면 모델과 연속으로 대화할 수 있는 세션이 시작됩니다. 일회성 명령어와 달리 대화형 모드는 이전 명령어와 프로젝트 상태를 기억하는 컨텍스트 창을 유지합니다.
👉💻 다음 명령어를 실행합니다.
mkdir -p ~/gke-lab
cd ~/gke-lab
gemini

내부에서 도구의 기본 인식 기능을 테스트하여 환경을 볼 수 있는지 확인합니다.
- 👉💬 프롬프트:
Which Google Cloud project is currently active in this shell?
gcloud 명령어 실행을 확인하라는 메시지가 표시될 수 있으며, 이 경우 수락하면 됩니다.
/quit를 입력하여 언제든지 인터페이스를 종료할 수 있습니다.
참고: Gemini 2.5 Pro의 용량 문제가 발생하는 경우
gemini -m gemini-2.5-flash
또는
/model
명령어를 사용합니다.
GKE MCP 확장 프로그램 연결
기본적으로 Gemini CLI는 범용 도구이며 클러스터와 상호작용하는 방법에 관한 구체적인 지식이 없습니다. GKE MCP 확장 프로그램을 설치해야 합니다. 이 확장 프로그램은 모델이 작업을 실행해야 할 때 호출할 수 있는 특정 도구 및 함수(예: '클러스터 목록' 또는 '포드 로그 가져오기')를 정의하는 플러그인 역할을 합니다.
👉💻 다음 명령어를 실행하여 GKE 확장 프로그램을 설치하고 Gemini CLI를 다시 엽니다.
gemini extensions install https://github.com/GoogleCloudPlatform/gke-mcp.git
gemini
Gemini CLI를 다시 입력하고 다음을 입력하여 올바르게 사용 설정되었는지 확인할 수 있습니다.
/extensions
4. 인프라 프로비저닝
기존 인프라 프로비저닝에는 복잡한 문서를 탐색하거나 수백 줄의 구성 코드를 작성하는 작업이 포함되는 경우가 많습니다. 에이전트를 사용하면 요구사항을 설명하는 데 집중하고 AI가 올바른 API 호출로 기술적 번역을 처리하도록 할 수 있습니다. 이 섹션에서는 계획 단계와 GKE 환경의 실제 생성 모두에 에이전트를 사용하는 방법을 보여줍니다.
기술 계획 및 비교
클러스터를 만들기 전에 요구사항에 맞는 아키텍처를 선택해야 합니다. GKE는 기본 노드를 완전히 제어할 수 있는 Standard 모드와 Google에서 노드를 관리하고 포드에서 요청한 리소스를 기준으로 요금을 지불하는 Autopilot 모드라는 두 가지 기본 모드를 제공합니다. 간단한 질문을 통해 두 가지의 차이점을 이해하고 특정 사용 사례에 어떤 것을 사용할지 브레인스토밍해 보겠습니다.
- 👉💬 프롬프트:
I need to run a standard 3-tier web application. Compare GKE Standard and GKE Autopilot. Focus on the operational effort for a small team and the cost structure for small workloads.
다른 인프라 아이디어에 관해 질문해 보세요. AI 추론 워크로드를 배포하거나, 매우 큰 규모가 필요하거나, 복잡한 네트워킹 제약 조건이 있는 경우에는 어떻게 해야 할까요? 다른 프롬프트를 사용해 보세요.
클러스터 생성 실행
비교를 검토하고 선택한 후에는 에이전트에게 클러스터를 빌드하도록 지시할 수 있습니다. 에이전트는 요청을 분석하고 GKE MCP 서버에서 create_cluster 도구를 호출하여 이러한 요구사항에 따라 프로덕션 준비 환경을 배포합니다.
- 👉💬 프롬프트:
Create a GKE Standard zonal cluster named 'gke-lab' in us-central1-a with 1 node with 4 CPUs. The cluster should have Workload Identity enabled.
참고: GKE 클러스터 프로비저닝에는 제어 영역, 가상 프라이빗 네트워크, 초기 노드 구성을 설정하는 작업이 포함되며 일반적으로 8~10분이 걸립니다. Gemini CLI 세션을 닫지 마세요.
클러스터 상태를 물어보면 GKE MCP 서버를 활용하여 최신 정보를 반환합니다.
- 👉💬 프롬프트:
Is the new GKE cluster created and ready to use, yet?
5. 배포 및 검증
플랫폼 엔지니어링에 AI 에이전트를 사용하면 구성에 대한 '사전 비행' 검사와 감사를 실행할 수 있다는 큰 이점이 있습니다. 매니페스트를 배포하고 실패할 때까지 기다리는 대신 에이전트를 사용하여 YAML이 기술적으로 건전하고 클러스터에 도달하기 전에 조직의 보안 정책을 준수하는지 확인할 수 있습니다.
매니페스트 생성
에이전트에게 배포 매니페스트를 만들어 달라고 요청합니다. 에이전트는 Kubernetes API 버전 관리 및 스키마를 이해하므로 올바르게 형식이 지정되고 성공적인 배포에 필요한 모든 필드가 포함된 YAML을 생성합니다.
- 👉💬 프롬프트:
Generate a Kubernetes YAML manifest for an Nginx web server. I need 3 replicas. Set a memory limit of 256Mi and a CPU limit of 500m. Also, include a Service of type LoadBalancer to make it accessible via the internet. Save the manifest as web-server.yaml
기술 검증 및 보안 감사
YAML을 수동으로 만들면 필요한 것보다 더 많은 권한으로 실행되거나 기본적인 안정성 기능이 부족한 구성이 생성되는 경우가 많습니다. 에이전트를 사용하여 방금 생성한 매니페스트를 감사하여 보안 및 복원력에 관한 최신 표준을 충족하는지 확인할 수 있습니다.
- 👉💬 프롬프트:
Review the Nginx manifest you just created. Does it include resource requests (not just limits)? Does it specify a non-root user for the container? Add a Pod Disruption Budget to ensure high availability during cluster maintenance. Make any necessary modifications to the file, and tell me what changes were made.
배포 실행
이전 섹션의 클러스터 프로비저닝이 완료되면 Gemini CLI에 새 클러스터에 구성을 적용하도록 지시합니다. 에이전트는 도구를 사용하여 Kubernetes API 서버와 통신하고 요청된 리소스를 만듭니다.
- 👉💬 프롬프트:
Deploy the audited Nginx manifest to the 'gke-lab' cluster. Use the kubectl command to do this.
실시간 상태 확인
kubectl get pods 또는 kubectl describe 명령어를 여러 개 실행하는 대신 에이전트에게 배포 진행 상황에 관한 자연어 요약을 요청할 수 있습니다.
- 👉💬 프롬프트:
Are the Nginx pods running? Provide the external IP address assigned to the LoadBalancer once it is available.
문제가 발생했나요?
Nginx 서비스가 성공적으로 배포되지 않는 것 같으면 Gemini CLI로 문제를 해결해 보세요. 이 기능은 사용자를 지원하기 위해 마련되었습니다.
- 👉💬 프롬프트:
The Nginx deployment doesn't start up as expected. Can you help troubleshoot?
6. 유지보수 및 문제 해결
AI 기반 플랫폼의 가장 가치 있는 측면 중 하나는 '2일차' 운영 기능입니다. 시스템이 실패하면 수천 개의 로그 행을 검색하여 중요한 오류를 찾는 것이 문제입니다. MCP와 함께 Gemini CLI를 사용하면 에이전트가 로그, 이벤트, 상태 메시지를 집계하여 높은 수준의 진단과 구체적인 해결 방법을 제공할 수 있습니다.
수동 실패 삽입
에이전트의 진단 기능을 테스트하기 위해 의도적으로 실패 상태를 만듭니다. 별도의 터미널 탭에서 이 명령어를 실행하여 존재하지 않는 컨테이너 이미지로 배포를 업데이트합니다. 이는 컨테이너 태그의 오타라는 일반적인 인적 오류를 시뮬레이션합니다.
👉💻 Gemini CLI 외부에서 다음 명령어를 실행합니다.
kubectl set image deployment/nginx nginx=nginx:invalid-version-xyz123
참고: 배포 이름이 정확히 'nginx'가 아닐 수도 있습니다. 를 실행하여 이를 확인할 수 있습니다.
kubectl get deployments
Kubernetes는 이 이미지를 가져오려고 시도하지만 태그를 찾을 수 없으므로 실패하고 포드는 ImagePullBackOff 상태가 됩니다.
Gemini CLI를 사용한 분석
Gemini CLI 세션으로 돌아갑니다. Cloud Logging 콘솔을 수동으로 검색하는 대신 에이전트에게 오류를 찾아 설명해 달라고 요청하세요.
- 👉💬 프롬프트:
The Nginx deployment on my 'gke-lab' cluster has stopped working. Use your tools to inspect the cluster state, check the recent events, and explain exactly why the pods are failing to start.
여기서 일어나는 일: Gemini CLI는 배포가 비정상임을 확인합니다. 그런 다음 사용할 수 있는 도구를 사용하여 실패한 포드를 검사합니다. 상담사는 풀 오류를 식별하고 태그가 유효하지 않다고 설명하며 알려진 양호한 이미지로 되돌릴 것을 제안합니다.
유지보수 및 위험 평가
플랫폼 유지관리에는 업그레이드 및 지원 중단에 대한 사전 대응이 포함됩니다. 에이전트에게 SRE 역할을 맡아 클러스터의 상태와 수명을 평가해 달라고 요청할 수 있습니다.
- 👉💬 프롬프트:
Is my cluster 'gke-lab' running the latest version of GKE? Check for available upgrades and let me know if any of my current resources use deprecated APIs that would break during an upgrade.
이로 인해 Gemini가 클러스터 상태 및 추천 도구와 같은 GKE MCP 서버 도구를 호출할 수 있습니다.
7. 결론
이 실습에서는 클라우드 인프라와 상호작용하는 새로운 방법을 보여주었습니다. Gemini CLI와 MCP를 통해 AI 에이전트를 터미널 워크플로에 직접 통합함으로써 명령어를 수동으로 작성하는 것에서 의도를 지시하는 것으로 전환했습니다. 이 접근 방식을 사용하면 플랫폼 팀은 인간 엔지니어가 상위 수준 아키텍처와 문제 해결에 집중하는 동안 Kubernetes 관리의 반복적이고 오류가 발생하기 쉬운 세부정보를 처리하는 지능형 인터페이스를 제공하여 전문성을 확장할 수 있습니다.
실습 요약
- 연결: 모델 컨텍스트 프로토콜을 사용하여 Gemini CLI를 GKE API에 연결하여 AI 모델이 프로젝트 상태를 직접 확인할 수 있도록 했습니다.
- 인프라: 자연어를 사용하여 GKE 클러스터를 설계하고 프로비저닝하여 복잡한 CLI 플래그를 기억할 필요가 없습니다.
- 개발: YAML을 수동으로 수정하지 않고 Kubernetes 리소스를 생성하고, 보안을 위해 감사하고, 배포하여 처음부터 권장사항을 따랐습니다.
- 운영: AI를 사용하여 손상된 배포에 대한 근본 원인 분석을 수행하여 AI가 로그와 이벤트를 요약하도록 함으로써 평균 복구 시간을 크게 단축했습니다.
삭제
이 실습에서 만든 리소스에 대해 Google Cloud 요금이 계속 청구되지 않도록 하려면 에이전트에게 클러스터를 삭제하도록 지시하면 됩니다.
참고: 다른 실습에서 GKE 클러스터를 재사용할 계획이라면 이 단계를 건너뛰세요.
- 👉💬 프롬프트:
Delete the 'gke-lab' cluster and any associated resources.
다음 단계
추가 자료:
- Gemini CLI 문서: Gemini CLI의 공식 문서입니다.
- GKE 문서: 모든 GKE 문서의 방문 페이지입니다.
- Google Cloud의 플랫폼 엔지니어링: Google Cloud에서 플랫폼 엔지니어링에 접근하는 방법에 관한 안내입니다.
- GKE의 AI 및 머신러닝: GKE에서 AI/ML 워크로드를 실행하는 방법에 관한 문서입니다.
- Google Cloud 아키텍처 센터: Google Cloud에서 워크로드를 빌드하기 위한 가이드 및 권장사항