CI/CD-Pipeline für OCI Functions mit GitHub-Aktionen erstellen

CI/CD (Continuous Integration/Continuous Deployment) automatisiert Ihre Builds, Tests und das Deployment, sodass Sie Codeänderungen schneller und zuverlässiger versenden können. Oracle Cloud Infrastructure Functions ist eine vollständig verwaltete, mehrmandantenfähige, hoch skalierbare und bedarfsgesteuerte Plattform. Sie basiert auf Oracle Cloud Infrastructure (OCI) für Unternehmen und wird vom Fn-Projekt als Open-Source-Engine unterstützt. Diese Referenzarchitektur enthält empfohlene Strukturen und Integrationen, mit denen Sie die Fn-Projekt-CLI in allen IDE-(Integrated Development Environment-)Tools verwenden können, um eine CI/CD-OCI Functions-Servicepipeline zu erstellen und bereitzustellen.

Architektur

Diese Architektur verwendet GitHub Actions als externes kontinuierliches Integrations- und Deployment-System, um Code zu erstellen, zu containerisieren und Oracle Cloud Infrastructure Functions bereitzustellen. Anstelle von GitHub Action können Sie andere integrierte Entwicklungsumgebungstools verwenden, wie GitLab oder Azure DevOps.

Das folgende Diagramm veranschaulicht diese Referenzarchitektur.

Beschreibung von cicd-deploy-oci-functions.png folgt
Beschreibung der Abbildung cicd-deploy-oci-functions.png

cicd-deploy-oci-functions-oracle.zip

Die Architektur umfasst die folgenden externen Systeme:

  • Externes System (CI/CD)

    Das externe System für CI/CD umfasst die integrierte Entwicklungsumgebung (IDE), das Code-Repository und die Pipeline.

    Diese Architektur verwendet GitHub Actions als externes Repository-System für kontinuierliche Integration und Deployment-Code. Es wird verwendet, um Code zu erstellen und ihn dann mit Docker zu containerisieren. Wenn das containerisierte Image bereit ist, überträgt GitHub Actions das Image in eine OCI-Registry. Nach Abschluss der Übertragung in die Registry wird das OCI Functions-Deployment gestartet. Je nach Ihren Anforderungen können Sie andere kontinuierliche Integrations- oder Deployment-Systeme wie OCI DevOps, Azure DevOps, Gitlab oder Jenkins verwenden.

  • Externes System (SIEM/ITSM/OTHER)

    Das externe System für SIEM und ITSM stellt andere Systeme von Drittanbietern oder Nicht-OCI-Services dar.

    Die Aggregation und Anreicherung von OCI-Auditlogs, Servicelogs und Sicherheitsereignissen sind grundlegende Anforderungen an externe SIEM- oder ITSM-Systeme. Durch die Zentralisierung dieser Daten können Unternehmen ihre Mandanten analysieren, überwachen und sichern.

