Microservices in einem Kubernetes-Cluster bereitstellen

In einer Microservices-Architektur führt jeder Microservice eine einfache Aufgabe aus und kommuniziert mit Clients oder anderen Microservices über einfache Mechanismen wie REST-API-Anforderungen. Sie können jeden Microservice mit einer Programmiersprache codieren, die am besten für die von ihm ausgeführte Aufgabe geeignet ist. Microservices-basierte Anwendungen sind einfacher bereitzustellen und zu verwalten.

Architektur

Diese Referenzarchitektur zeigt Python Flask und Redis-Microservices, die als Docker-Container in einem Kubernetes-Cluster in Oracle Cloud Infrastructure bereitgestellt werden. Die Container ziehen Docker-Images aus Oracle Cloud Infrastructure Registry.

Das folgende Diagramm veranschaulicht diese Referenzarchitektur.

Beschreibung von microservices-oci.png folgt
Beschreibung der Abbildung microservices-oci.png

microservices-oci-oracle.zip

Die Architektur umfasst folgende Komponenten:

  • Region

    Eine Oracle Cloud Infrastructure-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.

  • Availability-Domains

    Availability-Domains sind eigenständige, unabhängige Data Center in einer Region. Die physischen Ressourcen in jeder Availability-Domain sind von den Ressourcen in den anderen Availability-Domains isoliert, was eine Fehlertoleranz bietet. Availability-Domains haben keine gemeinsame Infrastruktur wie Stromversorgung oder Kühlung oder das interne Availability-Domainnetzwerk. Daher ist es wahrscheinlich, dass sich ein Fehler in einer Availability-Domain auf die anderen Availability-Domains in der Region auswirkt.

  • Faultdomains

    Eine Fehlerdomain ist eine Gruppierung aus Hardware und Infrastruktur innerhalb einer Availability-Domain. Jede Availability-Domain hat drei Faultdomains mit unabhängiger Stromversorgung und Hardware. Wenn Sie Ressourcen auf mehrere Faultdomains verteilen, können Ihre Anwendungen physische Serverfehler, Systemwartung und Stromausfälle innerhalb einer Faultdomain tolerieren.

  • Virtuelles Cloud-Netzwerk (VCN) und Subnetz

    Ein VCN ist ein anpassbares, softwaredefiniertes Netzwerk, das Sie in einer Oracle Cloud Infrastructure-Region einrichten. Wie bei herkömmlichen Data Center-Netzwerken erhalten VCNs vollständige Kontrolle über Ihre Netzwerkumgebung. Ein VCN kann mehrere nicht überlappende CIDR-Blöcke haben, die Sie nach dem Erstellen des VCN ändern können. Sie können ein VCN in Subnetze segmentieren, die für eine Region oder eine Availability-Domain gelten können. Jedes Subnetz besteht aus einem fortlaufenden Adressbereich, der sich nicht mit den anderen Subnetzen im VCN überschneidet. Sie können die Größe eines Subnetzes nach der Erstellung ändern. Ein Subnetz kann öffentlich oder privat sein.

  • Container Engine for Kubernetes

    Oracle Cloud Infrastructure 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. Sie geben die für Ihre Anwendungen erforderlichen Compute-Ressourcen an, und Container Engine for Kubernetes stellt sie in Oracle Cloud Infrastructure in einem vorhandenen Mandanten bereit. Container Engine for Kubernetes verwendet Kubernetes, um das Deployment, die Skalierung und die Verwaltung containerisierter Anwendungen auf mehreren Hostclustern zu automatisieren.

  • Registrierung

    Oracle Cloud Infrastructure Registry ist eine von Oracle verwaltende Registry, mit der Sie Ihren Workflow von der Entwicklung bis zur Produktion vereinfachen können. Mit Registry können Sie Entwicklungsartefakte wie Docker-Images auf einfache Weise speichern, freigeben und verwalten. Die hochverfügbare und skalierbare Architektur von Oracle Cloud Infrastructure stellt sicher, dass Sie Ihre Anwendungen zuverlässig bereitstellen und verwalten können.

Empfehlungen

