In Kubernetes eine auf Microservices basierende Anwendung bereitstellen, die mit einer Autonomous Database-Instanz verbunden ist
Wenn Sie als Entwickler oder Anwendungsadministrator Cloud-native Anwendungen entwerfen und verwalten, benötigen Sie eine Infrastruktur, die einfach bereitzustellen und zu verwalten ist, und mit der Sie sich auf Ihr Design und Ihre Geschäftsziele konzentrieren können. Mit der OCI Kubernetes Engine (OKE) können Sie hochverfügbare und skalierbare Microservices-basierte Anwendungen in der Cloud bereitstellen und ausführen.
Architektur
In einer Microservices-Architektur führt jeder Microservice eine einfache Aufgabe aus und kommuniziert mit Clients oder anderen Microservices über leichte Mechanismen wie REST-API-Anforderungen.
Diese Referenzarchitektur ist für eine E-Commerce-Anwendung gedacht, die aus mehreren mehrsprachigen Microservices besteht, die als Docker-Container in einem Kubernetes-Cluster bereitgestellt werden. Die Datenpersistenz wird mit einer Oracle Autonomous Transaction Processing-Datenbank erreicht. Medien- und Imagedateien für die E-Commerce-Anwendung werden in Oracle Cloud Infrastructure Object Storage gespeichert.
Das folgende Diagramm zeigt die Architektur.
mushop-Infrastruktur-oracle.zip
Die Architektur umfasst die folgenden Komponenten:
- Region
Eine Oracle Cloud Infrastructure-Region ist ein lokalisierter geografischer Bereich, der mindestens ein Data Center enthält und Availability-Domains hostet. Regionen sind unabhängig von anderen Regionen, und große Entfernungen können sie trennen (über Länder oder sogar Kontinente).
- Availability-Domain
Availability-Domains sind eigenständige, unabhängige Data Center innerhalb einer Region. Die physischen Ressourcen in jeder Availability-Domain sind von den Ressourcen in den anderen Availability-Domains isoliert, was eine Fehlertoleranz sicherstellt. Availability-Domains haben keine gemeinsame Infrastruktur wie Stromversorgung oder Kühlung oder das interne Availability-Domainnetzwerk. Ein Fehler in einer Availability-Domain sollte sich also nicht auf die anderen Availability-Domains in der Region auswirken.
- Faultdomains
Eine Faultdomain ist eine Gruppierung aus Hardware und Infrastruktur innerhalb einer Availability-Domain. Jede Availability-Domain verfügt über drei Faultdomains mit unabhängiger Stromversorgung und Hardware. Die OCI Kubernetes Engine verarbeitet die Verteilung der Knoten im Cluster über mehrere Faultdomains hinweg. So ist Ihre containerisierte Anwendung vor physischen Serverausfällen, Systemwartungen und Stromausfällen innerhalb einer Faultdomain geschützt.
- Virtuelles Cloud-Netzwerk (VCN) und Subnetze
Ein VCN ist ein anpassbares, softwaredefiniertes Netzwerk, das Sie in einer Oracle Cloud Infrastructure-Region einrichten. 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.
- Servicegateway
Ein Servicegateway ermöglicht den Zugriff von einem VCN auf andere Services wie Oracle Cloud Infrastructure Object Storage. Der Traffic vom VCN zum Oracle-Service wird über die Oracle-Netzwerkstruktur geleitet und durchläuft nicht das Internet.
- Network Address Translation-(NAT-)Gateway
Mit einem NAT-Gateway können private Ressourcen in einem VCN auf Hosts im Internet zugreifen, ohne diese Ressourcen für eingehende Internetverbindungen freizugeben.
- Internetgateway
Ein Internetgateway ermöglicht Traffic zwischen den öffentlichen Subnetzen in einem VCN und dem öffentlichen Internet.
- Autonomous Transaction Processing
Oracle Autonomous Transaction Processing ist ein selbststeuernder, selbstsichernder, selbstreparierender Datenbankservice, der für Transaktionsverarbeitungs-Workloads optimiert ist. Sie müssen keine Hardware konfigurieren oder verwalten oder Software installieren. Mit Oracle Cloud Infrastructure können Sie die Datenbank erstellen, sichern, patchen, aktualisieren und optimieren.
- Objektspeicher
Mit OCI Object Storage können Sie auf große Mengen an strukturierten und unstrukturierten Daten eines beliebigen Inhaltstyps zugreifen, darunter Datenbankbackups, Analysedaten und umfangreiche Inhalte, wie Bilder und Videos. Sie können Daten sicher im Internet oder in der Cloud-Plattform speichern. Sie können den Speicher skalieren, ohne dass die Performance oder Servicezuverlässigkeit beeinträchtigt wird.
In dieser Architektur werden die Medienassets der Anwendung in Oracle Cloud Infrastructure Object Storage in einem Bucket der Standardspeicherklasse gespeichert.
- Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine oder OKE) ist ein vollständig verwalteter, skalierbarer und hoch verfügbarer Service, mit dem Sie Ihre Containeranwendungen in der Cloud bereitstellen können. Sie geben die Compute-Ressourcen an, die Ihre Anwendungen benötigen, und Kubernetes Engine stellt sie in Oracle Cloud Infrastructure in einem vorhandenen Mandanten bereit. OKE automatisiert mit Kubernetes das Deployment, die Skalierung und die Verwaltung containerisierter Anwendungen über Cluster von Hosts hinweg.
Das folgende Diagramm zeigt die Interaktionen zwischen den containerisierten Microservices in dieser Architektur:
mushop-infrastructure-expand-oracle.zip
Der Traffic aus dem öffentlichen Internet wird vom DNS-Service über eine Web Application Firewall (WAF) an den Load Balancer weitergeleitet, der die eingehenden Anforderungen an einen Ingress-(Nginx-)Microservice weiterleitet. Der Ingress-Microservice sendet Datenverkehr an einen Router-(Traefik-)Microservice. Je nach Art der Anforderungen leitet der Router-Microservice sie an die entsprechenden Microservices in der Anwendung weiter. Neben der Interaktion mit anderen Microservices interagieren viele der Microservices auch mit Oracle Cloud Infrastructure-Services: OCI Object Storage, OCI API Gateway, OCI Functions, OCI Email Delivery, OCI Streaming und Oracle Autonomous Database.
Empfehlungen
- 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.
Hinweis:
Der Terraform-Code zur Implementierung dieser Architektur stellt die Oracle Autonomous Transaction Processing-Datenbank im Oracle-Servicenetzwerk bereit. Wenn Sie nur einen privaten Endpunkt für die Datenbank angeben möchten, können Sie den Terraform-Code so anpassen, dass die Datenbank an ein privates Subnetz angehängt wird, wie im Architekturdiagramm dargestellt. - OCI Kubernetes Engine
In dieser Architektur verwenden die Worker-Knoten im Kubernetes-Cluster die Ausprägung VM.Standard2.1 und werden unter Oracle Linux ausgeführt. Sie können bis zu 1000 Knoten in einem Cluster erstellen.
Hinweise
Berücksichtigen Sie bei der Implementierung dieser Architektur Ihre Anforderungen für die folgenden Parameter:
- Skalierbarkeit
Sie können Ihre Anwendung horizontal skalieren, indem Sie die Anzahl der Worker-Knoten im Kubernetes-Cluster je nach Belastung aktualisieren. Ebenso können Sie die Anzahl der Worker-Knoten im Cluster reduzieren. Wenn Sie einen Service im Kubernetes-Cluster erstellen, können Sie einen Load Balancer erstellen, um Servicetraffic auf die Knoten zu verteilen, die dem Service zugewiesen sind. Diese Architektur verwendet einen Load Balancer zur Verarbeitung eingehender Anforderungen.
- Anwendungsverfügbarkeit
Faultdomains bieten Resilienz innerhalb einer einzelnen Availability-Domain. Sie können auch Instanzen oder Knoten bereitstellen, die dieselben Aufgaben in mehreren Availability-Domains ausführen. Dieses Design beseitigt einzelne Fehlerquellen durch Einführung von Redundanz. In dieser Architektur ist Oracle Cloud Infrastructure Kubernetes Engine für die Verteilung der Knoten über Faultdomains innerhalb einer Availability-Domain und die Verwaltung der Verteilung der Microservices auf die verfügbaren Knoten im Kubernetes-Cluster verantwortlich.
- Verwaltbarkeit
Alle Microservices werden mit Docker containerisiert. Diese Images werden im Oracle Cloud Infrastructure Registry-Service gespeichert. Die Bereitstellung wird mit Terraform automatisiert. Dabei werden auch andere gängige Services wie Grafana-, Prometheus- und Helm-Diagramme bereitgestellt.
Sie können andere Oracle Cloud Infrastructure-Services wie OCI API Gateway, OCI Functions und OCI Email Delivery verwenden, um die Backend-APIs zu verwalten und Abonnements für produktbezogene Newsletter oder E-Mails zu aktivieren.
- Sicherheit
OCI Kubernetes Engine ist in Oracle Cloud Infrastructure Identity and Access Management (IAM) integriert, was eine einfache Authentifizierung mit nativen Identitätsfunktionen ermöglicht. Mit IAM-Policys können Sie kontrollieren, wer auf Ihre Ressourcen zugreifen kann und welche Aktionen sie ausführen können.
Ziehen Sie die Verwendung von Oracle Cloud Infrastructure Web Application Firewall (WAF) in Betracht, um die Anwendung vor böswilligem Traffic aus dem öffentlichen Internet zu schützen.
Mit dem Oracle Cloud Infrastructure Streaming-Service können Sie Ereignisse auf Anwendungsebene streamen und aufzeichnen.
Um Ihre Kubernetes-Secrets zu schützen, können Sie sie in einem Vault speichern oder die Secrets mit Schlüsseln verschlüsseln, die Sie im Oracle Cloud Infrastructure Vault-Service verwalten. Das Kubernetes-Cluster kann über das Servicegateway des VCN privat auf den Vault, die Schlüssel und Secrets zugreifen, ohne die Zugriffsanforderungen für das öffentliche Internet freizugeben. Policys, die Sie in Oracle Cloud Infrastructure Identity and Access Management definieren, regeln den Zugriff auf den Vault. Mit dem Oracle Cloud Infrastructure Audit-Service können Sie die Verwendung Ihrer Vault-geschützten Schlüssel und Secrets überwachen und verfolgen.
Stellen Sie
Der Code, der zum Bereitstellen dieser Referenzarchitektur erforderlich ist, ist in GitHub verfügbar. 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 Anweisungen 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 dann 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 aus.
- Klicken Sie auf .
- Mit der Terraform-CLI bereitstellen:
- Gehen Sie zu GitHub.
- Laden Sie den Code herunter, oder klonen Sie ihn auf Ihren lokalen Computer.
- Folgen Sie den Anweisungen unter
deploy/complete/README.md
.
Mehr erfahren
Erfahren Sie mehr über die Bereitstellung containerisierter Microservices-basierter Anwendungen in Kubernetes-Clustern in der Cloud.
Änderungslog
In diesem Log werden nur die wesentlichen Änderungen aufgeführt:
21. April 2025 |
|
Dezember 1, 2020 | Schritte zum Bereitstellen der Architektur mit Oracle Cloud Infrastructure Resource Manager hinzugefügt. |