Aktivieren Sie Oracle Cloud Infrastructure Service Mesh in Ihren Kubernetes-Anwendungen

Kunden von Oracle Cloud Infrastructure (OCI) haben sich zunehmend zu einer Microservices-Architektur entwickelt, die zusammen mit ihren Vorteilen auch neue Herausforderungen mit sich bringt. In einer Microservices-Architektur werden monolithische Anwendungen in kleinere Microservices unterteilt, die über das Netzwerk über eine API kommunizieren. Dies führt zu einem Anstieg des Netzwerkverkehrs und erhöht die Komplexität und die allgemeine Angriffsfläche in der Architektur.

Durch das Hinzufügen eines Service-Meshs zu den Microservices werden viele der mit einer Microservices-Architektur eingeführten Herausforderungen bewältigt und bietet die folgenden Vorteile:
  • Ermöglicht die Steuerung des Microservices-Trafficflusses.
  • Bietet Einblick in Ihre Anwendungen.
  • Ermöglicht die sichere Verbindung von Microservices ohne Änderungen am Anwendungscode.
Mit OCI Service Mesh können Sie eine verwaltete Service-Mesh-Architektur in Ihren Oracle Cloud Infrastructure Kubernetes Engine-(OCI Kubernetes Engine- oder OKE-)Clustern bereitstellen. Diese Referenzarchitektur enthält ein detailliertes Beispiel für eine OCI Service Mesh-Architektur, die in einem OKE-Cluster bereitgestellt wird.

Funktionen von OCI Service Mesh

Sicherheit
  • Durchsetzung von sicherheitsbezogenen Policys

    OCI Service Mesh verwendet Zugriffs-Policys zur Definition von Zugriffsregeln. Zugriffs-Policys setzen die Kommunikation zwischen Microservices durch und lassen nur validierte Anforderungen zu, die innerhalb und außerhalb der Anwendung stammen. Zugriffs-Policys werden auch verwendet, um die zulässige Kommunikation mit externen Services zu definieren.

  • Zero Trust

    OCI Service Mesh implementiert automatisch eine Zero-Trust-Sicherheitsarchitektur für alle Microservices. Daten zwischen Microservices werden verschlüsselt. Zu Beginn der Kommunikation ist eine Microservice-zu-Microservice-Identifizierung erforderlich. Die beiden Parteien müssen Zugangsdaten mit ihren Identitätsinformationen austauschen. Auf diese Weise können sich die Services gegenseitig identifizieren, um festzustellen, ob sie zur Interaktion berechtigt sind. Dies wird mit gegenseitiger TLS mit automatisierter Zertifikat- und Schlüsselrotation mit dem Oracle Cloud Infrastructure Certificates-(OCI-Zertifikate-)Service und Oracle Key Management Cloud Service zur Verwaltung von Zertifikaten und Schlüsseln implementiert.

Traffic-Management
  • Trafficverschiebung

    Mit OCI Service Mesh können Sie Canary Deployments ausführen. Wenn Sie eine neue Version Ihres Codes in der Produktion veröffentlichen, lassen Sie nur einen Teil des Traffics zu. Mit dieser Funktion können Sie schnell bereitstellen und die Anwendung am wenigsten stören. Sie können Routingregeln definieren, die für die gesamte Kommunikation zwischen Microservices innerhalb des Meshs gelten. Sie können einen Teil des Datenverkehrs an eine bestimmte Version des Service weiterleiten.

Beobachtbarkeit
  • Überwachung und Logging

    OCI Service Mesh ist einzigartig positioniert, um Telemetriedaten bereitzustellen, da die gesamte Kommunikation zwischen Microservices diese durchlaufen muss. Auf diese Weise kann das Service-Mesh Telemetriedaten wie Quelle, Ziel, Protokoll, URL, Dauer, Statuscode, Latenz, Logging und andere detaillierte Statistiken erfassen. Sie können Logginginformationen in den Oracle Cloud Infrastructure Logging-(OCI Logging-)Service exportieren. OCI Service Mesh stellt zwei Logtypen bereit: Fehlerlogs und Trafficlogs. Mit diesen Logs können Sie 404- oder 505-Probleme debuggen oder logbasierte Statistiken generieren. Metriken und Telemetriedaten können in Prometheus exportiert und mit Grafana visualisiert werden. Beide können direkt in einem OKE-Cluster bereitgestellt werden.

