Contexte : Déploiement d’application & besoins des développeurs¶
Type de code¶
SI développés en interne ou par des prestataires, architecture type : multi-niveaux (front/back) avec JAVA (Springboot) et JS (VueJS), une base de données Postgres est hébergée par ailleurs et le développeur ne s’en préoccupe pas.
Contexte système¶
Diagramme de fonctionnement¶
Diagramme de déploiement docker¶
Avec docker¶
Administration d’une VM « coquille vide » + Gestion des certificats
Dépôt « deploiement » contenant un docker-compose.yaml
version: '3.7'
services:
reverse_proxy:
image: haproxy:vXX
volumes:
- haproxy.conf:/etc/haproxy.conf # règles proxy vers back/front
- cert.pem:/etc/ssl/certs/cert.pem #certificat ssl
ports:
- "443:443"
frontend:
image: registry.forgemia.inra.fr/monappli/front:v2023-05-14
backend:
image: registry.forgemia.inra.fr/monappli/back:v2023-05-14
environment:
- POSTGRES_SERVER=${POSTGRES_SERVER}
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
Lancement et mise à jour :
docker compose up.
Remarque : les images docker sont soit directement compilées (votre DockerFile est dans le dépot contenant les règles de déploiement) soit déposées sur la forgemia. Le dépot sur la forgemia peut être manuel (docker push), ou intégré au CI avec un Dockerfile dans le dépot de votre code et un gitlabci adapté.
Avec K8S - En pratique¶
Dépôt « déploiement »
Contient un « helm chart » (équivalent docker-compose, généré semi-automatiquement) :
des templates pour chaque objet k8s
un fichier values.yaml avec les paramètres
.
└── charts
├── back
│ ├── templates
│ │ ├── deployment.yaml # responsable du conteneur back
│ │ ├── ingress.yaml # règles "proxy" back (monappli.inrae.fr/api/)
│ │ └── service.yaml
│ └── values.yaml # paramétrage
└── front
├── templates
│ ├── deployment.yaml # responsable du conteneur front
│ ├── ingress.yaml # règles "proxy" front (monappli.inrae.fr/)
│ └── service.yaml
└── values.yaml
# Value.yaml du back
replicaCount: 1
image:
repository: registry.forgemia.inra.fr/monappli/back
tag: "v2023-05-17"
ingress:
hosts:
- host: monappli.inrae.fr
paths:
- path: /api/(.*)
Démonstration¶
Une fois ce helm chart déposé sur la forge:
argocd pour l’installer sur notre cluster (démonstration avec dw4-dev)
synchronisation automatique
rollback / suivi basique des logs / debuggage k8s / via argocd
Petit shéma du cluster¶

Intérêt par rapport à Docker¶
Gestion des certificats
Regles de proxy simplifiées
Outil de suivi argocd
Intégration CI/CD
Scalabilité