Codelab - Managing Kubernetes with kubectl-ai, an AI powered Kubernetes Assistant

1. Introduzione

kubectl-ai è un'interfaccia intelligente basata sull'AI che traduce l'intento dell'utente in operazioni Kubernetes precise, rendendo la gestione di Kubernetes più accessibile ed efficiente.

d62a763b2dba5ba7.png

Attività previste

  • Utilizzerai kubectl-ai, uno strumento basato sull'AI per la gestione di un cluster GKE.

Cosa imparerai a fare

  • Creerai un cluster GKE e configurerai kubectl-ai.
  • Eseguirai attività Kubernetes come la gestione, la creazione e l'applicazione di patch alle risorse con la risoluzione dei problemi di cluster e risorse.

Che cosa ti serve

  • Browser web Chrome
  • Un account Gmail
  • Un progetto cloud con fatturazione abilitata
  • Una chiave API Gemini

Questo codelab presuppone che l'utente abbia una conoscenza di base di Kubernetes.

2. Prima di iniziare

Crea un progetto

  1. Nella console Google Cloud, nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud.
  2. Verifica che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata per un progetto .
  3. Utilizzerai Cloud Shell, un ambiente a riga di comando in esecuzione in Google Cloud precaricato con bq. Fai clic su Attiva Cloud Shell nella parte superiore della console Google Cloud.

Immagine del pulsante Attiva Cloud Shell

  1. Una volta eseguita la connessione a Cloud Shell, verifica di essere già autenticato e che il progetto sia impostato sul tuo ID progetto utilizzando il seguente comando:
gcloud auth list
  1. Esegui questo comando in Cloud Shell per verificare che il comando gcloud conosca il tuo progetto.
gcloud config list project
  1. Se il progetto non è impostato, utilizza il seguente comando per impostarlo:
gcloud config set project <YOUR_PROJECT_ID>
  1. Abilita le API richieste tramite il comando mostrato di seguito. L'operazione potrebbe richiedere alcuni minuti.
gcloud services enable cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       compute.googleapis.com \
                       container.googleapis.com

Se il comando viene eseguito correttamente, dovresti visualizzare un messaggio simile a quello mostrato di seguito:

Operation "operations/..." finished successfully.

Se manca un'API, puoi sempre abilitarla durante l'implementazione.

Consulta la documentazione per i comandi e l'utilizzo di gcloud.

3. Configura il cluster GKE

In questo passaggio, configureremo un cluster GKE in cui eseguiremo i nostri comandi. Assicurati di aver seguito i passaggi precedenti, di aver configurato l'ID progetto corretto e di aver abilitato i servizi richiesti nel tuo progetto Google Cloud.

Crea un cluster GKE

Esegui il seguente comando fornito in Cloud Shell. Se vuoi creare il cluster in un'altra zona, puoi modificare il valore di --zone.

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

Il completamento di questa operazione può richiedere un po' di tempo, quindi ti chiediamo di avere pazienza. Una volta completato, dovresti vedere un output simile a quello mostrato di seguito:

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

Verifica i dettagli del cluster GKE

Innanzitutto, recuperiamo le credenziali del cluster:

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

Dovresti vedere un output come mostrato di seguito:

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

Ora verifichiamo i dettagli del cluster:

kubectl get nodes

Dovresti vedere un output simile al seguente:

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

Infine, convalidiamo lo spazio dei nomi del cluster:

kubectl get namespaces

Dovresti vedere un output simile al seguente:

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. Installa l'interfaccia a riga di comando kubectl-ai

Utilizzeremo la modalità di installazione rapida (consigliata) di kubectl-ai CLI.

Fornisci il seguente comando in Cloud Shell:

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

Verrà scaricato e installato kubectl-ai CLI e alla fine verrà visualizzato il messaggio:

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

Possiamo verificare se il comando kubectl-ai funziona o meno eseguendo questo comando:

kubectl-ai

Nota: il comando riportato sopra restituirà l'errore che indica che

creating llm client: GEMINI_API_KEY environment variable not set