Architektur

Oracle Cloud Infrastructure Service Mesh (OCI Service Mesh) verwendet ein Sidecar-Modell. Diese Architektur kapselt den Code, der die Netzwerkfunktionalität implementiert, in einen Netzwerkproxy ein und verlässt sich dann auf den Traffic von und zu den Services, der in den Sidecar-Proxy umgeleitet werden soll. Es wird ein Sidecar genannt, weil an jeder Anwendung ein Proxy angebracht ist, ähnlich wie ein Sidecar, der an einem Motorrad befestigt ist. In OKE befindet sich der Anwendungscontainer neben dem Proxy-Sidecar-Container im selben Pod. Da sie sich im selben Pod befinden, verwenden sie denselben Netzwerk-Namespace und dieselbe IP-Adresse, sodass die Container über "localhost" kommunizieren können.

OCI Service Mesh umfasst die folgenden beiden Hauptkomponenten:
  • Control Plane

    Die OCI Service Mesh-Control Plane verwaltet und konfiguriert die gesamte Sammlung von Proxys, um Traffic weiterzuleiten. Es verarbeitet Weiterleitung, Integritätsprüfung, Load Balancing, Authentifizierung, Autorisierung und Aggregation von Telemetrie. Die Control Plane interagiert mit dem OCI-Zertifikatsservice und dem OCI-Schlüsselverwaltungsservice, um jedem Proxy sein Zertifikat bereitzustellen.

  • Data Plane

    Die Data Plane besteht aus der Sammlung von Sidecar-Proxies, die in der Umgebung eingesetzt werden, und ist für die Sicherheit, Netzwerkfunktionen und Beobachtbarkeit der Anwendung verantwortlich. Sie sammeln und melden auch Telemetrie über den gesamten Netzverkehr. Der Envoy-Proxy wird für die Data Plane von OCI Service Mesh verwendet.

Das folgende Diagramm veranschaulicht diese Referenzarchitektur.



oci_service_mesh_oke_arch-oracle.zip

Diese Referenzarchitektur zeigt eine Anwendung, die in einem OKE-Cluster mit drei Services bereitgestellt ist. Der Namespace, in dem die Anwendung bereitgestellt wird, wurde "meshifiziert". Ein "meshified"-Namespace gibt an, dass die im Namespace bereitgestellten Services Teil eines Service-Meshs sind, und dass jeder neue bereitgestellte Pod mit einem Stellvertreter-Proxycontainer injiziert wird. Bei der Bereitstellung jedes Pods werden Konfigurationen und Zertifikate von der OCI Service Mesh-Control Plane an jeden der Proxycontainer gesendet. Die OCI Service Mesh-Control Plane kommuniziert mit dem OCI Certificates-Service und Oracle Key Management Cloud Service, um Zertifikate für jeden Proxy abzurufen.

Ein Ingress-Gateway wird bereitgestellt, um externen Zugriff auf die Anwendung zu ermöglichen. Das Ingress-Gateway ist Teil der OCI Service-Mesh-Data Plane und außerdem ein Stellvertreterproxy, der Konfiguration und Zertifikate von der OCI Service-Mesh-Control Plane empfängt.

Der Proxycontainer ist dafür verantwortlich, Service-Discovery, Trafficverschlüsselung und Authentifizierung mit dem Zielservice auszuführen. Die Proxycontainer wenden auch Netzwerkrichtlinien an, wie z. B. die Verteilung des Datenverkehrs zwischen verschiedenen Serviceversionen und die Durchsetzung von Zugriffsrichtlinien. Das Ingress-Gateway führt dieselbe Funktion für Traffic außerhalb des Service-Mesh aus.

