Atelier de programmation : gérer Kubernetes avec kubectl-ai, un assistant Kubernetes optimisé par l'IA

1. Introduction

kubectl-ai est une interface intelligente optimisée par l'IA qui traduit l'intention de l'utilisateur en opérations Kubernetes précises, ce qui rend la gestion de Kubernetes plus accessible et efficace.

d62a763b2dba5ba7.png

Objectifs de l'atelier

  • Vous allez travailler avec kubectl-ai, un outil d'assistance Kubernetes optimisé par l'IA, pour gérer un cluster GKE.

Points abordés

  • Vous allez créer un cluster GKE et configurer kubectl-ai..
  • Vous effectuerez des tâches Kubernetes telles que la gestion, la création et la correction de ressources avec des clusters et des ressources de dépannage.

Prérequis

  • Navigateur Web Chrome
  • Un compte Gmail
  • Un projet Cloud pour lequel la facturation est activée
  • Une clé API Gemini

Dans cet atelier de programmation, nous partons du principe que l'utilisateur possède des connaissances de base sur Kubernetes.

2. Avant de commencer

Créer un projet

  1. Dans la console Google Cloud, sur la page du sélecteur de projet, sélectionnez ou créez un projet Google Cloud.
  2. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet .
  3. Vous allez utiliser Cloud Shell, un environnement de ligne de commande exécuté dans Google Cloud et fourni avec bq. Cliquez sur "Activer Cloud Shell" en haut de la console Google Cloud.

Image du bouton "Activer Cloud Shell"

  1. Une fois connecté à Cloud Shell, vérifiez que vous êtes déjà authentifié et que le projet est défini sur votre ID de projet à l'aide de la commande suivante :
gcloud auth list
  1. Exécutez la commande suivante dans Cloud Shell pour vérifier que la commande gcloud connaît votre projet.
gcloud config list project
  1. Si votre projet n'est pas défini, utilisez la commande suivante pour le définir :
gcloud config set project <YOUR_PROJECT_ID>
  1. Activez les API requises à l'aide de la commande ci-dessous. Cette opération peut prendre quelques minutes. Veuillez patienter.
gcloud services enable cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       compute.googleapis.com \
                       container.googleapis.com

Si la commande s'exécute correctement, un message semblable à celui ci-dessous s'affiche :

Operation "operations/..." finished successfully.

Si vous oubliez d'activer une API, vous pourrez toujours le faire au cours de l'implémentation.

Consultez la documentation pour connaître les commandes gcloud ainsi que leur utilisation.

3. Configurer un cluster GKE

Dans cette étape, nous allons configurer un cluster GKE dans lequel nous exécuterons nos commandes. Assurez-vous d'avoir suivi les étapes précédentes, d'avoir configuré l'ID de projet approprié et d'avoir activé les services requis dans votre projet Google Cloud.

Créer un cluster GKE

Exécutez la commande suivante fournie dans Cloud Shell. Si vous souhaitez créer le cluster dans une autre zone, n'hésitez pas à remplacer la valeur --zone par celle de la zone souhaitée.

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

Cette opération peut prendre un certain temps. Veuillez patienter. Une fois l'opération terminée, un résultat semblable à celui-ci doit s'afficher :

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

Vérifier les détails du cluster GKE

Commençons par récupérer les identifiants du cluster :

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

Vous devriez obtenir un résultat semblable à ce qui suit :

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

Ensuite, vérifions les détails du cluster :

kubectl get nodes

Le résultat doit ressembler à ceci :

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

Enfin, validons l'espace de noms du cluster :

kubectl get namespaces

Le résultat doit ressembler à ceci :

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. Installer la CLI kubectl-ai

Nous allons utiliser la méthode d'installation rapide (recommandée) pour installer kubectl-ai CLI.

Saisissez la commande suivante dans Cloud Shell :

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

Le kubectl-ai CLI sera alors téléchargé et installé. À la fin de l'opération, le message suivant devrait s'afficher :

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

Pour vérifier si la commande kubectl-ai fonctionne, exécutez la commande suivante :

kubectl-ai

Remarque : La commande ci-dessus renverra l'erreur indiquant que

creating llm client: GEMINI_API_KEY environment variable not set

