CI/CD-Pipeline mit Oracle Cloud Infrastructure DevOps und OCI-Instanzen erstellen

Die schnelle Bereitstellung von Software ist für die effiziente Ausführung Ihrer Anwendungen in der Cloud unerlässlich. Oracle DevOps-Service bietet Entwicklern eine Plattform für kontinuierliche Integration und Bereitstellung (CI/CD). Mit dem DevOps-Service können Sie Software und Anwendungen in Oracle Cloud erstellen, testen und bereitstellen. DevOps Build- und Deployment-Pipelines reduzieren Fehler aufgrund von Änderungen und reduzieren die Zeit, die Kunden für das Erstellen und Deployment von Releases aufwenden. Der Service stellt auch private Git-Repositorys zur Speicherung Ihres Code bereit und unterstützt Verbindungen zu externen Code-Repositorys. Unabhängig davon, ob Sie Workloads zu OCI (von On Premise oder anderen Clouds) migrieren oder neue Anwendungen in OCI entwickeln, können Sie den DevOps-Service verwenden, um den Lebenszyklus der Softwarebereitstellung zu vereinfachen.

Architektur

Diese Referenzarchitektur zeigt, wie Sie eine moderne Anwendung erstellen und diese dann in OCI-Compute-Instanzen bereitstellen. In dieser Demo wird eine Anwendung verwendet, die auf einer Graal Enterprise/Micronaut-fähigen Java-Anwendung basiert. Die Anwendung wird über einen OCI-Load Balancer verfügbar gemacht, sodass während eines aktiven Deployments ein reibungsloser Trafficwechsel sichergestellt wird.

Das folgende Diagramm zeigt diese Architektur.

Beschreibung von instance-group-deploy-arch.png folgt
Beschreibung der Abbildung instance-group-deploy-arch.png

