Use Cases (Mis à jour: 02/06/2026)

Kubernetes avec Claude Code : Deployment, Service, Ingress et rollback

Guide pratique pour créer avec Claude Code un déploiement Kubernetes sûr, vérifiable et réversible.

Kubernetes avec Claude Code : Deployment, Service, Ingress et rollback

Produire du YAML que l’on peut relire

Kubernetes orchestre des applications conteneurisées, mais le premier obstacle pour un débutant est la densité des concepts : Deployment, Service, Ingress, ConfigMap, Secret, probes, requests, limits, rollout et rollback. Si vous demandez simplement à Claude Code de générer du YAML Kubernetes, le résultat peut sembler correct tout en étant fragile : image latest, pas de readinessProbe, Secret d’exemple commité, Service trop exposé ou annotations Ingress adaptées à un autre cluster.

L’objectif de ce guide est plus concret. Nous utilisons Claude Code pour créer une base sûre, puis nous la relisons comme une modification d’infrastructure. L’exemple repose sur nginx:1.27-alpine et une page HTML fournie par ConfigMap. Il fonctionne sans image privée, donc il peut être testé dans kind, minikube, Docker Desktop Kubernetes ou un cluster jetable.

Gardez les documents officiels à portée de main : Deployments, Services, Ingress, probes, ressources, ConfigMap, Secret et kubectl rollout. Pour continuer sur ClaudeCodeLab, lisez aussi Docker integration, CI/CD setup, code review et permissions guide.

Cas d’usage réels

Ne commencez pas par une plateforme complète. Commencez par une unité que vous pouvez déployer, vérifier, casser volontairement, puis restaurer. C’est ainsi que les commandes deviennent utiles avant un incident.

Cas d’usageObjectifCe que Claude Code doit préparer
Premier outil interneMettre une application Web derrière un Service stableDeployment, ClusterIP Service, probes, requests et limits
Atelier de formationFaire exécuter les mêmes étapes à chaque participantManifest avec namespace, commandes de vérification, exercice d’échec
Revue avant productionRepérer les YAML dangereux avant releaseSélecteurs, Secret, probes, Ingress, rollback
Gate de Pull RequestBloquer les changements d’infra risquésdry-run CI et checklist de revue

Ce sujet a aussi une logique de monétisation : le lecteur ne veut pas seulement une définition, il veut éviter une panne. ClaudeCodeLab relie donc ce guide aux ressources gratuites, aux modèles et à la formation et consultation Claude Code pour les équipes qui veulent adapter le flux à leur dépôt.

Donner des limites à Claude Code

Un bon prompt Kubernetes décrit aussi ce qui est interdit. Sans limites, l’assistant peut choisir LoadBalancer, inventer un Secret, ajouter du RBAC global ou supposer un Ingress Controller que vous n’avez pas.

Crée un exemple de déploiement Kubernetes testable localement pour débutants.

Exigences:
- namespace claude-k8s-demo
- utiliser nginx:1.27-alpine, pas une image privée
- inclure un ConfigMap avec une page HTML
- Deployment avec replicas 2, RollingUpdate, readinessProbe, livenessProbe et resources
- Service de type ClusterIP
- Ingress optionnel avec host claude-k8s.local
- expliquer la politique Secret sans générer de vraie valeur
- inclure les commandes apply, rollout status, port-forward, échec et rollback

Contraintes:
- ne pas utiliser NodePort ni LoadBalancer
- ne pas écrire de vraie valeur Secret dans YAML
- ne pas créer ClusterRole, ClusterRoleBinding ni commande destructive

Ce prompt donne une surface de revue nette : labels, selectors, probes, ports, resources et secrets. Si votre équipe répète cette opération, placez les règles stables dans CLAUDE.md et reliez-les aux bonnes pratiques CLAUDE.md.

Manifest prêt à copier

Enregistrez ceci dans k8s/claude-k8s-demo.yaml. L’Ingress nécessite un controller, mais le Service est vérifiable par port-forward.

apiVersion: v1
kind: Namespace
metadata:
  name: claude-k8s-demo
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: demo-page
  namespace: claude-k8s-demo
data:
  APP_ENV: "demo"
  index.html: |
    <!doctype html>
    <html lang="fr">
      <head><meta charset="utf-8" /><title>Claude Code Kubernetes Demo</title></head>
      <body><h1>Claude Code Kubernetes Demo</h1><p>Deployment, Service, ConfigMap, probes are running.</p></body>
    </html>
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-web
  namespace: claude-k8s-demo
  labels:
    app: demo-web
