Zum Hauptinhalt springen

Risiken

Image Versionierung

Die Versionierung von Container-Images ist ein wichtiger Aspekt bei der Aufrechterhaltung einer sicheren und zuverlässigen Kubernetes-Umgebung. Jede Version eines Container-Images wird durch ein Tag identifiziert, das als eindeutiger Bezeichner für die Image-Version dient. Eine korrekte Versionsverwaltung stellt sicher, dass die richtige und vorgesehene Version eines Images bei der Bereitstellung verwendet wird, wodurch das Risiko der Einführung von Schwachstellen oder Inkonsistenzen verringert wird.

Die Risiken der Verwendung des neuesten Tags

Wenn ein Container-Image ohne Angabe eines Tags gezogen wird, wird standardmäßig das Tag latest verwendet. Obwohl dies praktisch ist, kann die Verwendung des latest-Tags zu verschiedenen Problemen führen:

  1. Mangel an Eindeutigkeit: Das latest-Tag definiert eine Image-Version nicht eindeutig. Verschiedene Builds eines Bildes können das gleiche latest-Tag haben, wodurch es unmöglich ist, genau zu wissen, welche Version verwendet wird.
  2. Nicht-Persistenz: Das neueste Tag ist nicht beständig und kann sich im Laufe der Zeit ändern, wenn neue Versionen des Abbilds veröffentlicht werden. Dies kann zu unerwartetem Verhalten und Schwierigkeiten bei der Aufrechterhaltung einer konsistenten Umgebung führen.
  3. Verlust der Kontrolle: Durch die Verwendung des "latest"-Tags geben Sie die Kontrolle darüber ab, welche Version des Abbilds in Ihren Bereitstellungen verwendet wird. Dies kann dazu führen, dass beliebige und potenziell ungetestete Versionen des Abbilds bereitgestellt werden.

Bewährte Praktiken für die Bildversionierung

Einzigartige Tags verwenden

Um Konsistenz und Zuverlässigkeit zu gewährleisten, sollten Sie immer eindeutig identifizierbare Tags für Ihre Container-Bilder verwenden. Dies beinhaltet:

  • Semantische Versionierung: Verwenden Sie ein Versionsschema wie Semantic Versioning (z. B. v1.0.0, v1.1.0, v2.0.0), um die Version des Bildes eindeutig anzugeben.
  • Commit-Hashes: Verwenden Sie Commit-Hashes oder andere eindeutige Identifikatoren als Tags, um sicherzustellen, dass jede Version des Bildes eindeutig und nachvollziehbar ist.
Durchsetzung der Tag-Verwendung in CI/CD-Pipelines

Implementieren Sie Mechanismen in Ihren CI/CD-Pipelines, um die Verwendung eindeutiger Tags zu erzwingen. Dies kann erreicht werden durch:

  • Tag-Validierung: Fügen Sie Validierungsschritte in Ihre CI/CD-Pipelines ein, um zu prüfen, ob Bilder mit eindeutigen Bezeichnern versehen sind, bevor sie in die Registrierung übertragen werden.
  • Automatisierung: Automatisieren Sie den Tagging-Prozess, um Konsistenz zu gewährleisten und menschliche Fehler zu vermeiden. Tools wie Jenkins, GitLab CI oder GitHub Actions können so konfiguriert werden, dass sie automatisch geeignete Tags auf der Grundlage des Build-Kontexts anwenden.
Vermeiden Sie die Verwendung des neuesten Tags

Vanilla Kubernetes bietet zwar keine eingebaute Möglichkeit, das Verbot des neuesten Tags durchzusetzen, aber Sie können innerhalb Ihres Teams Richtlinien und Best Practices implementieren, um seine Verwendung zu vermeiden:

  • Dokumentation: Dokumentieren Sie klar die Risiken, die mit der Verwendung des neuesten Tags verbunden sind, und stellen Sie Richtlinien für die Verwendung eindeutiger Tags bereit.
  • Code-Überprüfungen: Nehmen Sie in Ihren Code-Review-Prozess Überprüfungen auf, um sicherzustellen, dass Bereitstellungen nicht auf das neueste Tag verweisen.
  • Tools zur Durchsetzung von Richtlinien: Verwenden Sie Tools zur Durchsetzung von Richtlinien wie Open Policy Agent (OPA) oder Gatekeeper, um Richtlinien durchzusetzen, die die Verwendung des neuesten Tags in Kubernetes-Manifesten verbieten.

Beispiel-Workflow für die sichere Bildversionierung

  1. Bauen: Wenn Sie Container-Images erstellen, stellen Sie sicher, dass jedes Build mit einer eindeutigen Kennung versehen wird, z. B. einer Versionsnummer oder einem Commit-Hash.
  2. Pushen: Pushen Sie die eindeutig gekennzeichneten Images in Ihre Container-Registry.
  3. Bereitstellen: Verweisen Sie auf die eindeutigen Tags in Ihren Kubernetes-Manifesten und Helm-Diagrammen, um sicherzustellen, dass die richtige Version des Images bereitgestellt wird.
  4. Überwachung: Überwachen und prüfen Sie Ihre Bereitstellungen kontinuierlich, um sicherzustellen, dass nur eindeutig gekennzeichnete Images verwendet werden.

Schlussfolgerung

Eine ordnungsgemäße Image-Versionierung ist für die Aufrechterhaltung einer sicheren und zuverlässigen Kubernetes-Umgebung unerlässlich. Durch die Verwendung eindeutig identifizierbarer Tags, die Durchsetzung der Tag-Verwendung in CI/CD-Pipelines und die Vermeidung des latest Tags können Sie sicherstellen, dass Ihre Bereitstellungen konsistent und vorhersehbar sind. Die Umsetzung dieser Best Practices mindert die Risiken, die mit willkürlichen und nicht verifizierten Image-Versionen verbunden sind, und erhöht die allgemeine Sicherheit und Stabilität Ihrer Kubernetes-Anwendungen.


Orientieren Sie sich an folgenden Maßnahmen: