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 der Abbildung cicd-pipe-devops-functions-arch.png
cicd-pipe-devops-functions-arch-oracle.zip
- 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.
Empfehlungen
- Speicherzuweisung und Zeitüberschreitung für Funktionen
Die Konfiguration kann durch Aktualisieren der Datei "func.yaml" gemäß den folgenden Einstellungen geändert werden:
Parameterbeschreibung Einstellungen Maximale Zeit, über die eine Funktion ausgeführt werden kann - Standardwert: 30
- Einheiten: Sekunden
- func.yaml-Parameter: Timeout
- Umgebungsvariable: n/v
- Fn-CLI-Option: n/v
- Hinweise:
- Höchstwert: 300
- Es wird empfohlen, einen Timeout anzugeben, der dem wahrscheinlich erforderlichen Timeout nahekommt, statt einen deutlich höheren Wert anzugeben.
Maximaler Speicherschwellenwert für eine Funktion - Standardwert: 128
- Einheiten: MB
- func.yaml-Parameter: Arbeitsspeicher
- Umgebungsvariable: FN_MEMORY
- Fn-CLI-Option: n/v
- Hinweise:
Einer von:
- 128
- 256
- 512
- 1024
- 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:
- Klicken Sie auf
Wenn Sie noch nicht angemeldet sind, geben Sie den Mandanten und die Benutzerzugangsdaten ein.
- Wählen Sie die Region aus, in der Sie den Stack bereitstellen möchten.
- Befolgen Sie die Prompts und Anweisungen zum Erstellen des Stacks auf dem Bildschirm.
- Klicken Sie nach dem Erstellen des Stacks auf Terraform-Aktionen, und wählen Sie Planen aus.
- 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.
- Wenn keine weiteren Änderungen erforderlich sind, kehren Sie zur Seite "Stackdetails" zurück, klicken Sie auf Terraform-Aktionen, und wählen Sie Anwenden aus.
- Klicken Sie auf
- Stellen Sie Anwendungen mit dem Terraform-Code in GitHub bereit:
- Gehen Sie zu GitHub.
- Klonen Sie das Repository, oder laden Sie es auf Ihren lokalen Rechner herunter.
- Befolgen Sie die Anweisungen im Dokument
README
.