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

ModulesDécouvrir Kubernetes : pods, services et kubectl03 - Exposer des applications avec les Services

Détails

  • 30 minutes
  • Débutant

Objectifs

  • Comprendre la différence entre ClusterIP et NodePort
  • Écrire un manifest Service avec selector correspondant aux labels du Pod
  • Configurer port, targetPort et nodePort
  • Accéder à un service avec minikube service
Module Découvrir Kubernetes : pods, services et kubectl

Exercice 03 : Exposer des applications avec les Services

🎯 Objectifs

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

  • ✅ Créer un Service ClusterIP pour la communication interne
  • ✅ Créer un Service NodePort pour l'accès externe
  • ✅ Faire correspondre les selectors du Service aux labels du Pod
  • ✅ Utiliser minikube service pour accéder à une application

Durée estimée : 30 minutes

Difficulté : ⭐⭐☆☆☆ (Débutant+)

Prérequis : minikube démarré, exercices 01-02 terminés


📖 Contexte

Un Pod a une IP éphémère qui change à chaque redémarrage. Le Service fournit une adresse stable et un mécanisme de load-balancing pour accéder aux pods. Le selector est la colle entre un Service et ses pods cibles.


📋 Énoncé

Vous allez déployer un pod nginx, l'exposer d'abord en ClusterIP (accès interne uniquement), puis en NodePort (accès depuis l'hôte), et vérifier la connectivité dans les deux cas.

Résultat attendu :

  • Un service nginx-clusterip de type ClusterIP
  • Un service nginx-nodeport de type NodePort accessible via minikube

🧭 Déroulement de l'exercice

Tâche 1 : Déployer le pod cible

Appliquez le manifest nginx-labeled.yaml (fourni en solution) qui crée un pod avec le label app: nginx.

Indice : Le label sur le pod DOIT correspondre exactement au selector du Service.

Vérification : kubectl get pods --show-labels affiche le label app=nginx.


Tâche 2 : Créer un Service ClusterIP

Créez un Service de type ClusterIP qui cible les pods avec app: nginx sur le port 80.

Indice : spec.selector doit correspondre aux labels du pod. port est le port du service, targetPort est le port du conteneur.

Vérification : kubectl get svc nginx-clusterip affiche une CLUSTER-IP dans la plage 10.x.x.x.


Tâche 3 : Tester le ClusterIP depuis l'intérieur du cluster

Lancez un pod temporaire busybox et testez la connectivité vers le ClusterIP via le DNS Kubernetes.

Indice : kubectl run test --image=busybox --rm -it --restart=Never -- wget -O- nginx-clusterip

Vérification : La page HTML nginx s'affiche dans le terminal.


Tâche 4 : Créer un Service NodePort

Créez un Service de type NodePort avec un nodePort fixe à 30080.

Indice : nodePort est le port ouvert sur chaque noeud du cluster. Il doit être dans la plage 30000-32767.

Vérification : kubectl get svc nginx-nodeport affiche 80:30080/TCP dans la colonne PORT(S).


Tâche 5 : Accéder au service depuis l'hôte

Utilisez minikube service nginx-nodeport --url pour obtenir l'URL d'accès, puis testez avec curl.

Indice : minikube crée un tunnel réseau entre votre machine et le noeud virtuel.

Vérification : curl $(minikube service nginx-nodeport --url) retourne la page nginx.


🗂️ Mini-Projet : Stack web avec ClusterIP interne

Déployez un pod backend (httpd) accessible uniquement en interne via ClusterIP, et un pod frontend (nginx) exposé en NodePort. Le frontend doit pouvoir appeler le backend via le DNS Kubernetes.

Checkpoints :

  • kubectl get pods --show-labels affiche les labels corrects pour les deux pods
  • kubectl get svc liste les deux services avec les bons types
  • Depuis un pod temporaire, wget -O- backend-svc retourne la page Apache
  • minikube service frontend-svc --url fournit une URL accessible depuis l'hôte
  • kubectl describe svc backend-svc montre les Endpoints pointant vers l'IP du pod backend

Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Déployer le pod cible
  • Tâche 2 : Créer un Service ClusterIP
  • Tâche 3 : Tester le ClusterIP depuis l'intérieur du cluster
  • Tâche 4 : Créer un Service NodePort
  • Tâche 5 : Accéder au service depuis l'hôte
  • 🗂️ Mini-Projet : Stack web avec ClusterIP interne