Diese Architektur besteht aus den folgenden Komponenten:
  • Region

    Eine OCI-Region ist ein lokalisierter geografischer Bereich, der ein oder mehrere Data Center enthält, die als Availability-Domains bezeichnet werden. Regionen sind unabhängig von anderen Regionen, und große Entfernungen können sie trennen (über Länder oder sogar Kontinente). Die Architektur verwendet eine einzelne Region.

  • DevOps-Projekt

    Eine logische Gruppierung von DevOps-Ressourcen, die zur Implementierung eines CI/CD-Workflows erforderlich sind. DevOps-Ressourcen können Artefakte, Build-Pipelines, Deployment-Pipelines, externe Verbindungen, Trigger und Umgebungen sein. Mit DevOps-Projekten können Sie Logging, Überwachung und Benachrichtigungen für alle DevOps-Ressourcen einfach aktivieren.

  • Build-Pipeline

    Eine Build-Pipeline akzeptiert eine Commit-ID aus Ihren Quellcode-Repositorys und verwendet diesen Quellcode zur Ausführung Ihrer Build-Anweisungen. Build-Pipelines definieren eine Gruppe von Phasen für den Build-Prozess: Softwareartefakte erstellen, testen und kompilieren, Artefakte in OCI-Repositorys bereitstellen und optional ein Deployment auslösen. Sie definieren den Ablauf und die Anweisungen der Build-Ausführung in der Build-Spezifikationsdatei.

  • Phasen erstellen

    Phasen sind einzelne Aktionen, die während einer Ausführung einer Pipeline ausgeführt werden. Hier werden verschiedene Bauphasen genannt:

    • Verwaltete Build-Phasen - Eine verwaltete Build-Phase zum Erstellen und Testen des Quellcodes.
    • Phase "Artefakte übermitteln" - Eine Phase, in der die Ausgaben der Build-Phase in verschiedene Repositorys übertragen werden. Wie Containerimages im Container-Repository und Deployment-Manifest in der Artefakt-Registry.
    • Deployment aufrufen - Eine Phase zum Aufrufen einer Deployment-Pipeline nach Abschluss der Build-Phasen sowie zum Parsen der exportierten Variablen von der verwalteten Build-Phase in die Deployment-Pipeline-Phasen.
  • Code-Repository

    Private Git-Repositorys, die vom DevOps-Service gehostet werden. Sie können Quellcode über unsere DevOps-Code-Repositorys speichern, verwalten und entwickeln.

  • Deployment-Pipeline

    Eine Sequenz von Schritten für die Bereitstellung und Bereitstellung einer Gruppe von Artefakten in einer Zielumgebung. Der Ablauf und die Logik Ihres Softwarerelease können durch die Definition von Phasen gesteuert werden, die seriell oder parallel ausgeführt werden können.

  • Deployment-Phasen

    Phasen sind einzelne Aktionen, die während einer Ausführung einer Pipeline ausgeführt werden. In diesem Fall verwenden wir die Rolling-Phase "Compute-Instanzgruppe" in der Deployment-Pipeline, die die Anwendung entsprechend in OCI Compute-Instanzen installiert.

  • Artefakt DevOps

    Ein DevOps-Artefakt ist eine Referenz oder ein Zeiger auf Dateien, Binärdateien, Packages, Manifest oder Images, aus denen Ihre Anwendung besteht. Wenn Sie ein Artefakt erstellen, informieren Sie Oracle DevOps über den Quellspeicherort des tatsächlichen Artefakts. DevOps unterstützt OCI Container Image Registry- und OCI Artifact Registry-Repositorys.

  • Artefakt-Repository

    Das Artefakt-Repository erstellt Repositorys, um ähnliche Artefakte zu gruppieren. Wenn das Repository erstellt wird, können Sie Artefakte in das Repository hochladen. Diese Artefakte sind eine Sammlung von Textdateien, Binärdateien und Deployment-Manifesten, die in der Ziel-Deployment-Umgebung bereitgestellt werden. Jedes Artefakt hat einen Namen, der aus dem Pfad "version" besteht. Der Pfad ist eine Zeichenfolge zum Organisieren der Artefakte.

  • OCI-Logging- und -Benachrichtigungsservices

    Der OCI Logging-Service speichert Logs für das Deployment. Die Deployment-Laufzeitausgabe und die Endergebnisse des Deployments werden als Logeinträge angezeigt. OCI Notifications bietet Einblick in den aktuellen Status des Deployment-Projekts und seiner Ressourcen und ergreift alle erforderlichen Maßnahmen. Beispiel: Sie werden benachrichtigt, wenn ein wichtiges Ereignis, z.B. eine Phase in einer Deployment-Pipeline, auf die Genehmigung wartet. Wenn Sie die Benachrichtigung erhalten, können Sie zu den Deployment-Pipelines DevOps gehen und die Phase genehmigen.

  • Deployment-Umgebungen

    Eine Umgebung ist eine Sammlung der Computing-Ressourcen eines Kunden, in denen Artefakte bereitgestellt werden. Umgebungen können eine Funktion, eine Compute-Virtual-Machine-(VM-) oder Bare-Metal-Instanz oder ein OKE-Cluster sein. Das Blue Green-Deployment ist nur mit OKE-Cluster und virtuellen Compute-Maschinen verfügbar.

  • OCI-Compute-Instanzen

    Oracle Cloud Infrastructure bietet schnelle, flexible und erschwingliche Compute-Kapazität für alle Workload-Anforderungen - von leistungsstarken Bare-Metal-Servern und VMs bis hin zu Lightweight-Containern. OCI Compute bietet einzigartige flexible VM- und Bare-Metal-Instanzen für ein optimales Preis-Leistungs-Verhältnis. Diese Architektur verwendet OCI Compute mit Oracle Linux als BS-Image.

  • OCI Load Balancer

    Der Oracle Cloud Infrastructure Load Balancing-Service ermöglicht automatisierte Trafficverteilung von einem Ausgangspunkt an mehrere Server, die über das virtuelle Cloud-Netzwerk (VCN) erreichbar sind. Der Service bietet einen Load Balancer mit wahlweise öffentlichen oder privaten IP-Adressen und der bereitgestellten Bandbreite.

Empfehlungen