Ihre Anforderungen können sich von der hier beschriebenen Architektur unterscheiden. Verwenden Sie die folgenden Empfehlungen als Ausgangspunkt.

  • 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.

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

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

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

    Regionale Subnetze verwenden

    Der Einfachheit halber verwendet diese Architektur ein öffentliches Subnetz, um Container Engine for Kubernetes zu hosten. Sie können auch ein privates Subnetz verwenden. Verwenden Sie in diesem Fall ein NAT-Gateway, um Zugriff auf das öffentliche Internet über das Cluster zu ermöglichen.

  • Container Engine for Kubernetes

    In dieser Architektur verwenden die Worker-Knoten die Ausprägung VM.Standard2.1 und werden auf Oracle Linux ausgeführt. Zwei Worker-Knoten dienen zum Hosten von zwei verschiedenen Microservices. Sie können jedoch bis zu 1000 Knoten in jedem Cluster erstellen.

  • Registrierung

    Wir verwenden Oracle Cloud Infrastructure Registry als private Docker-Registry für den internen Gebrauch, indem wir Docker-Images übertragen und aus der Registry abrufen. Sie können es auch als öffentliche Docker Registry verwenden, sodass jeder Benutzer mit Internetzugriff und der entsprechenden URL Images aus öffentlichen Repositorys in der Registry abrufen kann.

Überlegungen

  • Skalierbarkeit

    Sie können Ihre Anwendung horizontal skalieren, indem Sie die Anzahl der Worker-Knoten im Kubernetes-Cluster je nach Last aktualisieren. Ebenso können Sie die Anzahl der Worker-Knoten im Cluster verringern. Wenn Sie einen Service im Kubernetes-Cluster erstellen, können Sie einen Load Balancer erstellen, um Servicetraffic auf die Knoten zu verteilen, die diesem Service zugewiesen sind.

  • Verfügbarkeit der Anwendung

    Faultdomains bieten die beste Resilienz innerhalb einer einzelnen Availability-Domain. Sie können auch Instanzen oder Knoten bereitstellen, die dieselben Aufgaben in mehreren Availability-Domains ausführen. Durch die Einführung von Redundanz wird ein einzelner Fehlerpunkt entfernt.

  • Verwaltungsfreundlichkeit

    Diese Architektur verwendet zwei Microservices. Eine ist ein Python-Flask-Microservice, eine einfache Webanwendung, die CRUD-Vorgänge ausführt. Der andere Microservice ist eine speicherresidente Redis-Datenbank. Der Python-Flask-Mikroservice kommuniziert mit dem Redis-Mikroservice, um die Daten abzurufen.

  • Sicherheit

    Verwenden Sie Policys, die den Zugriff auf die Oracle Cloud Infrastructure-Ressourcen in Ihrem Unternehmen und wie einschränken.

    Container Engine for Kubernetes ist in Oracle Cloud Infrastructure Identity and Access Management (IAM) integriert. IAM ermöglicht eine einfache Authentifizierung mit nativen Oracle Cloud Infrastructure-Identitätsfunktionen.

Bereitstellen

Der für das Deployment eines OKE-Clusters erforderliche Code ist in GitHub verfügbar. Dieser Code stellt die Microservices nicht bereit.

Sie können den Code mit einem einzigen Klick 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 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. Prüfen und akzeptieren Sie die Vertragsbedingungen.
    3. Wählen Sie die Region aus, in der der Stack bereitgestellt werden soll.
    4. Befolgen Sie die Prompts und Anweisungen zum Erstellen des Stacks auf dem Bildschirm.
    5. Nachdem Sie den Stack erstellt haben, klicken Sie auf Terraform-Aktionen, und wählen Sie Planen aus.
    6. 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.

    7. Wenn keine weiteren Änderungen erforderlich sind, kehren Sie zur Seite "Stackdetails" zurück, klicken Sie auf Terraform-Aktionen, und wählen Sie Anwenden.
  • Mit der Terraform-CLI bereitstellen:
    1. Gehen Sie zu GitHub.
    2. Laden Sie den Code auf Ihren lokalen Computer herunter, oder klonen Sie ihn.
    3. Gehen Sie wie in README.md beschrieben vor.

Änderungslog

In diesem Log werden wichtige Änderungen aufgeführt: