- Dans un Dockerfile,
:latestcasse l’exigence la plus importante du CD : des builds idempotents et reproductibles
→ Cela peut non seulement faire échouer le build, mais aussi provoquer des erreurs en production - Indiquer
latestdans un manifest de Pod Kubernetes est encore pire
→ Dans un Dockerfile, un rollback reste au moins possible, mais dans un manifest de déploiement, cela crée un risque de rupture de compatibilité à n’importe quel moment où de nouveaux Pods sont déployés - Avec
pip,package.json, Terraform, etc., spécifier « une version ou plus récente » ou ne pas préciser de version produit exactement le même effet que l’usage delatest - Utilisez impérativement les mécanismes de type lockfile fournis par les frameworks
- Committez les fichiers de lock dans le contrôle de source
- Lors de l’ajout de nouvelles fonctionnalités, de bugfixes ou de correctifs de sécurité, exécutez par exemple
terraform init -upgrade, puis committez le fichier de lock - Ne mettez pas à jour les fichiers de lock pendant la CI
- Types de fichiers de lock
- Terraform :
.terraform.lock.hcl - Python :
Pipfileavec Pipenv - Node/Yarn :
yarn.lock - Go :
go.sumetgo.mod
- Terraform :
- Si possible, n’effectuez pas de résolution de dépendances au runtime
→ Transformez les dépendances en artefacts déployables et versionnez-les - Utilisez des services comme Twistlock / Grype pour effectuer des scans de vulnérabilités
Aucun commentaire pour le moment.