Prometheus und Grafana werden im OKE-Cluster in einem separaten Namespace bereitgestellt, der nicht Teil des Service-Mesh ist. Die Service-Mesh-Data Plane sendet wichtige Betriebsstatistiken wie Latenz, Fehler, Anforderungen und Telemetrie an das Prometheus-Deployment. Grafana ruft Daten aus dem Prometheus-Deployment ab, mit dem Dashboards zur Visualisierung erstellt werden können.

OCI Service Mesh ist in den OCI Logging-Service integriert, und das Logging kann aktiviert werden, wenn das Service-Mesh erstellt wird. OCI Service Mesh stellt zwei Logtypen bereit: Fehlerlogs und Trafficlogs. Diese Logs können zum Debuggen von 404 oder 505 Problemen oder zum Generieren protokollbasierter Statistiken verwendet werden.

Diese Architektur verfügt über die folgenden OCI-Services:

  • OCI Kubernetes Engine (OKE)

    Bietet ein hochverfügbares, skalierbares, produktionsfähiges Kubernetes-Cluster für die Bereitstellung Ihrer containerisierten Anwendungen in der Cloud.

  • Load Balancer

    Bietet Zugriff auf das Ingress-Gateway im OKE-Cluster. Der Ingress leitet den Traffic an angeforderte Services im OKE-Cluster weiter.

  • Certificate Authority

    Verwaltet die TLS-Zertifikate für den OCI Service-Mesh-Service.

  • Key Management

    Verwaltet die vom Certificate Authority-Service verwendeten Schlüssel.

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.

  • Sicherheitsliste

    Für jedes Subnetz können Sie Sicherheitsregeln erstellen, die Quelle, Ziel und Typ des Traffics angeben, der im Subnetz und aus dem Subnetz zugelassen werden muss.

OCI Service Mesh-Ressourcen

Bei der Konfiguration von OCI Service Mesh, das in einem OKE-Cluster bereitgestellt wird, werden mehrere Kubernetes-Ressourcen definiert, die Schlüsselkomponenten Ihrer Anwendung zugeordnet sind.

Das folgende Diagramm zeigt, wie die konfigurierten OCI-Service-Mesh-Ressourcen: Zugriffs-Policys, Ingress-Gateway, virtueller Service und virtuelles Deployment Ihren Anwendungsressourcen zugeordnet sind: K8s-Service, K8s-Service-Load Balancer, Deployments und Pods.


Beschreibung von oci_service_mesh_oke_config.png folgt
Beschreibung der Abbildung oci_service_mesh_oke_config.png

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.

  • Load-Balancer-Bandbreite

    Beim Erstellen des Load Balancers können Sie entweder eine vordefinierte Ausprägung auswählen, die eine feste Bandbreite bereitstellt, oder eine benutzerdefinierte (flexible) Ausprägung angeben, in der Sie einen Bandbreitenbereich festlegen und den Service die Bandbreite automatisch basierend auf Trafficmustern skalieren lassen. Bei beiden Verfahren können Sie die Ausprägung nach dem Erstellen des Load Balancers jederzeit ändern.

Hinweise

Beachten Sie beim Deployment dieser Referenzarchitektur die folgenden Optionen.

  • Kostenfaktor

    Für die Control Plane von OCI Service Mesh im OKE-Cluster fallen keine Gebühren an. Kunden wird die Ressourcenauslastung der Proxycontainer für die Service-Mesh-Data Plane in Rechnung gestellt. In der Praxis zahlen Kunden jedoch bereits für die Ressourcen für den Knotenpool in einem OKE-Cluster. Wenn die Nutzung der Proxycontainer die Auslastung des Knotenpools nicht um mehr als 100 Prozent erhöht, fallen keine zusätzlichen Kosten für das Hinzufügen von OCI Service Mesh zu Ihrer Microservice-Architektur an.

  • Verfügbarkeit

    Die Control Plane des OCI Service Mesh wird immer mit High Availability bereitgestellt.

Danksagungen

  • Author: Chiping Hwang
  • Contributors: Dusko Vukmanovic, Anupama Pundpal