CI/CD-Pipeline mit Oracle Cloud Infrastructure DevOps-Service und Oracle Cloud Infrastructure-Funktionen erstellen

Die schnelle Bereitstellung von Software ist für die effiziente Ausführung Ihrer Anwendungen in der Cloud von wesentlicher Bedeutung. Oracle DevOps Service bietet eine Plattform für kontinuierliche Integration und Bereitstellung (CI/CD) für Entwickler. Mit dem Service DevOps können Sie Software und Anwendungen einfach in Oracle Cloud erstellen, testen und bereitstellen. DevOps Build- und Deployment-Pipelines reduzieren geänderte Fehler und reduzieren die Zeit, die Kunden beim Erstellen und Bereitstellen von Releases verbringen müssen.

Der Service stellt auch private Git-Repositorys zur Speicherung Ihres Codes bereit und unterstützt Verbindungen zu externen Code-Repositorys. Unabhängig davon, ob Sie Workloads aus On-Premise- oder anderen Clouds zu Oracle Cloud Infrastructure (OCI) migrieren oder neue Anwendungen auf OCI entwickeln, können Sie den Lebenszyklus der Softwarebereitstellung mit dem DevOps-Service vereinfachen.

Architektur

In dieser Referenzarchitektur erstellen und stellen Sie Python-Anwendungen mit OCI DevOps- und OCI-Funktionsservices bereit.

Der Anwendungsquellcode wird in einem DevOps-Code-Repository gehostet. Der Endbenutzer schreibt den Code in das Code-Repository fest. Ein neuer Commit im Code-Repository löst den Start einer Build-Pipeline aus. Die Build-Pipeline folgt einem benutzerdefinierten Ablauf, um die Funktionsartefakte zu erstellen, die in OCI-Funktionsservices bereitgestellt werden sollen. Die Ausgabe des Builds wird in der Container-Registry als Docker-Images gespeichert. Die Deployment-Pipeline verwendet dann das erstellte Image aus der Container-Registry, um es in der OCI Functions-Umgebung bereitzustellen. Das folgende Architekturdiagramm zeigt, wie eine Anwendung mit einem Standardimage und einem benutzerdefinierten Image (mit einer Dockerfile) erstellt und bereitgestellt wird.

Um das Setup dieses Beispiel-CI/CD-Workflows zu vereinfachen, verwendet diese Beispielanwendung Terraform zur Automatisierung der Erstellung und Konfiguration von DevOps-Ressourcen.

Das folgende Diagramm veranschaulicht diese Referenzarchitektur.

Beschreibung von cicd-pipe-devops-functions-arch.png folgt
Beschreibung der Abbildung cicd-pipe-devops-functions-arch.png

cicd-pipe-devops-functions-arch-oracle.zip

