Ce projet est une série de travaux pratiques sur DevOps, couvrant Docker, Kubernetes et Ansible. Chaque TP construit sur les connaissances acquises dans les précédents.
- Déploiement d'une application multi-services avec Docker Compose
- Création d'images Docker optimisées pour différents langages
- Utilisation de volumes pour la persistance des données
L'application est composée de plusieurs services, chacun dans un langage différent, communiquant entre eux via Docker Compose.
- Naviguer vers le répertoire du projet :
cd tp_docker
- Lancer l'application (cela construit les images et les démarre) :
docker-compose up -d
- Migration des conteneurs Docker vers Kubernetes
- Configuration des services pour l'exposition des applications
- Gestion des environnements avec Kustomize
Les services sont maintenant orchestrés par Kubernetes, avec une gestion des environnements de développement et de production.
- Naviguer vers le répertoire du projet :
cd tp_kube
- Construire les images dans Minikube :
minikube image build -t vote-app/seed ./seed-data
minikube image build -t vote-app/result ./result
minikube image build -t vote-app/nginx ./nginx
minikube image build -t vote-app/vote ./vote
minikube image build -t vote-app/worker ./worker
- Déployer les environnements :
# Environnement de production
kubectl apply -k k8s/overlays/production
# Environnement de développement
kubectl apply -k k8s/overlays/dev01
- Accéder aux bases de données :
# Production (port 5432)
kubectl port-forward -n production svc/db 5432:5432
# Développement (port 5433)
kubectl port-forward -n dev01 svc/db 5433:5432
- Automatisation de la configuration des VMs avec Ansible
- Mise en place d'une base de données PostgreSQL répliquée
- Intégration avec l'infrastructure Kubernetes existante
Les bases de données sont maintenant hébergées sur des VMs dédiées avec réplication, remplaçant les instances précédentes.
- Naviguer vers le répertoire du projet :
cd tp_ansible
- Configurer les VMs et déployer les bases de données :
ansible-playbook deploy_postgres.yml
- Backup de la base de données :
ansible-playbook pg_backup.yml
# Ou
ansible-playbook pg_backup_v2.yml
- Replication de la base de données :
ansible-playbook pg_replica.yml
kubectl apply -k k8s/overlays/production
kubectl apply -k k8s/overlays/dev01
Nous avons utilisé Kustomize pour gérer des configurations Kubernetes différentes pour simuler plusieurs environnements.
Dans base nous avons le déploiement des applications.
Dans overlays dev01 nous ajoutons le déploiement d'une base de données interne au cluster PostgreSQL avec un PVC interne au cluster.
Dans overlays production nous utilisons EndpointSlice pour utiliser la base de données externe crée avec Ansible. Et nous ajoutons un Horizontal Pod AutoScaler pour mutliplier le nombre de pod du service vote.
- Docker et Docker Compose
- Kubernetes (Minikube)
- Ansible
- PostgreSQL