Tieni presente che kubectl-ai supporta i modelli di AI di gemini, vertexai, azopenai, openai, grok, bedrock e dei provider LLM locali come ollama e llama.cpp. Nel nostro caso, utilizzeremo Gemini (Google) e dovremo ottenere una chiave API tramite Google AI Studio. Una volta generata la chiave e pronto il valore, utilizza il seguente comando in Cloud Shell per impostare la variabile di ambiente GEMINI_API_KEY che punta alla chiave.

export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"

Nota: utilizza "GEMINI_API_KEY" solo come valore della chiave

Avvia kubectl-ai un'altra volta e vedrai che si avvia e attende il tuo comando nel terminale interattivo.

$ kubectl-ai

  Hey there, what can I help you with today?                                  

>>>  

Prova alcune query relative ai comandi kubectl nel prompt. Di seguito sono riportati alcuni esempi:

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

Puoi uscire dal terminale kubectl-ai digitando quit.

5. Utilizzo di kubectl-ai

Ora che hai configurato kubectl-ai correttamente, il punto chiave da evidenziare è che ora puoi interagire con il cluster utilizzando query in linguaggio naturale. Proviamo alcuni altri comandi:

Eseguiamo questo comando:

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

Verrà generato il seguente output:

Running: kubectl get pods -n default

There are no resources found in the default namespace.      

>>>

Nota come ha tradotto la nostra query in linguaggio naturale per elencare i pod nel comando kubectl equivalente.

Inoltre, tieni presente che ora ci troviamo all'interno del terminale interattivo kubectl-ai (>>>), dove possiamo continuare a interagire.

Dai il seguente comando:

how many pods are there in kube-system namespace

L'output è mostrato di seguito:

>>> 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.

Comando di scatto singolo

La sezione precedente ha mostrato come avviare kubectl-ai e rimanere nel terminale interattivo per dare comandi successivi. Questo non è adatto ai comandi che vuoi eseguire in modo autonomo e senza un prompt interattivo in attesa del prossimo comando.

Inserisci il metodo di comando singolo con il parametro --quiet.

Ecco un comando di esempio per creare un deployment.

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

Verrà eseguito il comando create deployment come mostrato di seguito:

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 .

In questo modo, abbiamo potuto configurare kubectl-ai per interagire con il nostro cluster GKE attuale.

Abbiamo appena eseguito alcuni comandi e mostrato una modalità di lavoro con kubectl-ai. Puoi reindirizzare l'output ad altri strumenti, comprendere gli errori, la persistenza tra diverse esecuzioni della sessione di kubectl-ai e altro ancora. Consulta la sezione Utilizzo della documentazione dello strumento.

6. (Facoltativo) Interfaccia di chat kubectl-ai

In determinate situazioni, potresti preferire lavorare con kubectl-ai tramite un'interfaccia di chat standard. Kubectl-ai è dotato di una propria interfaccia utente che puoi avviare tramite il comando mostrato di seguito in Cloud Shell:

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

Verrà avviata l'utilità in un'interfaccia di chat e dovresti vedere un output simile al seguente:

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

Fai clic su Anteprima web in Cloud Shell come mostrato di seguito:

f990712162e8e924.png

Quindi, fai clic su Anteprima sulla porta 8080. Verrà avviato un browser e resa disponibile l'interfaccia di chat web come mostrato di seguito:

90fce57ad7f16842.png

Ecco una query di esempio che abbiamo eseguito nell'interfaccia di chat:

6a304d227d3fa5a6.png

Prova altre query in questa interfaccia. Fornisce anche suggerimenti su altre query in linguaggio naturale che potresti eseguire.

7. Esegui la pulizia

Per evitare addebiti continui al tuo account Google Cloud, è importante eliminare le risorse che abbiamo creato durante questo workshop.

Se non hai bisogno del cluster GKE che abbiamo creato nella sezione precedente di questo lab, puoi eliminarlo tramite il seguente comando:

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

8. Complimenti

Congratulazioni, hai utilizzato correttamente kubectl-ai, un assistente Kubernetes basato sull'AI per gestire il tuo cluster Kubernetes tramite query in linguaggio naturale. Per maggiori informazioni, consulta le risorse elencate nella sezione successiva.

9. Risorse