Verwenden Sie die folgenden Empfehlungen als Ausgangspunkt für die Erstellung einer CI/CD-Pipeline mit Oracle Cloud Infrastructure DevOps und OCI-Instanzen. Ihre Anforderungen können von der hier beschriebenen Architektur abweichen.
  • Compute-Ausprägungen

    Diese Architektur verwendet ein Oracle Linux-BS-Image mit der Flex-Ausprägung E3 oder E4 mit minimalen Ressourcen, um Compute-Hosts in den OKE-Clusterknoten zu hosten. Wenn Ihre Anwendung mehr Arbeitsspeicher oder Kerne benötigt, können Sie eine andere Ausprägungen auswählen.

  • VCN

    Bestimmen Sie beim Erstellen eines VCN die Anzahl der erforderlichen CIDR-Blöcke und die Größe jedes Blocks basierend auf der Anzahl der Ressourcen, die Sie an Subnetze im VCN anhängen möchten. Verwenden Sie CIDR-Blöcke innerhalb des standardmäßigen privaten IP-Adressraums.

    Nachdem Sie ein VCN erstellt haben, können Sie die zugehörigen CIDR-Blöcke ändern, hinzufügen und entfernen.

    Diese Architektur verwendet ein öffentliches VCN, um Oracle Container Engine for Kubernetes zu hosten. Sie können auch ein privates VCN verwenden. Verwenden Sie in diesem Fall ein NAT-Gateway, um dem Cluster Zugriff über das öffentliche Internet zu erteilen.

  • Instanzgruppe

    Wenn Sie die Architektur auswählen, die in einer Instanzgruppe bereitgestellt werden soll, werden neue Compute-Instanzen Ihrer gewünschten Ausprägung in Ihrem Mandanten erstellt.

  • Artifact Registry

    Diese Architektur erstellt ein Artefakt für die Software und Konfiguration, die von einem Instanzgruppen-, OKE- und Functions-Deployment verwendet wird. Die Architektur erstellt ein Repository für die Artefakt-Registry zur internen Verwendung. Softwarebinärdateien, Text und Deployment-Konfigurationen werden in das Artefakt-Registry-Repository hochgeladen und daraus heruntergeladen.

Hinweise

Beachten Sie beim Deployment dieser Referenzarchitektur Folgendes.

  • Von DevOps unterstützte Deployments

    DevOps unterstützt Deployments in OKE, Compute-Hosts und Functions. Diese Architektur wird in einem OKE-Cluster bereitgestellt. Ziehen Sie je nach Anforderung ein Deployment in anderen Endpunkten in Betracht.

  • Linux-Support

    Nur Linux-Hosts werden für Instanzgruppen-Deployments in Compute-Instanzen unterstützt.

  • Bereitgestellte Artefakte

    Mit DevOps bereitzustellende Artefakte müssen sich in einer OCI-Artefakt-Registry oder einem Containerimage-Registry-Repository befinden.

  • Anwendungen gruppieren

    Als Best Practice gruppieren Sie jede Anwendung und alle zugehörigen Microservices in einem einzigen Projekt.

Bereitstellen

Der Terraform-Code für diese Referenzarchitektur ist als Beispielstack in Oracle Cloud Infrastructure Resource Manager verfügbar. Sie können den Code auch von GitHub herunterladen und an Ihre spezifischen Anforderungen anpassen.

  • Mit dem Beispielstack in Oracle Cloud Infrastructure Resource Manager bereitstellen:
    1. Klicken Sie auf Bereitstellung in Oracle Cloud.

      Wenn Sie noch nicht angemeldet sind, geben Sie den Mandanten und die Benutzerzugangsdaten ein.

    2. Wählen Sie die Region aus, in der Sie den Stack bereitstellen möchten.
    3. Befolgen Sie die Anweisungen auf dem Bildschirm, um den Stack zu erstellen.
    4. Nachdem Sie den Stack erstellt haben, klicken Sie auf Terraform-Aktionen, und wählen Sie Planen aus.
    5. Warten Sie, bis der Job abgeschlossen ist, und prüfen Sie den Plan.

      Um Änderungen vorzunehmen, kehren Sie zur Seite "Stackdetails" zurück, klicken Sie auf Stack bearbeiten, und nehmen Sie die erforderlichen Änderungen vor. Führen Sie dann die Aktion Planen erneut aus.

    6. Wenn keine weiteren Änderungen erforderlich sind, kehren Sie zur Seite "Stackdetails" zurück, klicken Sie auf Terraform-Aktionen, und wählen Sie Anwenden aus.
  • Mit dem Terraform-Code in GitHub bereitstellen:
    1. Gehen Sie zu GitHub.
    2. Klonen Sie das Repository, oder laden Sie es auf Ihren lokalen Rechner herunter.
    3. Befolgen Sie die Anweisungen im Dokument README.

Bestätigungen

Autor: Rahul M.R.