Ein API-Gateway akzeptiert API-Anfragen von einem Client, verarbeitet sie basierend auf definierten Richtlinien, leitet sie an die entsprechenden Dienste weiter und kombiniert die Antworten für ein vereinfachtes Benutzererlebnis. Normalerweise verarbeitet es eine Anfrage, indem es mehrere Mikrodienste aufruft und die Ergebnisse aggregiert. Es kann auch zwischen Protokollen in Legacy-Bereitstellungen übersetzen.
Ein API-Gateway akzeptiert API-Anfragen von einem Client, verarbeitet sie basierend auf definierten Richtlinien, leitet sie an die entsprechenden Dienste weiter und kombiniert die Antworten für ein vereinfachtes Benutzererlebnis. Normalerweise verarbeitet es eine Anfrage, indem es mehrere Mikrodienste aufruft und die Ergebnisse aggregiert. Es kann auch zwischen Protokollen in Legacy-Bereitstellungen übersetzen.
API-Gateways implementieren üblicherweise folgende Funktionen:
Für zusätzliche Sicherheit auf App- und API-Ebene können API-Gateways mit einer Web Application Firewall (WAF) und einem Denial-of-Service-Schutz (DoS) erweitert werden.
Der Einsatz eines API-Gateways für die App-Bereitstellung kann hilfreich sein:
Für auf Microservices basierende Anwendungen fungiert ein API-Gateway als einziger Einstiegspunkt in das System. Es sitzt vor den Microservices und vereinfacht sowohl die Client-Implementierungen als auch die Microservices-App, indem es die Komplexität einer App von ihren Clients entkoppelt.
In einer Microservices-Architektur ist das API-Gateway für die Anforderungsweiterleitung, -zusammenstellung und -durchsetzung verantwortlich. Einige Anfragen werden von ihm einfach durch Weiterleitung an den entsprechenden Backend-Dienst bearbeitet. Andere werden von ihm durch Aufrufen mehrerer Backend-Dienste und Zusammenfassen der Ergebnisse bearbeitet.
Ein API-Gateway könnte andere Funktionen für Mikrodienste bereitstellen, wie etwa Authentifizierung, Autorisierung, Überwachung, Lastausgleich und Antwortverarbeitung. Dadurch wird die Implementierung nicht-funktionaler Anforderungen auf die Infrastrukturebene verlagert und Entwicklern geholfen, sich auf die Kerngeschäftslogik zu konzentrieren, wodurch App-Releases beschleunigt werden.
Erfahren Sie in unserem Blog mehr über das Erstellen von Microservices mithilfe eines API-Gateways .
Container stellen die effizienteste Möglichkeit zum Ausführen von Microservices dar und Kubernetes ist der De-facto-Standard für die Bereitstellung und Verwaltung containerisierter Anwendungen und Workloads.
Abhängig von der Systemarchitektur und den Anforderungen an die App-Bereitstellung kann ein API-Gateway vor dem Kubernetes-Cluster als Load Balancer (Multi-Cluster-Ebene), an dessen Rand als Ingress-Controller (Cluster-Ebene) oder innerhalb des Clusters als Service Mesh (Service-Ebene) eingesetzt werden.
Für API-Gateway-Bereitstellungen am Edge und innerhalb des Kubernetes-Clusters empfiehlt es sich, ein Kubernetes-natives Tool als API-Gateway zu verwenden. Solche Tools sind eng in die Kubernetes-API integriert, unterstützen YAML und können über die standardmäßige Kubernetes-CLI konfiguriert werden; Beispiele hierfür sind NGINX Ingress Controller und NGINX Service Mesh .
Erfahren Sie mehr über API-Gateways und Kubernetes in API Gateway vs. Ingress-Controller vs. Service Mesh auf unserem Blog.
Ingress-Gateways und Ingress-Controller sind Tools, die das Ingress-Objekt , einen Teil der Kubernetes Ingress-API, implementieren, um in Kubernetes ausgeführte Anwendungen externen Clients zugänglich zu machen. Sie verwalten die Kommunikation zwischen Benutzern und Anwendungen (Benutzer-zu-Dienst- oder Nord-Süd-Konnektivität). Die Möglichkeiten des Ingress-Objekts selbst sind jedoch sehr eingeschränkt. Beispielsweise wird die Definition der damit verbundenen Sicherheitsrichtlinien nicht unterstützt. Daher erstellen viele Anbieter benutzerdefinierte Ressourcendefinitionen (CRDs), um die Funktionen ihres Ingress-Controllers zu erweitern und den sich entwickelnden Bedürfnissen und Anforderungen der Kunden gerecht zu werden, einschließlich der Verwendung des Ingress-Controllers als API-Gateway.
Beispielsweise kann NGINX Ingress Controller mit seinen benutzerdefinierten Ressourcen VirtualServer und VirtualServerRoute , TransportServer und Policy als voll funktionsfähiges API-Gateway am Rand eines Kubernetes-Clusters verwendet werden.
Obwohl die Namen ähnlich sind, ist ein API-Gateway nicht dasselbe wie die Kubernetes Gateway API . Die Kubernetes Gateway API ist ein Open-Source-Projekt, das von der Kubernetes-Community verwaltet wird, um die Servicevernetzung in Kubernetes zu verbessern und zu standardisieren. Die Gateway-API-Spezifikation wurde aus der Kubernetes Ingress API entwickelt, um verschiedene Herausforderungen im Zusammenhang mit der Bereitstellung von Ingress-Ressourcen für die Bereitstellung von Kubernetes-Apps in der Produktion zu lösen. Dazu gehört die Möglichkeit, feinkörnige Richtlinien für die Anforderungsverarbeitung zu definieren und die Kontrolle über die Konfiguration an mehrere Teams und Rollen zu delegieren.
Auf der Gateway-API-Spezifikation basierende Tools wie z. B. NGINX Kubernetes Gateway können als API-Gateways für Anwendungsfälle verwendet werden, die das Weiterleiten von Anforderungen an bestimmte Mikrodienste, das Implementieren von Verkehrsrichtlinien und das Aktivieren von Canary- und Blue-Green-Bereitstellungen umfassen.
Sehen Sie sich dieses kurze Video an, in dem Jenn Gile von NGINX den Unterschied zwischen einem API-Gateway und der Kubernetes Gateway API erklärt.
Ein Service Mesh ist eine Infrastrukturschicht, die die Kommunikation zwischen Diensten in einem Kubernetes-Cluster steuert (Dienst-zu-Dienst- oder Ost-West-Konnektivität). Das Service Mesh bietet Kernfunktionen für in Kubernetes ausgeführte Dienste, darunter Lastausgleich, Authentifizierung, Autorisierung, Zugriffskontrolle, Verschlüsselung, Beobachtbarkeit und erweiterte Muster zur Verwaltung der Konnektivität (Circuit Breaker, A/B-Tests sowie Blue-Green- und Canary-Bereitstellungen), um eine schnelle, zuverlässige und sichere Kommunikation zu gewährleisten.
Näher an den Apps und Diensten bereitgestellt, kann ein Service Mesh als leichtes, aber dennoch umfassendes, verteiltes API-Gateway für die Service-zu-Service-Kommunikation in Kubernetes verwendet werden.
Weitere Informationen zum Service Mesh finden Sie im Abschnitt „So wählen Sie ein Service Mesh aus“ in unserem Blog.
Die Begriffe API-Gateway und API-Management werden häufig – allerdings fälschlicherweise – zur Beschreibung derselben Funktionalität verwendet.
Ein API-Gateway ist ein Datenebenen- Einstiegspunkt für API-Aufrufe, die Clientanforderungen an Zielanwendungen und -dienste darstellen. Die Anforderungsverarbeitung erfolgt dabei normalerweise auf Grundlage definierter Richtlinien, darunter Authentifizierung, Autorisierung, Zugriffskontrolle, SSL/TLS-Offloading, Routing und Lastausgleich.
API-Management ist der Prozess der Bereitstellung, Dokumentation, Bedienung und Überwachung einzelner APIs. Dies wird normalerweise mithilfe einer Management-Plane-Software (z. B. einem API-Manager) erreicht, die Richtlinien für API-Gateways und Entwicklerportale definiert und anwendet.
Abhängig von geschäftlichen und funktionalen Anforderungen kann ein API-Gateway als eigenständige Komponente in der Datenebene oder als Teil einer integrierten API-Verwaltungslösung wie dem F5 NGINX Management Suite API Connectivity Manager bereitgestellt werden.
Bei der Entscheidung über die Anforderungen für Ihr API-Gateway müssen Sie mehrere wichtige Faktoren berücksichtigen:
NGINX bietet je nach Anwendungsfall und Bereitstellungsmuster mehrere Optionen für die Bereitstellung und den Betrieb eines API-Gateways.
Kubernetes-native Tools:
Fordern Sie zunächst Ihre kostenlose 30-Tage-Testversion von NGINX Ingress Controller mit NGINX App Protect WAF und DoS an und laden Sie das immer kostenlose NGINX Service Mesh herunter .
Universelle Werkzeuge:
Um mehr über die Verwendung von NGINX Plus als API-Gateway zu erfahren, fordern Sie Ihre kostenlose 30-Tage-Testversion an und lesen Sie den Artikel „Bereitstellen von NGINX als API-Gateway“ in unserem Blog. Um die NGINX Management Suite auszuprobieren, fordern Sie Ihre kostenlose 30-Tage-Testversion an.