
Wir freuen uns, die vorläufige Version vorzustellen (NSM), ein leichtgewichtiges Service Mesh, das eine Datenebene auf NGINX Plus-Basis verwendet, um den Datenverkehr von Containern in Kubernetes-Umgebungen zu verwalten.
NSM kann kostenlos . Wir hoffen, dass Sie es in Entwicklungs- und Testumgebungen ausprobieren und freuen uns auf Ihr Feedback .
Die Einführung von Mikroservices-Methodologien ist mit Herausforderungen beim Wachstum der Bereitstellung verbunden, sowie deren Komplexität. Die Kommunikation zwischen den Diensten wird komplizierter, Debugging-Probleme werden schwieriger, und immer mehr Dienste benötigen mehr Ressourcen zur Verwaltung.
NSM löst diese Probleme und bietet Ihnen in erster Linie:
- Sicherheit, was jetzt wichtiger ist als je zuvor. Datenlecks können Unternehmen jährlich Millionen von Dollar in Form von Einnahme- und Reputationsverlust kosten. NSM sichert alle Verbindungen mit mTLS, sodass es keine sensiblen Daten gibt, die von Hackern über das Netzwerk gestohlen werden können. Die Zugriffskontrolle ermöglicht es Ihnen, Richtlinien festzulegen, wie Dienste mit anderen Diensten kommunizieren.
- Verkehrsmanagement. Bei der Bereitstellung einer neuen Version einer Anwendung möchten Sie möglicherweise zunächst den eingehenden Datenverkehr im Falle eines Fehlers begrenzen. Mit dem intelligenten Container-Datenverkehrsmanagement von NSM können Sie eine Richtlinie zur Datenverkehrsbeschränkung für neue Dienste festlegen, die den Datenverkehr im Laufe der Zeit schrittweise erhöhen wird. Weitere Funktionen wie Geschwindigkeitsbegrenzung und Circuit Breaker geben Ihnen vollständigen Zugang zur Verwaltung des Datenverkehrs aller Ihrer Dienste.
- Visualisierung. Die Verwaltung von Tausenden von Diensten kann einen Albtraum für Debugging und Visualisierung darstellen. NSM hilft, mit dieser Situation umzugehen, durch das integrierte Grafana-Dashboard, das alle verfügbaren Metriken in NGINX Plus anzeigt. Auch das integrierte Open Tracing ermöglicht eine detaillierte Nachverfolgung von Transaktionen.
- Hybride Bereitstellungen, falls Ihr Unternehmen, wie die meisten anderen, keine Infrastruktur hat, die vollständig auf Kubernetes läuft. NSM stellt sicher, dass ältere Anwendungen nicht unbeaufsichtigt bleiben. Mit dem integrierten NGINX Kubernetes Ingress Controller können ältere Dienste mit Mesh-Diensten kommunizieren und umgekehrt.
NSM bietet auch Sicherheit für Anwendungen in Null-Vertrauensumgebungen, indem es die Verschlüsselung und Authentifizierung des Container-Traffics transparent anwendet. Außerdem ermöglicht es die Überwachung und Analyse von Transaktionen, was hilft, Bereitstellungen schnell und präzise zu starten und Probleme zu beheben. Darüber hinaus wird eine detaillierte Kontrolle des Verkehrs gewährleistet, die es DevOps-Teams ermöglicht, Teile von Anwendungen bereitzustellen und zu optimieren, während Entwickler gleichzeitig die Möglichkeit erhalten, ihre verteilten Anwendungen zu erstellen und einfach zu verbinden.
Wie funktioniert das NGINX Service Mesh?
NSM besteht aus einem gemeinsamen Datenfluss für den horizontalen (Service-zu-Service) Verkehr und einem integrierten NGINX Plus Ingress Controller für den vertikalen Verkehr, verwaltet durch einen einheitlichen Control-Plane.
Der Control-Plane wurde speziell für den NGINX Plus Datenfluss entwickelt und optimiert und definiert Regeln für die Verkehrssteuerung, die auf die NGINX Plus Sidecars verteilt sind.
In NSM werden Sidecars-Proxys für jeden Dienst im Mesh eingerichtet. Sie interagieren mit den folgenden Open-Source-Lösungen:
- Grafana, die Visualisierung von Prometheus-Metriken, integriert das NSM-Dashboard, das Ihnen bei der Arbeit hilft;
- Kubernetes Ingress-Controller, zur Verwaltung des eingehenden und ausgehenden Verkehrs im Mesh;
- SPIRE, eine CA zur Verwaltung, Verteilung und Aktualisierung von Zertifikaten im Mesh;
- NATS, ein skalierbares Messaging-System, z. B. zur Aktualisierung von Routen vom Control-Plane zu den Sidecars;
- Open Tracing, verteiltes Debugging (unterstützt Zipkin und Jaeger);
- Prometheus, das Sammeln und Speichern von Metriken von den NGINX Plus Sidecars, wie z. B. Anzahl der Anfragen, Verbindungen und SSL-Handshakes.
Funktionen und Komponenten
NGINX Plus als Datenfluss umfasst Sidecar-Proxys (horizontale Verkehrssteuerung) und Ingress-Controller (vertikale Verkehrssteuerung), die den Containerverkehr zwischen den Diensten abfangen und steuern.
Zu den Funktionen gehören:
- Mutual TLS-Authentifizierung (mTLS);
- Lastverteilung;
- Ausfallsicherheit;
- Geschwindigkeitsbeschränkung;
- Circuit Breaking;
- Blue-Green- und Canary-Bereitstellungen;
- Zugangskontrolle.
Start des NGINX Service Mesh
Um NSM zu starten, benötigen Sie:
- Zugriff auf die Kubernetes-Umgebung. NGINX Service Mesh wird auf vielen Kubernetes-Plattformen unterstützt, einschließlich Amazon Elastic Container Service for Kubernetes (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), VMware vSphere und herkömmlichen Kubernetes-Clustern, die auf "Bare Metal"-Servern bereitgestellt werden;
- Tool
kubectl, installiert auf dem Rechner, von dem aus NSM installiert wird; - Zugang zu den NGINX Service Mesh Release-Paketen. Das Paket enthält NSM-Images, die für den Upload in das geschlossene Registry für Container im Kubernetes-Cluster erforderlich sind. Das Paket enthält außerdem
nginx-meshctl, das für die Bereitstellung von NSM benötigt wird.
Um NSM mit den Standardeinstellungen bereitzustellen, führen Sie den folgenden Befehl aus. Während der Bereitstellung werden Meldungen über die erfolgreiche Installation der Komponenten sowie schließlich eine Meldung ausgegeben, dass NSM in einem separaten Namespace läuft (er muss zuerst und in das Registry eingefügt werden, Anm. des Übersetzers):
$ DOCKER_REGISTRY=your-Docker-registry ; MESH_VER=0.6.0 ;
.\/nginx-meshctl deploy
--nginx-mesh-api-image "${DOCKER_REGISTRY}\/nginx-mesh-api:${MESH_VER}"
--nginx-mesh-sidecar-image "${DOCKER_REGISTRY}\/nginx-mesh-sidecar:${MESH_VER}"
--nginx-mesh-init-image "${DOCKER_REGISTRY}\/nginx-mesh-init:${MESH_VER}"
--nginx-mesh-metrics-image "${DOCKER_REGISTRY}\/nginx-mesh-metrics:${MESH_VER}"
Namespace "nginx-mesh" erstellt.
SpiffeID CRD erstellt.
Warten auf das Ausführen der Spire-Pods...fertig.
Spire bereitgestellt.
NATS-Server bereitgestellt.
Traffic-Policy-CRDs erstellt.
Mesh API bereitgestellt.
Metrics API Server bereitgestellt.
Prometheus Server nginx-mesh\/prometheus-server bereitgestellt.
Grafana nginx-mesh\/grafana bereitgestellt.
Tracing-Server nginx-mesh\/zipkin bereitgestellt.
Alle Ressourcen erstellt. Teste die Verbindung zum Service Mesh API Server...
Erfolgreich mit der NGINX Service Mesh API verbunden.
NGINX Service Mesh läuft.Um zusätzliche Parameter, einschließlich erweiterter Einstellungen, zu erhalten, führen Sie diesen Befehl aus:
$ nginx-meshctl deploy –hÜberprüfen, ob der Control Plane im Namespace nginx-mesh, ordnungsgemäß funktioniert:
$ kubectl get pods –n nginx-mesh
NAME READY STATUS RESTARTS AGE
grafana-6cc6958cd9-dccj6 1\/1 Running 0 2d19h
mesh-api-6b95576c46-8npkb 1\/1 Running 0 2d19h
nats-server-6d5c57f894-225qn 1\/1 Running 0 2d19h
prometheus-server-65c95b788b-zkt95 1\/1 Running 0 2d19h
smi-metrics-5986dfb8d5-q6gfj 1\/1 Running 0 2d19h
spire-agent-5cf87 1\/1 Running 0 2d19h
spire-agent-rr2tt 1\/1 Running 0 2d19h
spire-agent-vwjbv 1\/1 Running 0 2d19h
spire-server-0 2\/2 Running 0 2d19h
zipkin-6f7cbf5467-ns6wc 1\/1 Running 0 2d19hJe nach Bereitstellungsoptionen, die die Richtlinien für manuelles oder automatisches Injizieren festlegen, werden NGINX Sidecar-Proxys standardmäßig zu den Anwendungen hinzugefügt. Um die automatische Hinzufügung zu deaktivieren, lesen Sie
Wenn wir beispielsweise eine Anwendung bereitstellen sleep im Namensraum default, und dann das Pod überprüfen, sehen wir zwei gestartete Container, die Anwendung sleep und den zugehörigen Sidecar:
$ kubectl apply –f sleep.yaml
$ kubectl get pods –n default
NAME READY STATUS RESTARTS AGE
sleep-674f75ff4d-gxjf2 2\/2 Running 0 5h23mWir können auch die Anwendung überwachen sleep In der NGINX Plus-Konsole, führen Sie diesen Befehl aus, um auf den Sidecar von Ihrem lokalen Rechner zuzugreifen:
$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886Dann einfach einloggen im Browser. Sie können sich auch mit Prometheus verbinden, um die Anwendung zu überwachen. sleep.
Sie können separate Kubernetes-Ressourcen verwenden, um Traffic-Management-Richtlinien einzurichten, zum Beispiel Zugriffssteuerung, Geschwindigkeitsbegrenzung und Circuit Breaking. Weitere Informationen finden Sie unter
Fazit
NGINX Service Mesh steht kostenlos zum Download bereit auf . Testen Sie es in Ihren Entwicklungs- und Testumgebungen und .
Um NGINX Plus Ingress Controller auszuprobieren, aktivieren Sie für 30 Tage, oder um Ihre Anwendungsfälle zu besprechen.
Übersetzung im Auftrag von Pavel Demkovich, Ingenieur bei . Systemadministration für 15.000 ₽ pro Monat. Und als eigenständige Einheit – ein Ausbildungszentrum , Praxis und nichts als Praxis.
Quelle: habr.com
