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 der Abbildung microservices-oci.png
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:
- Klicken Sie auf
Wenn Sie noch nicht angemeldet sind, geben Sie den Mandanten und die Benutzerzugangsdaten ein.
- Prüfen und akzeptieren Sie die Vertragsbedingungen.
- Wählen Sie die Region aus, in der der Stack bereitgestellt werden soll.
- Befolgen Sie die Prompts und Anweisungen zum Erstellen des Stacks auf dem Bildschirm.
- Nachdem Sie den Stack erstellt haben, klicken Sie 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 Planen 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.
- Klicken Sie auf
- Mit der Terraform-CLI bereitstellen:
- Gehen Sie zu GitHub.
- Laden Sie den Code auf Ihren lokalen Computer herunter, oder klonen Sie ihn.
- Gehen Sie wie in
README.md
beschrieben vor.
Mehr anzeigen
Erfahren Sie mehr über das Deployment containerisierter Anwendungen auf Kubernetes in der Cloud.
- Überblick über Registry
- Überblick über Container Engine for Kubernetes
- Erfahren Sie mehr über die Architektur von Microservices-basierten Anwendungen in Oracle Cloud
- Erfahren Sie mehr über das Entwerfen einer Kubernetes-Topologie für containerisierte Anwendungen in der Cloud
- Stellen Sie eine Microservice-basierte Anwendung in Kubernetes bereit, die mit einer autonomen Datenbank verbunden ist
- Bereitstellung von Microservices mit einer konvergierten Datenbank und Helidon
-
OCI-Cache mit Redis-Serviceseite
OCI Cache mit Redis: Der blitzschnelle Weg zur Verbesserung Ihrer Anwendungsperformance
Änderungslog
In diesem Log werden wichtige Änderungen aufgeführt:
22. November 2023 |
|
September 15, 2022 | Klargestellt, dass das bereitstellbare Terraform ein OKE-Cluster enthält. Die Microservices werden nicht bereitgestellt. |
10. November 2021 |
|
5. Januar 2021 | Anweisungen zum Deployment der Architektur mit Oracle Cloud Infrastructure Resource Manager hinzugefügt. |
September 9, 2020 | Abschnitt "Bereitstellen" hinzugefügt. |