CI/CD-Pipeline für die Entwicklung und Bereitstellung containerisierter Anwendungen

Last reviewed 2022-11-18 UTC

In diesem Dokument wird eine integrierte Reihe von Google Cloud-Tools beschrieben, mit denen Sie ein System für die Entwicklung, für Continuous Integration (CI) und für Continuous Delivery (CD) einrichten können, mit denen Sie Anwendungen entwickeln und in Google Kubernetes Engine (GKE) bereitstellen können. Dieses Referenzarchitekturdokument richtet sich sowohl an Softwareentwickler als auch an Operatoren. Es wird davon ausgegangen, dass Sie mit dem Ausführen von gcloud-Befehlen in Google Cloud und mit dem Bereitstellen von Anwendungscontainern in GKE vertraut sind.

Architektur

Das folgende Diagramm zeigt die in dieser Architektur verwendeten Ressourcen:

System mit Cloud Code, Cloud Build, Artifact Registry, Cloud Deploy und GKE entwickeln und bereitstellen

Diese Architektur umfasst die folgenden Komponenten:

  1. Cloud Code als Entwicklungsarbeitsbereich In diesem Arbeitsbereich können Sie Änderungen im Entwicklungscluster ansehen, der in minikube ausgeführt wird. Sie führen Cloud Code und den minikube-Cluster in Cloud Shell aus. Cloud Shell ist eine Online-Entwicklungsumgebung, auf die Sie über Ihren Browser zugreifen können. Sie enthält Rechenressourcen, Arbeitsspeicher und eine integrierte Entwicklungsumgebung (IDE) und Cloud Code ist darin installiert.
  2. Cloud Build zum Erstellen und Testen der Anwendung (der "CI"-Teil der Pipeline)

    Dieser Teil der Pipeline umfasst die folgenden Aktionen:

    • Cloud Build überwacht Änderungen am Quell-Repository mithilfe eines Cloud Build-Triggers.
    • Wenn für eine Änderung ein Commit im Hauptzweig durchgeführt wird, führt der Cloud Build-Trigger folgende Schritte aus:
      • Erstellt den Anwendungscontainer neu.
      • Platziert Build-Artefakte in einem Cloud Storage-Bucket.
      • Platziert den Anwendungscontainer in Artifact Registry.
      • Führt Tests für den Container aus.
      • Ruft Cloud Deploy auf, um den Container in der Staging-Umgebung bereitzustellen. In diesem Beispiel ist die Staging-Umgebung ein Google Kubernetes Engine-Cluster.
    • Wenn der Build und die Tests erfolgreich sind, können Sie den Container mithilfe von Cloud Deploy vom Staging zur Produktion hochstufen.
  3. Cloud Deploy zum Verwalten der Bereitstellung (der "CD"-Teil der Pipeline) In diesem Teil der Pipeline führt Cloud Deploy Folgendes aus:

    • Registriert eine Bereitstellungspipeline und Ziele. Die Ziele stellen die Staging- und Produktionscluster dar.
    • Erstellt einen Cloud Storage-Bucket und speichert die Skaffold-Rendering-Quelle und die gerenderten Manifeste in diesem Bucket.
    • Erzeugt für jede Änderung des Quellcodes einen neuen Release.
    • Stellt die Anwendung in der Produktionsumgebung bereit. Für diese Bereitstellung in der Produktion genehmigt ein Betreiber (oder eine andere dafür bestimmte Person) die Bereitstellung manuell. In dieser Architektur ist die Produktionsumgebung ein Google Kubernetes Engine-Cluster.

In dieser Architektur wird die Konfiguration von den Entwicklungs-, Staging- und Produktionsumgebungen über Skaffold gemeinsam genutzt. Dieses Befehlszeilentool ermöglicht die kontinuierliche Entwicklung für Kubernetes-native Anwendungen.

Google Cloud speichert den Quellcode der Anwendung in GitHub.

In dieser Architektur werden Google Cloud-Produkte für die meisten Komponenten des Systems verwendet, wobei Skaffold die Integration des Systems ermöglicht. Da Skaffold ein Open-Source-Tool ist, können Sie mithilfe dieser Prinzipien ein ähnliches System erstellen. Dazu verwenden Sie eine Kombination aus Google Cloud-, internen und Drittanbieterkomponenten. Die Modularität dieser Lösung bedeutet, dass Sie sie schrittweise als Teil Ihrer Entwicklungs- und Bereitstellungspipeline übernehmen können.

Anwendungsfälle

Im Folgenden sind die wichtigsten Features dieses integrierten Systems aufgeführt:

  • Schnelleres Entwickeln und Bereitstellen.

    Die Entwicklungsschleife ist effizient, da Sie Änderungen im Entwicklerarbeitsbereich validieren können. Die Bereitstellung ist schnell, da Sie durch das automatisierte CI/CD-System und die erhöhte Parität zwischen den Umgebungen mehr Probleme erkennen, wenn Sie Änderungen in der Produktion bereitstellen.

  • Sie profitieren von einer höheren Parität bei Entwicklung, Staging und Produktion.

    Die Komponenten dieses Systems verwenden einen gemeinsamen Satz von Google Cloud-Tools.

  • Wiederverwendung von Konfigurationen in verschiedenen Umgebungen.

    Die Wiederverwendung erfolgt über Skaffold, das ein gemeinsames Konfigurationsformat für die verschiedenen Umgebungen ermöglicht. Außerdem können Entwickler und Betreiber dieselbe Konfiguration aktualisieren und verwenden.

  • Governance frühzeitig im Workflow anwenden.

    Dieses System wendet Validierungstests für Governance in der Produktion, im CI-System und in der Entwicklungsumgebung an. Wenn Sie die Governance in der Entwicklungsumgebung anwenden, können Probleme früher erkannt und behoben werden.

  • Lassen Sie Ihre Softwarebereitstellung von speziell darauf ausgerichteten Tools verwalten.

    Continuous Delivery ist vollständig verwaltet und trennt die Phasen Ihrer CD-Pipeline von den Details des Renderings und der Bereitstellung.

Bereitstellung

Informationen zum Bereitstellen dieser Architektur finden Sie unter Containeranwendungen mit einer CI/CD-Pipeline entwickeln und bereitstellen.

Nächste Schritte