Diese Architektur hat die folgenden Komponenten:
  • Region

    Eine OCI-Region ist ein lokalisierter geografischer Bereich, der mindestens ein Data Center, also Availability-Domains, enthält. Regionen sind unabhängig von anderen Regionen, und große Entfernungen können sie trennen (auf Ländern oder sogar Kontinenten). Die Architektur verwendet eine Region.

  • Projekt DevOps

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

  • Pipeline erstellen

    Eine Build-Pipeline verwendet eine Commit-ID aus den Quellcode-Repositorys und verwendet diesen Quellcode, um Ihre Build-Anweisungen auszuführen. Build-Pipelines definieren eine Reihe von Phasen für den Erstellungsprozess: Softwareartefakte erstellen, testen und kompilieren, Artefakte an OCI-Repositorys bereitstellen und optional ein Deployment auslösen. Sie definieren den Ablauf und die Anweisungen des Build-Laufs in der Build-Spezifikationsdatei.

  • Code-Repository

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

  • Deployment-Pipeline

    Eine Folge von Schritten zum Bereitstellen und Bereitstellen einer Gruppe von Artefakten in einer Zielumgebung. Der Ablauf und die Logik Ihres Softwarerelease können Sie steuern, indem Sie Phasen definieren, die seriell oder parallel ausgeführt werden können.

  • Deployment-Phasen

    Phasen sind einzelne Aktionen, die während einer Pipelineausführung stattfinden. Die Deployment-Pipeline DevOps enthält die folgenden vordefinierten Phasentypen, die Sie in Ihrem Releaseprozess verwenden können:

    • Rolling Deployment: Inkrementelles Release für Oracle Container Engine for Kubernetes (OKE), Funktionen oder Instanzgruppen
    • Wait: Wait N Sekunden
    • Manuelle Genehmigung: Fahren Sie fort, wenn eine Genehmigung erteilt wurde. Stoppen Sie, wenn eine Genehmigung abgelehnt wurde.
    • Funktion aufrufen: Führen Sie benutzerdefinierte Aufgaben oder Integrationen durch Aufrufen einer Funktion aus, und übergeben Sie ein Artefakt mit Anforderungsparametern.
  • DevOps-Artefakt

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

  • Artefakt-Repository

    Artefakt-Repository erstellt Repositorys zum Gruppieren ähnlicher Artefakte. Wenn das Repository erstellt wird, können Sie Artefakte in das Repository hochladen. Diese Artefakte sind eine Zusammenstellung von Textdateien, Binärdateien und Deployment-Manifesten, die in der Ziel-Deployment-Umgebung bereitgestellt werden. Jedes Artefakt hat einen Namen, der aus seinem Pfad besteht: Version. Der Pfad ist eine Zeichenfolge zum Organisieren der Artefakte.

  • OCI-Logging- und -Benachrichtigungsservices

    OCI-Loggingservice speichert Logs im Zusammenhang mit dem Deployment. Die Laufzeitausgabe des Deployments und die Endergebnisse des Deployments werden als Logeinträge angezeigt. OCI Notifications bietet einen Einblick in den aktuellen Status des Deployment-Projekts und dessen Ressourcen und führt alle erforderlichen Aktionen aus. Beispiel: Sie werden benachrichtigt, wenn ein wichtiges Ereignis, z.B. eine Phase in einer Bereitstellungspipeline, die auf die Genehmigung wartet. Wenn Sie die Benachrichtigung erhalten, können Sie zu den 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 virtuelle Compute-Maschine (VM-Instanz) oder eine Bare-Metal-Instanz oder ein OKE-Cluster sein.

    • Oracle Kubernetes-Cluster: OCI Container Engine for Kubernetes (OKE) ist ein vollständig verwalteter, skalierbarer und hochverfügbarer Service, mit dem Sie Containeranwendungen 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 bereitstellen, die Ihren Ressourcenanforderungen für CPU, Speicher, Netzwerkbandbreite und Speicher entsprechen.
    • Funktionen: Oracle Functions ist eine vollständig verwaltete, mehrmandantenfähige, hoch skalierbare und On-Demand-Funktion-as-a-Service-Plattform. Der Service basiert auf Oracle Cloud Infrastructure für Unternehmen und wird von der Fn-Projekt-Open-Source-Engine unterstützt.
    Umgebungen können sich in verschiedenen OCI-Regionen als Region der Deployment-Pipeline befinden. Durch diese Trennung können Entwickler in mehreren OCI-Regionen mit derselben Deployment-Pipeline bereitstellen.

Empfehlungen

Verwenden Sie die folgenden Empfehlungen als Ausgangspunkt. Beachten Sie jedoch, dass Ihre Anforderungen von der hier beschriebenen Architektur abweichen können.
  • Speicherzuweisung und Zeitüberschreitung für Funktionen
    Die Konfiguration kann durch Aktualisieren der Datei "func.yaml" gemäß den folgenden Einstellungen geändert werden:
  • Virtuelles Cloud-Netzwerk (VCN)

    Legen Sie beim Erstellen eines VCN die Anzahl der erforderlichen CIDR-Blöcke und die Größe jedes Blocks basierend auf der Anzahl der Ressourcen fest, die Sie den Subnetzen im VCN zuordnen möchten. Verwenden Sie CIDR-Blöcke, die sich im privaten Standard-IP-Adressraum befinden.

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

    Diese Architektur hostet OKE über ein öffentliches VCN. 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.

  • Container-Image-Registry

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

Hinweise

Berücksichtigen Sie beim Erstellen und Bereitstellen von Python-Anwendungen mit OCI DevOps- und OCI-Funktionsservices Folgendes:

  • DevOps unterstützt Deployments in OKE, Compute-Hosts und Funktionen.
  • Beim Deployment einer Instanzgruppe für Compute werden nur Linux-Hosts unterstützt.
  • Mit DevOps bereitgestellte Artefakte müssen sich in einer OCI-Artefakt-Registry oder einem Containerimage-Registry-Repository befinden.
  • Als Best Practice wird empfohlen, jede Anwendung und alle zugehörigen Microservices in einem einzigen Projekt zu gruppieren.

Bereitstellen

Der zum Deployment dieser Referenzarchitektur erforderliche Code ist in GitHub verfügbar. Sie können den Code mit nur einem Mausklick in Oracle Cloud Infrastructure Resource Manager abrufen, den Stack erstellen und bereitstellen. Alternativ können Sie den Code von GitHub auf Ihren Computer herunterladen, den Code anpassen und die Architektur mit der Terraform-CLI bereitstellen.

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

      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 Prompts und Anweisungen zum Erstellen des Stacks auf dem Bildschirm.
    4. Klicken Sie nach dem Erstellen des Stacks 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 Plan 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.
  • Stellen Sie Anwendungen mit dem Terraform-Code in GitHub bereit:
    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.

Mehr anzeigen

Weitere Informationen zum Oracle DevOps-Service finden Sie in den folgenden Ressourcen:

Danksagungen

  • Autor: Rahul M R
  • Beitragender: Lukasz Feldman