1. Introducción
kubectl-ai
es una interfaz inteligente potenciada por IA que traduce la intención del usuario en operaciones precisas de Kubernetes, lo que hace que la administración de Kubernetes sea más accesible y eficiente.
Actividades
- Trabajarás con
kubectl-ai
, una herramienta potenciada por IA que funciona como asistente de Kubernetes para administrar un clúster de GKE.
Qué aprenderás
- Crearás un clúster de GKE y configurarás
kubectl-ai.
. - Realizarás tareas de Kubernetes, como administrar, crear y aplicar parches a recursos con clústeres y recursos de solución de problemas.
Requisitos
- Navegador web Chrome
- Una cuenta de Gmail
- Un proyecto de Cloud con la facturación habilitada
- Una clave de API de Gemini
En este codelab, se espera que el usuario tenga conocimientos básicos de Kubernetes.
2. Antes de comenzar
Crea un proyecto
- En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
- Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información para verificar si la facturación está habilitada en un proyecto .
- Usarás Cloud Shell, un entorno de línea de comandos que se ejecuta en Google Cloud y que viene precargado con bq. Haz clic en Activar Cloud Shell en la parte superior de la consola de Google Cloud.
- Una vez que te conectes a Cloud Shell, verifica que ya te autenticaste y que el proyecto se configuró con el ID de tu proyecto con el siguiente comando:
gcloud auth list
- En Cloud Shell, ejecuta el siguiente comando para confirmar que el comando gcloud conoce tu proyecto.
gcloud config list project
- Si tu proyecto no está configurado, usa el siguiente comando para hacerlo:
gcloud config set project <YOUR_PROJECT_ID>
- Habilita las APIs requeridas con el siguiente comando. Este proceso puede tardar unos minutos, así que ten paciencia.
gcloud services enable cloudresourcemanager.googleapis.com \
servicenetworking.googleapis.com \
compute.googleapis.com \
container.googleapis.com
Si el comando se ejecuta correctamente, deberías ver un mensaje similar al que se muestra a continuación:
Operation "operations/..." finished successfully.
Si olvidas alguna API, puedes habilitarla durante el proceso de implementación.
Consulta la documentación para ver los comandos y el uso de gcloud.
3. Configura el clúster de GKE
En este paso, configuraremos un clúster de GKE en el que ejecutaremos nuestros comandos. Asegúrate de haber seguido los pasos anteriores, configurado el ID del proyecto correcto y habilitado los servicios necesarios en tu proyecto de Google Cloud.
Crea un clúster de GKE
Ejecuta el siguiente comando que se proporciona en Cloud Shell. Si quieres crear el clúster en otra zona, puedes cambiar el valor de --zone
.
gcloud container clusters create my-gke-cluster \
--num-nodes 2 \
--machine-type e2-standard-4 \
--zone us-central1-a
Este proceso puede tardar en completarse, así que ten paciencia. Una vez que se complete, deberías ver un resultado similar al que se muestra a continuación:
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 los detalles del clúster de GKE
Primero, recuperemos las credenciales del clúster:
gcloud container clusters get-credentials my-gke-cluster \
--zone us-central1-a
Deberías ver un resultado como el que se muestra a continuación:
Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-gke-cluster.
A continuación, verifiquemos los detalles del clúster:
kubectl get nodes
Deberías ver un resultado similar al siguiente:
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
Por último, validemos el espacio de nombres del clúster:
kubectl get namespaces
Deberías ver un resultado similar al siguiente:
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. Instala la CLI de kubectl-ai
Usaremos la forma de instalación rápida (recomendada) de kubectl-ai CLI
.
Proporciona el siguiente comando en Cloud Shell:
curl -sSL https://raw.githubusercontent.com/GoogleCloudPlatform/kubectl-ai/main/install.sh | bash
Esto descargará e instalará kubectl-ai CLI
, y deberías ver un mensaje al final que diga lo siguiente:
✅ kubectl-ai installed successfully! Run 'kubectl-ai --help' to get started.
Para verificar si el comando kubectl-ai
funciona, ejecuta el siguiente comando:
kubectl-ai
Nota: El comando anterior devolverá el error que indica que
creating llm client: GEMINI_API_KEY environment variable not set
Ten en cuenta que kubectl-ai admite modelos de IA de gemini
, vertexai
, azopenai
, openai
, grok
, bedrock
y proveedores de LLM locales, como ollama
y llama.cpp
. En nuestro caso, usaremos Gemini (Google) y necesitaremos obtener una clave de API para ello a través de Google AI Studio. Una vez que hayas generado la clave y tengas el valor listo, usa el siguiente comando en Cloud Shell para establecer la variable de entorno GEMINI_API_KEY que apunta a tu clave.
export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
Nota: Usa "GEMINI_API_KEY" solo como valor de clave.
Vuelve a iniciar kubectl-ai
y, esta vez, verás que se inicia y espera tu comando en su terminal interactiva.
$ kubectl-ai
Hey there, what can I help you with today?
>>>
Prueba algunas preguntas relacionadas con los comandos de kubectl en la instrucción. A continuación, se incluyen algunos ejemplos:
What is the command to get the nodes in a cluster?
list pods
Para salir de la terminal de kubectl-ai
, escribe quit
.
5. Usa kubectl-ai
Ahora que configuraste kubectl-ai
correctamente, el punto clave que se debe destacar aquí es que ahora puedes interactuar con el clúster usando consultas en lenguaje natural. Probemos algunos otros comandos:
Ejecutemos el siguiente comando:
kubectl-ai --model gemini-2.5-flash "list pods in default namespace"
Esto producirá el siguiente resultado:
Running: kubectl get pods -n default
There are no resources found in the default namespace.
>>>
Observa cómo tradujo nuestra consulta en lenguaje natural para enumerar los Pods al comando kubectl
equivalente.
Además, ten en cuenta que ahora estamos dentro de la terminal interactiva kubectl-ai
(>>>
), donde podemos seguir interactuando con ella.
Ejecuta el siguiente comando:
how many pods are there in kube-system namespace
El resultado se muestra a continuación:
>>> 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 de disparo único
En la sección anterior, se mostró cómo iniciar kubectl-ai
y permanecer en la terminal interactiva para ingresar comandos posteriores. Esto no es adecuado para los comandos que deseas ejecutar de forma autónoma y sin un mensaje interactivo que espere el siguiente comando.
Ingresa el método de comando de un solo disparo con el parámetro --quiet
.
Este es un comando de muestra para crear una implementación.
kubectl-ai --quiet "create a deployment named nginx with 2 replicas" --skip-permissions
Esto hará que se ejecute el comando create deployment
, como se muestra a continuación:
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 .
De esta manera, pudimos configurar kubectl-ai
para que interactúe con nuestro clúster de GKE actual.
Acabamos de ejecutar algunos comandos y demostramos un modo de trabajar con kubectl-ai
. Puedes canalizar el resultado a otras herramientas, comprender los errores, la persistencia entre diferentes ejecuciones de sesiones de kubectl-ai
y mucho más. Consulta la sección Uso de la documentación de la herramienta.
6. (Opcional) Interfaz de chat de kubectl-ai
En ciertas situaciones, es posible que prefieras trabajar con kubectl-ai
a través de una interfaz de chat estándar. Kubectl-ai
incluye su propia interfaz de IU que puedes iniciar con el siguiente comando en Cloud Shell:
kubectl-ai --llm-provider=gemini \ --ui-type=web \ --ui-listen-address=0.0.0.0:8080
Se iniciará la utilidad en una interfaz de chat y deberías ver un resultado similar al siguiente:
listening on http://[::]:8080
Haz clic en Vista previa en la Web en Cloud Shell, como se muestra a continuación:
Luego, haz clic en Vista previa en el puerto 8080. Se iniciará un navegador y estará disponible la interfaz de chat web, como se muestra a continuación:
Esta es una consulta de ejemplo que ejecutamos en la interfaz de chat:
Prueba otras búsquedas en esta interfaz. También proporciona sugerencias sobre qué otras búsquedas en lenguaje natural podrías ejecutar.
7. Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud, es importante que borres los recursos que creamos durante este taller.
Si no necesitas el clúster de GKE que creamos en la sección anterior de este lab, puedes borrarlo con el siguiente comando:
gcloud container clusters delete my-gke-cluster --zone=us-central1-a
8. Felicitaciones
Felicitaciones. Usaste correctamente kubectl-ai, un asistente de Kubernetes potenciado por IA para administrar tu clúster de Kubernetes a través de consultas en lenguaje natural. Para obtener más información, consulta los recursos que se indican en la siguiente sección.