Notez que kubectl-ai est compatible avec les modèles d'IA de gemini, vertexai, azopenai, openai, grok, bedrock et les fournisseurs de LLM locaux tels que ollama et llama.cpp. Dans notre cas, nous allons utiliser Gemini (Google) et nous aurons besoin d'une clé API pour cela via Google AI Studio. Une fois que vous avez généré la clé et que vous avez la valeur prête, utilisez la commande suivante dans Cloud Shell pour définir la variable d'environnement GEMINI_API_KEY qui pointe vers votre clé.

export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"

Remarque : N'utilisez "GEMINI_API_KEY" que comme valeur de clé.

Relancez kubectl-ai. Cette fois, vous verrez qu'il se lance et attend votre commande dans son terminal interactif.

$ kubectl-ai

  Hey there, what can I help you with today?                                  

>>>  

Essayez quelques requêtes liées aux commandes kubectl dans la requête. Voici quelques exemples :

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

Vous pouvez quitter le terminal kubectl-ai en saisissant quit.

5. Utiliser kubectl-ai

Maintenant que vous avez configuré kubectl-ai, le point clé à retenir est que vous pouvez désormais interagir avec le cluster à l'aide de requêtes en langage naturel. Essayons quelques autres commandes :

Exécutons la commande suivante :

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

Vous devriez obtenir le résultat suivant :

Running: kubectl get pods -n default

There are no resources found in the default namespace.      

>>>

Notez qu'il a traduit notre requête en langage naturel pour lister les pods en commande kubectl équivalente.

Notez également que nous sommes maintenant dans le terminal interactif kubectl-ai (>>>), avec lequel nous pouvons continuer à interagir.

Exécutez la commande suivante :

how many pods are there in kube-system namespace

Le résultat est indiqué ci-dessous :

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

Commande Single Shot

La section précédente a montré comment lancer kubectl-ai et rester dans le terminal interactif pour donner des commandes ultérieures. Cela ne convient pas aux commandes que vous souhaitez exécuter de manière autonome et sans invite interactive en attente de votre prochaine commande.

Saisissez la méthode de commande "single shot" avec le paramètre --quiet.

Voici un exemple de commande permettant de créer un déploiement.

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

La commande create deployment sera alors exécutée comme indiqué ci-dessous :

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 .

Nous avons ainsi pu configurer kubectl-ai pour qu'il interagisse avec notre cluster GKE actuel.

Nous venons d'exécuter quelques commandes et de montrer un mode de fonctionnement avec kubectl-ai. Vous pouvez rediriger la sortie vers d'autres outils, comprendre les erreurs, la persistance entre les différentes exécutions de session de kubectl-ai, et plus encore. Consultez la section Utilisation de la documentation de l'outil.

6. (Facultatif) Interface de chat kubectl-ai

Dans certains cas, vous préférerez peut-être travailler avec kubectl-ai via une interface de chat standard. Kubectl-ai est fourni avec sa propre interface utilisateur, que vous pouvez lancer à l'aide de la commande ci-dessous dans Cloud Shell :

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

L'utilitaire se lance dans une interface de chat. Un résultat semblable à celui-ci devrait s'afficher :

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

Cliquez sur "Aperçu sur le Web" dans Cloud Shell, comme indiqué ci-dessous :

f990712162e8e924.png

Cliquez ensuite sur Preview on port 8080 (Prévisualiser sur le port 8080). Un navigateur s'ouvre et l'interface de chat Web s'affiche, comme illustré ci-dessous :

90fce57ad7f16842.png

Voici un exemple de requête que nous avons exécutée dans l'interface de chat :

6a304d227d3fa5a6.png

Essayez d'autres requêtes dans cette interface. Il fournit également des conseils sur les autres requêtes en langage naturel que vous pouvez exécuter.

7. Effectuer un nettoyage

Pour éviter que des frais ne soient facturés en permanence sur votre compte Google Cloud, il est important de supprimer les ressources que nous avons créées lors de cet atelier.

Si vous n'avez plus besoin du cluster GKE que nous avons créé dans la section précédente de cet atelier, vous pouvez le supprimer à l'aide de la commande suivante :

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

8. Félicitations

Félicitations ! Vous avez utilisé kubectl-ai, un assistant Kubernetes optimisé par l'IA, pour gérer votre cluster Kubernetes à l'aide de requêtes en langage naturel. Pour en savoir plus, consultez les ressources listées dans la section suivante.

9. Ressources