Erstellen Sie eine kontinuierliche Deployment-Pipeline mit Oracle Cloud Infrastructure DevOps

Die schnelle Bereitstellung von Software ist entscheidend für die effiziente Ausführung von Anwendungen in der Cloud. Oracle Cloud Infrastructure (OCI) DevOps bietet Entwicklern eine durchgängige End-to-End-Deployment-Erfahrung. OCI DevOps umfasst das Bereitstellen von Pipelines, um Ihren kontinuierlichen Software-Deployment-Prozess (CD) auf OCI-Plattformen zu automatisieren: Container Engine for Kubernetes (OKE), Functions und Compute-Instanzen.

Durch die Automatisierung von Software-Releases mit Pipeline-Bereitstellung wird die Entwicklerproduktivität gesteigert und Sie können Features häufiger und mit weniger Fehlern freigeben. Sie trägt dazu bei, Ausfallzeiten bei der Bereitstellung zu vermeiden und die Komplexität der Aktualisierung von Anwendungen zu automatisieren. OCI DevOps kann von beiden Kunden verwendet werden, die Workloads von On Premise oder anderen Clouds zu OCI migrieren und Kunden neue Anwendungen auf OCI entwickeln.

Architektur

In dieser Referenzarchitektur wird eine Beispielanwendung "Hello World" mit OCI DevOps bereitgestellt. Die Anwendung Hello World ist bereits erstellt und bereit für die Bereitstellung. Die Anwendung wird in drei verschiedenen Zielumgebungen bereitgestellt: OKE, Compute-Instanzen und Funktionen. Zur Vereinfachung des Prozesses wird Terraform für die Infrastrukturautomatisierung verwendet.

Das folgende Diagramm veranschaulicht diese Referenzarchitektur.

Beschreibung von dev-ops-deployment-pipeline.png folgt
Beschreibung der Abbildung dev-ops-deployment-pipeline.png

deploy-pipeline-devops-arch-oracle.zip

Diese Architektur enthält die folgenden Komponenten:
  • Region

    Eine OCI-Region ist ein lokalisierter geografischer Bereich, der mindestens ein Data Center, sogenannte Availability-Domains, enthält. Regionen sind unabhängig von anderen Regionen, und große Entfernungen können sie (über Länder oder sogar Kontinente) trennen.

    Die Architektur verwendet eine einzelne Region.

  • DevOps project

    Ein DevOps-Projekt ist eine logische Gruppierung von Ressourcen, die zur Implementierung Ihrer CI/CD-Workload (Continu Integration and Deployment) erforderlich sind. DevOps-Ressourcen können Artefakte, Deployment-Pipelines und Umgebungen sein. DevOps-Projekte erleichtern die Aktivierung von Logging, Überwachung und Benachrichtigungen für alle DevOps-Ressourcen.

  • Deployment-Pipeline

    Eine Deployment-Pipeline enthält die Anforderungen, die erfüllt sein müssen, um eine Reihe von Artefakten für eine Umgebung bereitzustellen. Pipelines enthalten Phasen, die die Bausteine einer Pipeline sind. Eine Pipeline kann mehrere Phasen haben, die seriell oder parallel ausgeführt werden, sodass Sie den Ablauf und die Logik Ihres Software-Release steuern können.

  • Bereitstellungsphasen
    Phasen sind einzelne Aktionen, die während einer Pipeline-Ausführung ausgeführt werden. Die DevOps-Deployment-Pipeline enthält die folgenden vordefinierten Staging-Typen, die Sie in Ihrem Releaseprozess verwenden können:
    • Rollierendes Deployment: Ein inkrementelles Release für OKE, Funktionen oder Instanzgruppen.
    • Wait: Wait N Sekunden.
    • Manuelle Genehmigung: Fahren Sie fort, wenn eine Genehmigung erteilt wurde; beenden Sie den Vorgang, wenn eine Genehmigung abgelehnt wurde.
    • Funktion aufrufen: Benutzerdefinierte Aufgaben und Integration ausführen, indem Sie eine Funktion aufrufen und ein Artefakt von Anforderungsparametern übergeben.
  • DevOps Artefakt

    Ein DevOps-Artefakt ist eine Referenz oder ein Zeiger auf Dateien, Binärdateien, Packages, Manifeste oder Images, aus denen Ihre Anwendung besteht. Beim Erstellen eines Artefakts müssen Sie Oracle DevOps über den Quellspeicherort des eigentlichen Artefakts informieren. DevOps unterstützt Repositorys der OCI Container Image Registry und der OCI Artifact Registry.

  • Artefakt-Repository

    Mit dem Artefakt-Repository werden Repositorys erstellt, um ähnliche Artefakte zu gruppieren. Nachdem das Repository erstellt wurde, können Artefakte in sie hochgeladen werden. Diese Artefakte sind eine Sammlung von Textdateien, Binärdateien und Deployment-Manifesten, die an die Ziel-Deployment-Umgebung geliefert werden. Jedes Artefakt hat einen Namen, der aus seinem Pfad erstellt wird: Version. Der Pfad ist eine Zeichenfolge zum Organisieren der Artefakte.

  • OCI-Logging- und -Benachrichtigungsservices

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

  • Deployment-Umgebungen
    Eine Umgebung ist eine Sammlung von 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.
    • Oracle Kubernetes-Cluster (OKE): Oracle Container Engine for Kubernetes ist einen vollständig verwalteten, skalierbaren und hochverfügbaren Service, mit dem Sie Ihre containerisierten Anwendungen in der Cloud bereitstellen können.
    • Compute-Instanzen: Mit dem OCI Compute-Service können Sie Compute-Hosts in der Cloud bereitstellen und verwalten. Sie können Compute-Instanzen mit Ausprägungen starten, die Ihren Ressourcenanforderungen für CPU, Arbeitsspeicher, Netzwerkbandbreite und Speicher entsprechen.
    • Funktionen: Oracle Functions ist eine vollständig verwaltete, mehrmandantenfähige, hochskalierbare, bedarfsgesteuerte Functions-as-a-Service-Plattform. Sie basiert auf OCI der Unternehmensklasse und wird von der Open-Source-Engine Fn Project unterstützt.
    Umgebungen können sich in verschiedenen OCI-Regionen als die Region der Deployment-Pipeline befinden. Auf diese Weise können Entwickler in mehreren OCI-Regionen mit derselben Deployment-Pipeline bereitstellen.