spec:
  replicas: 2
  revisionHistoryLimit: 5
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  selector:
    matchLabels:
      app: demo-web
  template:
    metadata:
      labels:
        app: demo-web
    spec:
      containers:
        - name: nginx
          image: nginx:1.27-alpine
          ports:
            - name: http
              containerPort: 80
          resources:
            requests:
              cpu: "50m"
              memory: "64Mi"
            limits:
              cpu: "250m"
              memory: "128Mi"
          readinessProbe:
            httpGet:
              path: /
              port: http
            initialDelaySeconds: 3
            periodSeconds: 5
          livenessProbe:
            httpGet:
              path: /
              port: http
            initialDelaySeconds: 10
            periodSeconds: 10
          volumeMounts:
            - name: demo-page
              mountPath: /usr/share/nginx/html/index.html
              subPath: index.html
              readOnly: true
      volumes:
        - name: demo-page
          configMap:
            name: demo-page
---
apiVersion: v1
kind: Service
metadata:
  name: demo-web
  namespace: claude-k8s-demo
spec:
  type: ClusterIP
  selector:
    app: demo-web
  ports:
    - name: http
      port: 80
      targetPort: http
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-web
  namespace: claude-k8s-demo
spec:
  ingressClassName: nginx
  rules:
    - host: claude-k8s.local
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: demo-web
                port:
                  name: http

Le point critique est l’alignement de selector.matchLabels, des labels du template Pod et du selector du Service. Une seule divergence suffit à obtenir un Service sans endpoints.

Vérifier localement

Vérifiez d’abord le cluster avec kubectl cluster-info, puis appliquez :

kubectl apply -f k8s/claude-k8s-demo.yaml
kubectl -n claude-k8s-demo rollout status deployment/demo-web
kubectl -n claude-k8s-demo get pods -l app=demo-web
kubectl -n claude-k8s-demo get service demo-web
kubectl -n claude-k8s-demo port-forward service/demo-web 8080:80

Dans un autre terminal :

curl http://localhost:8080/

Ne déboguez Ingress qu’après avoir prouvé que Pod et Service fonctionnent.

kubectl -n claude-k8s-demo get ingress demo-web
kubectl -n claude-k8s-demo describe ingress demo-web

ConfigMap, Secret et rollback

ConfigMap stocke une configuration non sensible. Secret vise les valeurs sensibles, mais un Secret YAML encodé en base64 ne doit pas être commité. Base64 n’est pas du chiffrement. En production, utilisez Secret Manager, External Secrets, Sealed Secrets, SOPS ou la procédure vault validée par votre équipe.

Pour un test local :

kubectl -n claude-k8s-demo create secret generic demo-api-secret \
  --from-literal=API_TOKEN='replace-me-locally' \
  --dry-run=client \
  -o yaml > secret.local.yaml

kubectl apply -f secret.local.yaml

Exercez ensuite rollout et rollback :

kubectl -n claude-k8s-demo set image deployment/demo-web nginx=nginx:1.27-alpine
kubectl -n claude-k8s-demo rollout status deployment/demo-web
kubectl -n claude-k8s-demo rollout history deployment/demo-web
kubectl -n claude-k8s-demo set image deployment/demo-web nginx=nginx:not-a-real-tag
kubectl -n claude-k8s-demo rollout status deployment/demo-web --timeout=30s
kubectl -n claude-k8s-demo rollout undo deployment/demo-web

Un rollback Deployment ne restaure pas forcément ConfigMap, Secret, migration de base, DNS ou feature flag. Demandez à Claude Code d’écrire dans le runbook ce qui revient en arrière et ce qui nécessite une procédure séparée.

CI, erreurs fréquentes et suite

Ajoutez au minimum un dry-run en Pull Request :

name: Kubernetes manifest review
on:
  pull_request:
    paths:
      - "k8s/**"
jobs:
  dry-run:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: azure/setup-kubectl@v4
        with:
          version: "v1.30.0"
      - run: kubectl apply --dry-run=client -f k8s/

Les pièges courants sont l’image latest en production, la confusion readiness/liveness, l’absence de resources, la croyance que base64 sécurise un secret, le débogage Ingress avant Service et la mise en production d’une sortie Claude Code sans revue humaine. La réponse est pragmatique : docs officielles, CI, vérification locale, prompts avec contraintes et revue orientée risques.

Cet exemple reste volontairement petit. En projet réel, il faut gérer build Docker, tags immuables, TLS, secrets, observabilité, RBAC, CI/CD et incidents. Une personne seule peut commencer avec le cheatsheet gratuit. Une équipe peut structurer prompts, CLAUDE.md, gates CI et exercices de rollback via la formation et consultation Claude Code. Le flux vérifié pour cet article est : apply, rollout status, Pods, port-forward, curl, image invalide, échec visible, puis rollout undo. Les erreurs observées chez les débutants sont surtout des selectors incohérents, des probes sur le mauvais path, des resources absentes et des Secrets mal documentés.

#Claude Code #Kubernetes #DevOps #container orchestration #infrastructure
Gratuit

PDF gratuit: cheatsheet Claude Code

Saisissez votre email et téléchargez une page avec commandes, habitudes de review et workflow sûr.

Nous protégeons vos données et n'envoyons pas de spam.

Masa

À propos de l'auteur

Masa

Ingénieur spécialisé dans les workflows pratiques avec Claude Code.