Développement Web Kubernetes DevOps Docker

Kubernetes en 2025 : introduction pour développeurs web

Découvrez kubernetes pour vos déploiements web : pods, deployments, services, ingress et kubectl. Guide d'introduction pratique pour développeurs PHP/Node.

Benjamin Schweitzer Benjamin Schweitzer
Mardi 22 avril 2025
4 min de lecture
Kubernetes en 2025 : introduction pour développeurs web

Kubernetes (K8s) est le système d'orchestration de conteneurs de référence. Si Docker vous permet d'empaqueter vos applications, kubernetes vous permet de les déployer, scaler et gérer en production à grande échelle. Voici une introduction pragmatique pour les développeurs web.

Pourquoi Kubernetes ?

Un conteneur Docker seul ne gère pas la haute disponibilité, l'auto-scaling, le rolling deployment ou la récupération automatique après une panne. kubernetes résout ces problèmes à l'échelle : il orchestre des clusters de machines pour faire tourner vos conteneurs de façon fiable.

Pour la majorité des projets web de taille modeste, Docker Compose suffit. kubernetes devient pertinent quand vous avez besoin de déploiements zero-downtime, d'auto-scaling, ou que vous gérez de nombreux microservices.

Concepts fondamentaux

Pod : la plus petite unité kubernetes, un ou plusieurs conteneurs partageant réseau et stockage. En pratique, un pod = un conteneur.

Deployment : déclare l'état désiré (combien de réplicas, quelle image). kubernetes maintient cet état automatiquement.

Service : expose un ensemble de pods via une IP stable et du load balancing.

Ingress : routage HTTP/HTTPS vers les services selon l'URL (remplace un Nginx proxy).

ConfigMap / Secret : configuration et secrets injectés dans les pods.

kubectl : l'outil en ligne de commande

kubectl get pods                          # Lister les pods
kubectl get deployments                   # Lister les deployments
kubectl describe pod mon-pod-xxxxx        # Détails d'un pod
kubectl logs mon-pod-xxxxx -f             # Logs en direct
kubectl exec -it mon-pod-xxxxx -- bash    # Shell dans un pod
kubectl apply -f deployment.yaml          # Appliquer une configuration
kubectl rollout status deployment/mon-app # Statut du déploiement
kubectl rollout undo deployment/mon-app   # Rollback

Deployer une application PHP

apiVersion: apps/v1
kind: Deployment
metadata:
  name: php-app
spec:
  replicas: 3  # 3 instances
  selector:
    matchLabels:
      app: php-app
  template:
    metadata:
      labels:
        app: php-app
    spec:
      containers:
      - name: php
        image: mon-registry/php-app:v1.2
        ports:
        - containerPort: 80
        env:
        - name: DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: app-secrets
              key: db-password
        resources:
          requests:
            memory: "128Mi"
            cpu: "100m"
          limits:
            memory: "256Mi"
            cpu: "500m"
        livenessProbe:
          httpGet:
            path: /health
            port: 80
          initialDelaySeconds: 30
---
apiVersion: v1
kind: Service
metadata:
  name: php-app-service
spec:
  selector:
    app: php-app
  ports:
  - port: 80
    targetPort: 80

Auto-scaling horizontal

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: php-app-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-app
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70

kubernetes augmente automatiquement le nombre de pods si le CPU dépasse 70%, et réduit en période creuse.

Où déployer Kubernetes ?

Les solutions managées éliminent la complexité de l'administration kubernetes : Google GKE, AWS EKS, Azure AKS. Pour un premier projet, Minikube ou k3s permettent de pratiquer localement. La documentation Kubernetes est exhaustive.

Conclusion

Kubernetes représente un investissement d'apprentissage significatif mais indispensable pour le DevOps moderne. Commencez par Minikube pour pratiquer localement, déployez votre premier Deployment et Service, puis progressez vers l'Ingress, les volumes persistants et l'HPA. La maîtrise de kubernetes ouvre des opportunités importantes sur le marché des développeurs cloud-native.

Kubernetes représente un changement de paradigme : vous gérez des états désirés que le cluster maintient automatiquement. Pour progresser, maîtrisez les Horizontal Pod Autoscalers pour le scaling basé sur la charge CPU, les PersistentVolumeClaims pour le stockage stateful, et les NetworkPolicies pour isoler les namespaces. En production, adoptez Helm pour le packaging des applications et Argo CD pour le GitOps. Les services managés (GKE, EKS, AKS) éliminent la complexité de gestion du control plane. La documentation Kubernetes et la certification CKA (Certified Kubernetes Administrator) sont les meilleures voies pour approfondir ces concepts fondamentaux d'orchestration moderne.

Debugging et observabilité

Le debugging en Kubernetes passe par plusieurs outils : kubectl logs PODNAME pour les logs applicatifs, kubectl describe pod PODNAME pour les événements système (OOMKilled, CrashLoopBackOff), et kubectl exec -it POD_NAME -- bash pour inspecter un conteneur en cours d'exécution. Pour l'observabilité complète, la stack Prometheus + Grafana + Jaeger couvre métriques, dashboards et distributed tracing.

Cet article vous a plu ?

Donnez-lui une note, ça m'aide vraiment !

Partager l'article