Codelab - AI 기반 Kubernetes 어시스턴트인 kubectl-ai로 Kubernetes 관리

1. 소개

kubectl-ai는 사용자 의도를 정확한 Kubernetes 작업으로 변환하여 Kubernetes 관리를 더 쉽게 하고 효율적으로 만드는 AI 기반 지능형 인터페이스입니다.

d62a763b2dba5ba7.png

실행할 작업

  • GKE 클러스터를 관리하기 위해 AI 기반 Kubernetes 어시스턴트 도구인 kubectl-ai를 사용합니다.

학습할 내용

  • GKE 클러스터를 만들고 kubectl-ai.을 설정합니다.
  • 클러스터 및 리소스 문제 해결을 통해 리소스 관리, 생성, 패치와 같은 Kubernetes 작업을 수행합니다.

필요한 항목

  • Chrome 웹브라우저
  • Gmail 계정
  • 결제가 사용 설정된 Cloud 프로젝트
  • Gemini API 키

이 Codelab에서는 사용자가 Kubernetes에 대한 기본 지식을 알고 있다고 가정합니다.

2. 시작하기 전에

프로젝트 만들기

  1. Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
  2. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요 .
  3. bq가 미리 로드되어 제공되는 Google Cloud에서 실행되는 명령줄 환경인 Cloud Shell을 사용합니다. Google Cloud 콘솔 상단에서 Cloud Shell 활성화를 클릭합니다.

Cloud Shell 활성화 버튼 이미지

  1. Cloud Shell에 연결되면 다음 명령어를 사용하여 인증이 완료되었고 프로젝트가 해당 프로젝트 ID로 설정되었는지 확인합니다.
gcloud auth list
  1. Cloud Shell에서 다음 명령어를 실행하여 gcloud 명령어가 프로젝트를 알고 있는지 확인합니다.
gcloud config list project
  1. 프로젝트가 설정되지 않은 경우 다음 명령어를 사용하여 설정합니다.
gcloud config set project <YOUR_PROJECT_ID>
  1. 아래에 표시된 명령어를 통해 필수 API를 사용 설정합니다. 몇 분 정도 걸릴 수 있으니 잠시만 기다려 주세요.
gcloud services enable cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       compute.googleapis.com \
                       container.googleapis.com

명령어가 성공적으로 실행되면 아래와 비슷한 메시지가 표시됩니다.

Operation "operations/..." finished successfully.

API가 누락된 경우 구현 과정에서 언제든지 사용 설정할 수 있습니다.

gcloud 명령어 및 사용법은 문서를 참조하세요.

3. GKE 클러스터 설정

이 단계에서는 명령어를 실행할 GKE 클러스터를 설정합니다. 이전 단계를 따라 Google Cloud 프로젝트에서 올바른 프로젝트 ID를 설정하고 필요한 서비스를 사용 설정했는지 확인합니다.

GKE 클러스터 만들기

Cloud Shell에 제공된 다음 명령어를 실행합니다. 다른 영역에 클러스터를 만들려면 --zone 값을 해당 영역으로 변경하세요.

gcloud container clusters create my-gke-cluster \
       --num-nodes 2 \
       --machine-type e2-standard-4 \
       --zone us-central1-a

완료하는 데 시간이 걸릴 수 있으니 잠시 기다려 주세요. 완료되면 아래와 비슷한 출력이 표시됩니다.