Die Architektur umfasst die folgenden Komponenten:

  • Region

    Eine Oracle Cloud Infrastructure-Region ist ein lokalisierter geografischer Bereich, der mindestens ein Data Center enthält, das als Availability-Domain bezeichnet wird. Regionen sind unabhängig von anderen Regionen, und große Entfernungen können sie trennen (über Länder oder sogar Kontinente).

  • Virtuelles Cloud-Netzwerk (VCN) und Subnetze

    Ein VCN ist ein anpassbares, softwaredefiniertes Netzwerk, das Sie in einer Oracle Cloud Infrastructure-Region einrichten können. Wie herkömmliche Data Center-Netzwerke erhalten Sie mit VCNs die Kontrolle über Ihre Netzwerkumgebung. Ein VCN kann mehrere sich nicht überschneidende CIDR-Blöcke aufweisen, die Sie nach dem Erstellen des VCN ändern können. Sie können ein VCN in Subnetze segmentieren, die sich auf eine Region oder eine Availability-Domain beschränken. Jedes Subnetz besteht aus einem Bereich zusammenhängender Adressen, die sich nicht mit anderen Subnetzen im VCN überschneiden. Sie können die Größe eines Subnetzes nach der Erstellung ändern. Ein Subnetz kann öffentlich oder privat sein.

  • Registrierung

    Oracle Cloud Infrastructure Registry ist eine von Oracle verwaltete Registry, mit der Sie Ihren Workflow von der Entwicklung bis zur Produktion vereinfachen können. Die Registry erleichtert Ihnen das Speichern, Freigeben und Verwalten von Entwicklungsartefakten wie Docker-Images. Die hochverfügbare und skalierbare Architektur von Oracle Cloud Infrastructure stellt sicher, dass Sie Ihre Anwendungen zuverlässig bereitstellen und verwalten können.

  • Functions

    Oracle Cloud Infrastructure Functions ist eine vollständig verwaltete, mehrmandantenfähige, hoch skalierbare, bedarfsgesteuerte Functions-as-a-Service-(FaaS-)Plattform. Es wird von der Open-Source-Engine Fn Project angetrieben. Mit Funktionen können Sie Ihren Code bereitstellen und entweder direkt aufrufen oder als Reaktion auf Ereignisse auslösen. Oracle Functions verwendet Docker-Container, die in Oracle Cloud Infrastructure Registry gehostet werden.

  • Service-Connectors

    Oracle Cloud Infrastructure Service Connector Hub ist eine Cloud-Nachrichtenbusplattform, die das Verschieben von Daten zwischen Services in OCI orchestriert. Mit Service-Connectors können Sie Daten aus einem Quellservice in einen Zielservice verschieben. Mit Service-Connectors können Sie auch optional eine Aufgabe (wie eine Funktion) angeben, die für die Daten ausgeführt werden soll, bevor sie an den Zielservice zugestellt werden.

    Mit Oracle Cloud Infrastructure Service Connector Hub können Sie schnell ein Loggingaggregations-Framework für Security Information and Event Management-(SIEM-)Systeme erstellen.

  • Logging
    Logging ist ein hoch skalierbarer und vollständig verwalteter Service, der Zugriff auf die folgenden Logtypen von Ihren Ressourcen in der Cloud ermöglicht:
    • Auditlogs: Logs zu Ereignissen, die vom Audit-Service ausgegeben werden.
    • Servicelogs:: Logs, die von einzelnen Services wie API Gateway, Events, Functions, Load Balancing, Object Storage und VCN-Flowlogs ausgegeben werden.
    • Benutzerdefinierte Logs: Logs, die Diagnoseinformationen von benutzerdefinierten Anwendungen, anderen Cloud-Providern oder einer On-Premise-Umgebung enthalten.
  • Streaming

    Oracle Cloud Infrastructure Streaming bietet eine vollständig verwaltete, skalierbare und dauerhafte Speicherlösung zur Aufnahme kontinuierlicher Datenstreams mit hohem Volumen, die Sie in Echtzeit konsumieren und verarbeiten können. Sie können Streaming verwenden, um hochvolumige Daten wie Anwendungslogs, Betriebstechnik, Clickstream-Webdaten oder für andere Anwendungsfälle zu erfassen, bei denen kontinuierlich und sequenziell Daten in einem Publish-Subscribe-Nachrichtenmodell erzeugt und verarbeitet werden.

  • Notifications

    Der Oracle Cloud Infrastructure Notifications-Service überträgt Nachrichten über ein Veröffentlichungs-Abonnementmuster an verteilte Komponenten. So erhalten Sie sichere, äußerst zuverlässige und dauerhafte Nachrichten mit geringer Latenz für Anwendungen, die auf Oracle Cloud Infrastructure gehostet werden.

Empfehlungen