Empfehlungen

Verwenden Sie die folgenden Empfehlungen als Ausgangspunkt. Ihre Anforderungen können sich von der hier beschriebenen Architektur unterscheiden.
  • 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 Speicher oder Kerne benötigt, können Sie eine andere Ausprägung 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, die sich im standardmäßigen privaten IP-Adressbereich befinden.

    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 gewähren.

  • OKE

    Diese Architektur wird als Zielumgebung im OKE-Cluster bereitgestellt. Die Worker-Knoten werden auf einem E3- oder E4 Oracle Linux-BS bereitgestellt. Diese Architektur verwendet drei Worker-Knoten im Cluster. Sie können jedoch bis zu 1,000 Knoten in jedem Cluster erstellen.

  • Funktionen

    Wenn Sie die Architektur für das Deployment in einer OCI-Funktion auswählen, werden in Ihrem Mandanten eine neue Functions-Anwendung und -Funktion erstellt.

  • Instanzgruppe

    Wenn Sie sich für die Architektur entscheiden, die in einer Instanzgruppe bereitgestellt werden soll, haben Sie neue Compute-Instanzen Ihrer Wahl zur Ausprägung, die in Ihrem Mandanten erstellt wurden.

  • Container-Image-Registry

    Diese Architektur stellt Registry zur internen Verwendung als private Docker-Registry bereit. Docker-Images werden in die Registry übertragen und daraus abgerufen. Sie können Registry auch als öffentliche Docker-Registry verwenden, sodass jeder Benutzer mit Internetzugriff und Kenntnis der entsprechenden URL Images aus öffentlichen Repositorys in Oracle Cloud abrufen kann.

  • Artefaktregistrierung

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

Überlegungen

Beachten Sie beim Deployment dieser Referenzarchitektur die folgenden Punkte.

  • DevOps-unterstützte Deployments

    DevOps unterstützt Deployments in OKE, Compute-Hosts und Funktionen. Diese Architektur wird in einem OKE-Cluster bereitgestellt. Sie sollten das Deployment für andere Endpunkte basierend auf den Anforderungen in Erwägung ziehen.

  • Linux-Support

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

  • Bereitgestellte Artefakte

    Artefakte, die mit DevOps bereitgestellt werden sollen, müssen in einer OCI-Artefakt-Registry oder einem Repository der Container-Image-Registry enthalten sein.

  • Anwendungen gruppieren

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

Bereitstellen

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

  • Mit dem Beispielstack in Oracle Cloud Infrastructure Resource Manager bereitstellen:
    1. Klicken Sie auf die Schaltfläche "Bereitstellen", um auf den Resource Manager zuzugreifen:

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

    2. Wählen Sie die Region aus, in der der Stack bereitgestellt werden soll.
    3. Befolgen Sie die Prompts und Anweisungen zum Erstellen des Stacks auf dem Bildschirm.
    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 anschließend 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.
  • Mit dem Terraform-Code in GitHub bereitstellen:
    1. Gehen Sie zu GitHub.
    2. Klonen Sie das Repository, oder laden Sie es auf Ihren lokalen Computer herunter.
    3. Befolgen Sie die Anweisungen im Dokument README.

Mehr anzeigen

Weitere Informationen zu OCI DevOps finden Sie in den folgenden Ressourcen:

Änderungslog

In diesem Log werden wichtige Änderungen aufgeführt: