DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesAzure - Intermédiaire : VNet, App Service, AKS et Bicep07 - Déployer un cluster AKS et sa première application

Détails

  • 45 minutes
  • Intermédiaire

Objectifs

  • Créer un cluster Azure Kubernetes Service (AKS) avec Azure CLI
  • Configurer kubectl pour pointer vers le cluster AKS
  • Déployer une application et l'exposer via un LoadBalancer Azure
  • Scaler l'application et tester la résilience
Module Azure - Intermédiaire : VNet, App Service, AKS et Bicep

Exercice 07 : Déployer un cluster AKS et sa première application

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Créer un cluster AKS minimal et se connecter avec kubectl
  • ✅ Déployer une application web sur AKS
  • ✅ Exposer l'application via un Service de type LoadBalancer (IP publique Azure)
  • ✅ Utiliser kubectl pour scaler et inspecter l'état du cluster

Durée estimée : 45 minutes

Difficulté : ⭐⭐⭐☆☆ (Intermédiaire)

Prérequis : kubectl installé, Azure CLI installée, notions Kubernetes Débutant


📖 Contexte

AKS (Azure Kubernetes Service) est le service Kubernetes managé d'Azure. Azure gère le plan de contrôle (control plane) : API server, etcd, scheduler. Vous gérez uniquement les nœuds workers (les VM qui font tourner vos conteneurs). AKS s'intègre nativement avec Azure Load Balancer, ACR (Container Registry) et Azure Monitor.


📋 Énoncé

Créez un cluster AKS, déployez une application et exposez-la publiquement.


🧭 Déroulement de l'exercice

Tâche 1 : Créer le cluster AKS

bash
# Groupe de ressources
az group create --name rg-aks-exercice --location francecentral

# Activer le provider AKS (si premier usage)
az provider register --namespace Microsoft.ContainerService

# Créer le cluster AKS minimal (Standard_B2s = 2 vCPU, 4 Go RAM)
az aks create \
  --name aks-exercice \
  --resource-group rg-aks-exercice \
  --node-count 2 \
  --node-vm-size Standard_B2s \
  --generate-ssh-keys \
  --enable-addons monitoring \
  --kubernetes-version 1.29

# Cette commande prend ~5 minutes
# Suivre la progression
az aks show \
  --name aks-exercice \
  --resource-group rg-aks-exercice \
  --query "provisioningState" -o tsv

Indice : Le cluster AKS crée automatiquement un Resource Group secondaire (MC_*) qui contient les VMs des nœuds, les load balancers et les disques. Ne supprimez jamais ce groupe directement - supprimez toujours le cluster via az aks delete.


Tâche 2 : Configurer kubectl

bash
# Télécharger les credentials et configurer kubectl
az aks get-credentials \
  --name aks-exercice \
  --resource-group rg-aks-exercice

# Vérifier la connexion
kubectl cluster-info
kubectl get nodes -o wide

# Les nœuds doivent être en état Ready
kubectl get nodes
# NAME                                STATUS   ROLES   AGE
# aks-nodepool1-xxxxx-vmss000000      Ready    agent   5m
# aks-nodepool1-xxxxx-vmss000001      Ready    agent   5m

Tâche 3 : Déployer une application

bash
cat > aks-app.yaml << 'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
  name: aks-app
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: aks-app
  template:
    metadata:
      labels:
        app: aks-app
    spec:
      containers:
        - name: app
          image: nginx:1.27-alpine
          ports:
            - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 256Mi
          livenessProbe:
            httpGet:
              path: /
              port: 80
            initialDelaySeconds: 10
            periodSeconds: 15
---
apiVersion: v1
kind: Service
metadata:
  name: aks-app-service
  namespace: default
  annotations:
    # Annote le service comme LoadBalancer externe
    service.beta.kubernetes.io/azure-load-balancer-internal: "false"
spec:
  type: LoadBalancer    # Azure provisionne automatiquement un Azure Load Balancer
  selector:
    app: aks-app
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
EOF

kubectl apply -f aks-app.yaml

# Attendre l'IP publique (le LoadBalancer Azure se provisionne en ~1-2 min)
kubectl get service aks-app-service -w
# EXTERNAL-IP passe de <pending> à une IP publique Azure

Tâche 4 : Tester et scaler

bash
# Récupérer l'IP publique du LoadBalancer
EXTERNAL_IP=$(kubectl get service aks-app-service \
  -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo "IP publique : $EXTERNAL_IP"

# Tester l'accès depuis internet
curl http://$EXTERNAL_IP
# → Page Nginx par défaut

# Voir les pods et sur quel nœud ils tournent
kubectl get pods -o wide

# Scaler à 4 réplicas
kubectl scale deployment aks-app --replicas=4
kubectl get pods -o wide  # Les pods sont distribués sur les 2 nœuds

# Tester la résilience : supprimer un pod
POD=$(kubectl get pods -l app=aks-app -o jsonpath='{.items[0].metadata.name}')
kubectl delete pod $POD
kubectl get pods -w  # Le Deployment recrée le pod

# Mettre à jour l'application (rolling update)
kubectl set image deployment/aks-app app=nginx:1.26-alpine
kubectl rollout status deployment/aks-app

Tâche 5 : Inspecter le cluster

bash
# Voir les événements du cluster
kubectl get events --sort-by='.lastTimestamp' | tail -20

# Consommation des ressources (metrics-server inclus dans AKS)
kubectl top nodes
kubectl top pods

# Voir les logs de l'application
kubectl logs -l app=aks-app --tail=10

# Informations sur les nœuds
kubectl describe nodes | grep -A5 "Allocated resources"

Tâche 6 : Nettoyer

bash
# Supprimer le cluster AKS (supprime aussi le RG MC_*)
az aks delete --name aks-exercice --resource-group rg-aks-exercice --yes --no-wait

# Supprimer le groupe de ressources
az group delete --name rg-aks-exercice --yes --no-wait

✅ Vérification du résultat

  • kubectl get nodes affiche 2 nœuds en état Ready
  • kubectl get pods affiche 2 pods aks-app en état Running
  • curl http://$EXTERNAL_IP retourne la page Nginx
  • kubectl top nodes affiche la consommation CPU/mémoire des nœuds

💡 À retenir

AKS vs Kubernetes auto-hébergé :

AKSDIY Kubernetes
Plan de contrôle✅ Gratuit, managé❌ À gérer
Mises à jour✅ Semi-automatiques❌ Manuelles
Intégration Azure✅ Native❌ Configuration manuelle
LoadBalancer✅ Automatique❌ MetalLB ou équivalent
CoûtNœuds seulementNœuds + control plane

Commandes AKS essentielles :

bash
az aks create / delete / start / stop / scale
az aks get-credentials    # Configurer kubectl
az aks upgrade            # Mettre à jour la version Kubernetes

✨ Solution Complète

bash
# Créer, connecter, déployer en 3 commandes
az aks create --name mon-cluster --resource-group mon-rg \
  --node-count 2 --node-vm-size Standard_B2s --generate-ssh-keys
az aks get-credentials --name mon-cluster --resource-group mon-rg
kubectl apply -f mon-app.yaml
Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Créer le cluster AKS
  • Tâche 2 : Configurer kubectl
  • Tâche 3 : Déployer une application
  • Tâche 4 : Tester et scaler
  • Tâche 5 : Inspecter le cluster
  • Tâche 6 : Nettoyer
  • ✅ Vérification du résultat
  • 💡 À retenir
  • ✨ Solution Complète