Verwenden Sie die folgenden Empfehlungen als Ausgangspunkt. Ihre Anforderungen können von der hier beschriebenen Architektur abweichen.
  • VCN

    Wenn Sie ein VCN erstellen, bestimmen Sie 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 innerhalb des privaten IP-Standardadressraums befinden.

    Wählen Sie CIDR-Blöcke aus, die sich nicht mit einem anderen Netzwerk (in Oracle Cloud Infrastructure, Ihrem On-Premise-Data Center oder einem anderen Cloud-Provider) überschneiden, zu dem Sie private Verbindungen einrichten möchten.

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

    Berücksichtigen Sie beim Entwerfen der Subnetze Ihren Trafficfluss und Ihre Sicherheitsanforderungen. Hängen Sie alle Ressourcen innerhalb einer bestimmten Ebene oder Rolle an dasselbe Subnetz an, das als Sicherheitsgrenze dienen kann.

    Verwenden Sie regionale Subnetze.

  • Sicherheitslisten

    Mit Sicherheitslisten können Sie Ingress- und Egress-Regeln definieren, die für das gesamte Subnetz gelten.

  • Netzwerksicherheitsgruppen (NSGs)

    Mit NSGs können Sie eine Gruppe von Ingress- und Egress-Regeln definieren, die für bestimmte VNICs gelten. Wir empfehlen die Verwendung von NSGs und nicht von Sicherheitslisten, da NSGs es Ihnen ermöglichen, die Subnetzarchitektur des VCN von den Sicherheitsanforderungen Ihrer Anwendung zu trennen.

  • Cloud Guard

    Wenden Sie Cloud Guard auf Mandantenebene an, um den breitesten Geltungsbereich abzudecken und den Verwaltungsaufwand für die Verwaltung mehrerer Konfigurationen zu reduzieren.

    Sie können auch das Feature "Verwaltete Liste" verwenden, um bestimmte Konfigurationen auf Detektoren anzuwenden.

  • Sicherheitszonen

    Für Ressourcen, die maximale Sicherheit erfordern, empfiehlt Oracle die Verwendung von Sicherheitszonen. Eine Sicherheitszone ist ein Compartment, das mit einem von Oracle definierten Rezept von Sicherheits-Policys verknüpft ist, die auf Best Practices basieren. Beispiel: Die Ressourcen in einer Sicherheitszone dürfen nicht über das öffentliche Internet zugänglich sein und müssen mit vom Kunden verwalteten Schlüsseln verschlüsselt werden. Wenn Sie Ressourcen in einer Sicherheitszone erstellen und aktualisieren, validiert Oracle Cloud Infrastructure die Vorgänge anhand der Policys im Rezept der Sicherheitszone und lehnt Vorgänge ab, die gegen eine der Policys verstoßen.

  • OCI Functions

    Über den OCI Functions-Service bereitgestellte Anwendungen sind hochverfügbar, skalierbar, sicher und überwacht. Mit OCI Functions können Sie Code in Java, Python, Node, Go, Ruby und C# schreiben (und bei erweiterten Anwendungsfällen eine eigene Dockerfile und Graal VM verwenden). Anschließend können Sie Ihren Code bereitstellen, direkt aufrufen oder als Antwort auf Ereignisse auslösen.

  • OCI Registry

    Diese Architektur stellt eine öffentliche Docker-Registry bereit. Docker-Images werden in die Registry übertragen und daraus abgerufen. Dadurch kann jeder Benutzer mit Internetzugriff und Kenntnis der entsprechenden URL Images aus öffentlichen Repositorys in Oracle Cloud abrufen.

Hinweise

Beachten Sie beim Deployment dieser Referenzarchitektur die folgenden Punkte:

  • SIEM-Integrationen

    Um das Deployment der aggregierten Loginformationen in den Regionen und Anwendungskonfigurationen eines Mandanten zu optimieren, können Sie den OCI Functions-Service verwenden.

    Mit OCI Functions können Sie Logs an den HTTPS-API-Endpunkt des SIEMs übertragen. Fügen Sie dazu einen regionalen OCI Service Connector Hub hinzu, der aus den anderen OCI-Services liest.

  • Gruppierungsfunktionen

    Als Best Practice können Sie mehrere Funktionen definieren (z.B. eine pro Umgebung). Wenn Sie mehrere Umgebungen (wie DEV, UAT, PROD) haben, können Sie separate Codezeilen für jede Funktion in einer separaten Umgebung verfolgen.

Stellen Sie

Laden Sie den Automatisierungsskriptcode von GitHub herunter, passen Sie den Code an, und stellen Sie ihn bereit.

Sie können eine in OCI Functions bereitgestellte Funktion über die folgenden Komponenten aufrufen:

  • Die Fn-Projekt-CLI.
  • Oracle Cloud Infrastructure-SDKs.
  • Signierte HTTP-Anforderungen an den Aufrufendpunkt der Funktion. Jede Funktion verfügt über einen Aufrufendpunkt.
  • Andere Oracle Cloud-Services (z.B. durch ein Ereignis im Events-Service ausgelöst) oder externe Services.
  1. Gehen Sie zu GitHub.
  2. Kopieren Sie das Repository, oder laden Sie es herunter.
  3. Um diese Architektur bereitzustellen, folgen Sie der Referenz-YAML-Datei, dem Beispiel-Hello World-Anwendungscode und dem README-Dokument.

Danksagungen

  • Autor: Dipesh Rathod
  • Beitragender: Bhanu Prakash Lohumi