- In Dockerfiles zerstört
:latestdie wichtigste Anforderung von CD: „reproduzierbare idempotente Builds“
→ Es lässt Builds nicht nur fehlschlagen, sondern verursacht auch Produktionsfehler - In Kubernetes-Pod-Manifests
latestanzugeben, ist noch schlimmer
→ In Dockerfiles ist zumindest ein Rollback möglich, aber wenn man es im Deployment-Manifest tut, besteht das Risiko, dass die Kompatibilität zu irgendeinem Zeitpunkt beim Ausrollen neuer Pods bricht - Auch bei PIP,
package.json, Terraform usw. hat die Angabe von „mindestens einer bestimmten Version“ oder das Weglassen einer Versionsangabe denselben Effekt wie die Verwendung vonlatest - Funktionen wie Lockfiles, die Frameworks bereitstellen, sollten unbedingt verwendet werden
- Lockfiles in die Versionsverwaltung committen
- Beim Anwenden neuer Funktionen/Bugfixes/Sicherheitsfixes usw. Dinge wie
terraform init -upgradeausführen und das Lockfile committen - Während CI keine Lockfiles aktualisieren
- Arten von Lockfiles
- Terraform :
.terraform.lock.hcl - Python :
Pipfilemit Pipenv - Node/Yarn :
yarn.lock - Go :
go.sumundgo.mod
- Terraform :
- Wenn möglich, keine Abhängigkeits-Pulls zur Laufzeit durchführen
→ Abhängigkeiten als deploybare Artefakte erstellen und versionieren - Mit Diensten wie Twistlock / Grype Schwachstellen scannen
Noch keine Kommentare.