TP 6
Exposer une application avec un Deployment et un Ingress dans Kubernetes
Ce TP vise à expérimenter l'utilisation des Deployments pour gérer une application et utiliser un Ingress pour l'exposer via un point d'entrée HTTP.
Phase 1 : Déploiement de l'application
- Action : Créer un Deployment pour une application web simple.
Observation : L'application doit être accessible au sein du cluster.
Contraintes :- Nom du namespace :
mynamespace
- Nom du Deployment :
my-app
- Image du container :
nginx:latest
- Port exposé :
80
- Nom du namespace :
Indice
Utiliser un Deployment avec kubectl apply -f <deployment.yaml>
et vérifier l'état avec kubectl get pods
.
Solution
Afficher
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: mynamespace
spec:
replicas: 2
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx:latest
ports:
- containerPort: 80
Phase 2 : Création du Service
- Action : Exposer l'application avec un Service ClusterIP.
Observation : Le service doit être accessible à l'intérieur du cluster.
Contraintes :- Nom du service :
my-app-service
- Selector :
app: my-app
- Port :
80
- Nom du service :
Indice
Utiliser `kubectl get svc` pour voir si le service est bien créé.
Solution
Afficher
apiVersion: v1
kind: Service
metadata:
name: my-app-service
namespace: mynamespace
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
Phase 3 : Exposition avec un Ingress
- Action : Créer un Ingress pour exposer l'application via un nom de domaine.
Observation : L'application doit être accessible viahttp://MY.DOMAIN.COM
.
Contraintes :- Nom de l'Ingress :
my-app-ingress
- Classe d'ingress :
traefik
- Hostname :
MY.DOMAIN.COM
- Service cible :
my-app-service
- Port cible :
80
- Nom de l'Ingress :
Indice
S'assurer que le contrôleur **IngressTraefix** est installé et que l'entrée DNS `MY.DOMAIN.COM` pointe vers le cluster.
Solution
Afficher
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
namespace: mynamespace
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: traefik
rules:
- host: MY.DOMAIN.COM
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-app-service
port:
number: 80
Phase avancée
- Modifier l'Ingress pour ajouter HTTPS avec un certificat TLS.
- Tester l'accès depuis l'extérieur avec un LoadBalancer.