- In Dockerfiles zerstört
:latest die wichtigste Anforderung von CD: „reproduzierbare idempotente Builds“
→ Es lässt Builds nicht nur fehlschlagen, sondern verursacht auch Produktionsfehler
- In Kubernetes-Pod-Manifests
latest anzugeben, 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 von latest
- 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 -upgrade ausführen und das Lockfile committen
- Während CI keine Lockfiles aktualisieren
- Arten von Lockfiles
- Terraform :
.terraform.lock.hcl
- Python :
Pipfile mit Pipenv
- Node/Yarn :
yarn.lock
- Go :
go.sum und go.mod
- 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.