Skip to content

Choix techniques ​

Pour chaque décision : ce qui a été choisi, ce qui a été envisagé, et pourquoi.

DécisionAlternatives envisagéesPourquoi
Docker ComposeKubernetes (k3s) avec Argo CDRépond à toutes les exigences avec beaucoup moins de complexité, pour une seule application sur deux machines. Kubernetes reste une évolution possible.
Deux VMTout sur une seule VMLes builds exécutent du code tiers avec accès au socket Docker : les isoler protège la production. Les builds ne ralentissent plus l'application.
JenkinsGitHub Actions, Travis CI, Woodpecker, TektonAuto-hébergé et entièrement configuré par fichiers, sans dépendre des réglages de l'organisation de l'école. Travis CI n'est plus gratuit et n'est cité par le sujet qu'en exemple.
Interrogation de GitHub (polling)WebhooksPas de droits d'administration sur le dépôt de l'école. Le polling n'a besoin que d'un accès en lecture, et GitHub n'a jamais besoin de joindre Jenkins.
GHCRDocker Hub, registre auto-hébergéImages privées illimitées, accès lié à GitHub, rien à héberger.
Ansible sans TerraformTerraform pour les ressources GCPL'empreinte Google Cloud est petite et créée une seule fois. Ansible couvre tout ce qui change.
Traefik avec des routes en fichiersLabels Docker, nginxLes routes sont des fichiers explicites, lisibles et versionnés, et Traefik gère Let's Encrypt tout seul.
Configuration générée par AnsibleFichiers .env écrits à la mainUne seule source de vérité, des secrets chiffrés, pas d'erreur manuelle.
:latest en productionDéployer un SHA précisDéploiement plus simple. Chaque image garde aussi son SHA, pour la traçabilité et le retour arrière.
L'étape builder du Dockerfile pour les testsUne image de test dédiéeRéutilise les outils déjà définis pour la production, pas de fichier de plus à maintenir.

En schéma ​