Note: Your Pod address range (`--cluster-ipv4-cidr`) can accommodate at most 1008 node(s).
Creating cluster my-gke-cluster in us-central1-a... Cluster is being health-checked (Kubernetes Control Plane is healthy)...done.                                                                                                             
Created [https://container.googleapis.com/v1/projects/YOUR_PROJECT_ID/zones/us-central1-a/clusters/my-gke-cluster].
To inspect the contents of your cluster, go to: https://console.cloud.google.com/kubernetes/workload_/gcloud/us-central1-a/my-gke-cluster?project=YOUR_PROJECT_ID
kubeconfig entry generated for my-gke-cluster.
NAME: my-gke-cluster
LOCATION: us-central1-a
MASTER_VERSION: 1.33.4-gke.1350000
MASTER_IP: 34.59.221.183
MACHINE_TYPE: e2-standard-4
NODE_VERSION: 1.33.4-gke.1350000
NUM_NODES: 2
STATUS: RUNNING
STACK_TYPE: IPV4

GKE 클러스터 세부정보 확인

먼저 클러스터 사용자 인증 정보를 가져옵니다.

gcloud container clusters get-credentials my-gke-cluster \
                 --zone us-central1-a

아래와 같은 출력이 표시됩니다.

Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-gke-cluster.

다음으로 클러스터 세부정보를 확인합니다.

kubectl get nodes

다음과 같은 출력이 표시됩니다.

NAME                                            STATUS   ROLES    AGE     VERSION
gke-my-gke-cluster-default-pool-c63d5936-2f1z   Ready    <none>   2m58s   v1.33.4-gke.1350000
gke-my-gke-cluster-default-pool-c63d5936-fqtl   Ready    <none>   3m2s    v1.33.4-gke.1350000

마지막으로 클러스터 네임스페이스를 검증합니다.

kubectl get namespaces

다음과 같은 출력이 표시됩니다.

NAME                          STATUS   AGE
default                       Active   6m16s
gke-managed-cim               Active   4m21s
gke-managed-system            Active   4m6s
gke-managed-volumepopulator   Active   4m
gmp-public                    Active   3m40s
gmp-system                    Active   3m41s
kube-node-lease               Active   6m16s
kube-public                   Active   6m16s
kube-system                   Active   6m16s

4. kubectl-ai CLI 설치

kubectl-ai CLI를 설치하는 빠른 설치 (권장) 방법을 사용합니다.

Cloud Shell에서 다음 명령어를 제공합니다.

curl -sSL https://raw.githubusercontent.com/GoogleCloudPlatform/kubectl-ai/main/install.sh | bash

이렇게 하면 kubectl-ai CLI가 다운로드되고 설치되며, 마지막에 다음과 같은 메시지가 표시됩니다.

✅ kubectl-ai installed successfully! Run 'kubectl-ai --help' to get started.

다음 명령어를 실행하여 kubectl-ai 명령어가 작동하는지 확인할 수 있습니다.

kubectl-ai

참고: 위의 명령어는

creating llm client: GEMINI_API_KEY environment variable not set

kubectl-ai는 gemini, vertexai, azopenai, openai, grok, bedrock의 AI 모델과 ollama, llama.cpp과 같은 로컬 LLM 제공업체를 지원합니다. 이 예에서는 Gemini (Google)를 사용하므로 Google AI Studio를 통해 API 키를 가져와야 합니다. 키를 생성하고 값을 준비한 후 Cloud Shell에서 다음 명령어를 사용하여 키를 가리키는 환경 변수 GEMINI_API_KEY를 설정합니다.

export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"

참고: 키 값으로 'GEMINI_API_KEY'만 사용하세요.

kubectl-ai를 다시 실행하면 이번에는 kubectl-ai가 실행되고 대화형 터미널에서 명령어를 기다리는 것을 확인할 수 있습니다.

$ kubectl-ai

  Hey there, what can I help you with today?                                  

>>>  

프롬프트에서 kubectl 명령어와 관련된 몇 가지 질문을 시도해 보세요. 아래에 몇 가지 샘플이 나와 있습니다.

  • What is the command to get the nodes in a cluster?
  • list pods

quit을 입력하여 kubectl-ai 터미널을 종료할 수 있습니다.

5. kubectl-ai 사용

이제 kubectl-ai를 성공적으로 구성했으므로 여기에서 강조할 핵심 사항은 자연어 쿼리를 사용하여 클러스터와 상호작용할 수 있다는 것입니다. 다른 명령어를 몇 개 더 사용해 보겠습니다.

다음 명령어를 실행해 보겠습니다.

kubectl-ai --model gemini-2.5-flash "list pods in default namespace"

그러면 다음과 같은 출력이 생성됩니다.

Running: kubectl get pods -n default

There are no resources found in the default namespace.      

>>>

포드를 나열하는 자연어 쿼리가 이에 상응하는 kubectl 명령어로 변환된 것을 확인하세요.

또한 이제 kubectl-ai 대화형 터미널 (>>>) 내에 있으므로 계속해서 상호작용할 수 있습니다.

다음 명령어를 입력합니다.

how many pods are there in kube-system namespace

출력은 아래와 같습니다.

>>> how many pods are there in kube-system namespace

Running: kubectl get pods -n kube-system --output=jsonpath='{.items[*].metadata.name}'

There are 18 pods in the kube-system namespace.

단일 촬영 명령어

이전 섹션에서는 kubectl-ai를 실행하고 대화형 터미널에 남아 후속 명령어를 제공하는 방법을 보여주었습니다. 자율적으로 실행하고 사용자의 다음 명령어를 기다리는 대화형 프롬프트가 없는 명령에는 적합하지 않습니다.

--quiet 매개변수를 사용하여 단일 촬영 명령 메서드를 입력합니다.

다음은 배포를 만드는 샘플 명령어입니다.

kubectl-ai --quiet "create a deployment named nginx with 2 replicas" --skip-permissions

그러면 아래와 같이 create deployment 명령어가 실행됩니다.

Running: kubectl create deployment nginx --image=nginx --replicas=2

I have created a deployment named nginx with 2 replicas. You can verify this by running kubectl get deployments .

이러한 방식으로 현재 GKE 클러스터와 상호작용하도록 kubectl-ai를 설정할 수 있었습니다.

지금까지 몇 가지 명령어를 실행하고 kubectl-ai을 사용하는 모드를 살펴봤습니다. 출력을 다른 도구로 파이프하고, 오류를 파악하고, kubectl-ai의 여러 세션 실행 간 지속성을 파악하는 등의 작업을 할 수 있습니다. 도구 문서의 사용 섹션을 참고하세요.

6. (선택사항) kubectl-ai Chat 인터페이스

특정 상황에서는 표준 채팅 인터페이스를 통해 kubectl-ai를 사용하는 것이 더 나을 수 있습니다. Kubectl-ai에는 자체 UI 인터페이스가 제공되며, Cloud Shell에서 아래 표시된 명령어를 통해 실행할 수 있습니다.

kubectl-ai --llm-provider=gemini \ --ui-type=web \ --ui-listen-address=0.0.0.0:8080

그러면 인터페이스 채팅 인터페이스에서 유틸리티가 실행되고 다음과 비슷한 출력이 표시됩니다.

listening on http://[::]:8080

아래와 같이 Cloud Shell에서 웹 미리보기를 클릭합니다.

f990712162e8e924.png

그런 다음 포트 8080에서 미리보기를 클릭합니다. 그러면 브라우저가 실행되고 아래와 같이 웹 채팅 인터페이스가 제공됩니다.

90fce57ad7f16842.png

다음은 채팅 인터페이스에서 실행한 샘플 쿼리입니다.

6a304d227d3fa5a6.png

이 인터페이스에서 다른 질문을 사용해 보세요. 실행할 수 있는 다른 자연어 쿼리에 관한 힌트도 제공합니다.

7. 삭제

Google Cloud 계정에 지속적으로 요금이 청구되지 않도록 하려면 이 워크숍에서 만든 리소스를 삭제해야 합니다.

이 실습의 이전 섹션에서 만든 GKE 클러스터가 필요하지 않으면 다음 명령어를 통해 삭제할 수 있습니다.

gcloud container clusters delete my-gke-cluster --zone=us-central1-a

8. 축하합니다

축하합니다. AI 기반 Kubernetes 어시스턴트인 kubectl-ai를 사용하여 자연어 쿼리를 통해 Kubernetes 클러스터를 관리했습니다. 자세한 내용은 다음 섹션에 나열된 리소스를 참고하세요.

9. 리소스