Warum ist der APISIX Ingress Controller eine bessere Wahl als Emissary-ingress?

Xin Rong

March 17, 2023

Products

Hintergrundinformationen

Kubernetes Ingress ist ein API-Objekt, das verwendet wird, um Regeln für die Weiterleitung von externem Verkehr an interne Dienste in einem Cluster zu definieren. Ein Ingress Controller wird häufig verwendet, um die Logik der Ingress-Ressource zu implementieren und diese Verkehrsregeln zentral zu verwalten.

Ingress

In der Praxis benötigen Unternehmensnutzer oft Verkehrsmanagementfunktionen wie mTLS, Wiederholungsversuche, Rate Limiting und Authentifizierung, die die Semantik der Ingress-Ressource nicht erfüllen kann. Daher erweitern Ingress Controller-Implementierungen in der Regel Funktionen durch das Hinzufügen zusätzlicher CRDs. Im Folgenden wird ein detaillierter Vergleich der Unterschiede zwischen den Implementierungen von APISIX Ingress Controller und Emissary-Ingress gegeben.

Was ist Apache APISIX Ingress Controller

Apache APISIX Ingress Controller ist ein Open-Source-Projekt unter der ASF (Apache Software Foundation). Seine Steuerungsebene konfiguriert und liefert Ressourcen in Kubernetes, während APISIX den tatsächlichen Geschäftsverkehr verarbeitet. Um die Sicherheit zu verbessern, verwendet der gesamte Bereitstellungsprozess eine vollständig getrennte Datenebene und Steuerungsebenen-Architektur, wodurch das Risiko von Kubernetes-Cluster-Berechtigungslecks durch Angriffe auf die Datenebene effektiv vermieden wird.

apisix-ingress-controller

Was ist Emissary-Ingress

Emissary-Ingress ist ein Inkubationsprojekt der CNCF (Cloud Native Computing Foundation). Als Steuerungsebene des Envoy-Proxys ist es für die Analyse von Kubernetes-Ressourcen verantwortlich, und der gesamte Verkehr wird direkt von Envoy auf der Datenebene verarbeitet. Durch die Verpackung der Steuerungsebene und der Datenebene in einen Container ist das Ganze einfacher zu nutzen und zu implementieren.

emissary-ingress

Der Unterschied zwischen APISIX Ingress Controller und Emissary-Ingress

Neben der Unterstützung von Ingress-Ressourcen können sowohl APISIX Ingress Controller als auch Emissary-Ingress die Konfiguration über CRDs und Gateway API unterstützen, um die Einschränkungen der Ingress-Semantik zu ergänzen.

Die folgenden Abschnitte werden die Unterschiede und Vorteile zwischen den beiden aus der Perspektive der grundlegenden Funktionen, Dienstentdeckung und Skalierbarkeit analysieren.

Grundlegende Funktionen

FunktionAPISIX IngressEmissary-ingress
ProtokolleHTTP/HTTPS
gRPC
TCP
UDP
Websockets
LastausgleichRound Robin
Ring Hash
Least Connections
Maglev
AuthentifizierungExterne Authentifizierung
Basic
JWT
OAuth
OpenID
VerkehrsmanagementCircuit Breaker
Rate Limiting
Canary
Fehlerinjektion
Health Checks

Zu den gängigen Gateway-Funktionen gehören Verkehrsmanagement, Lastausgleich und Authentifizierung. Es ist jedoch zu beachten, dass Emissary-Ingress eine relativ begrenzte Unterstützung für die Authentifizierung bietet, die nur Basic Auth und External Auth-Funktionen umfasst.

Dienstentdeckung

In der Microservices-Architektur werden Anwendungen in der Regel in mehrere Microservices aufgeteilt, die zusammenarbeiten, um spezifische Geschäftslogiken zu erfüllen. Da sich die Anzahl der Microservice-Instanzen ständig ändert, ist ein Mechanismus erforderlich, der Diensten hilft, sich gegenseitig zu entdecken und zu lokalisieren.

Dienstentdeckung bezieht sich auf die Art und Weise, wie Microservices im Netzwerk lokalisiert werden, indem Informationen über die Dienstentdeckung über den Dienstnamen abgerufen werden, um zu bestimmen, an welche Instanz die Anfrage weitergeleitet wird.

Für traditionelle Microservices-Frameworks basiert die Auswahl eines Registrierungsdienstes oft auf spezifischen Geschäftsanforderungen. Die Migration einer bestehenden Dienstregistrierungs- und -entdeckungskomponente zu einem Kubernetes-basierten DNS-Dienstentdeckungsmechanismus kann jedoch bestimmte Anpassungskosten verursachen.

Andererseits, wenn das Gateway die aktuellen Dienstregistrierungs- und -entdeckungskomponenten unterstützt, sind solche Anpassungen nicht erforderlich, was zu einer besseren Unterstützung für Microservices-Frameworks führen kann.

Hier sind die Unterstützungssituationen der beiden für Dienstentdeckungskomponenten:

DienstentdeckungApache APISIX Ingress ControllerEmissary-Ingress
Kubernetes
DNS
Nacos
Eureka
Consul

In Bezug auf das Dienstentdeckungs-Ökosystem hat APISIX Ingress Controller eine stärkere Unterstützung, und Benutzer können es leicht in ihr bestehendes Microservices-Framework über den Ingress Controller integrieren.

Skalierbarkeit

Wenn die Funktionalität des Kubernetes Ingress Controllers bestimmte Anforderungen nicht erfüllt, können Benutzer seine Funktionalität durch benutzerdefinierte Entwicklung erweitern. Individuellere Anforderungen können durch die Entwicklung benutzerdefinierter Plugins oder die Änderung des bestehenden Codes erfüllt werden. Ingress Controller mit robuster Skalierbarkeit können die Entwicklung und Anpassung von Funktionen erleichtern und eine bessere Unterstützung und Lösungen für spezifische Szenarien bieten.

Emissary-Ingress

Die Erweiterbarkeit von Emissary-Ingress ist relativ gering, da es keine Erweiterung über den benutzerdefinierten Envoy Filter unterstützt. Da die Datenebene und die Steuerungsebene integriert sind, erfordert es eine benutzerdefinierte Entwicklung des gesamten Systems. Die Komplexität der benutzerdefinierten Entwicklung für die Datenebene Envoy ist hoch und stellt eine erhebliche Belastung für Entwickler dar.

Darüber hinaus benötigen Benutzer, die eine leistungsfähigere Version von Emissary-Ingress benötigen, ein Upgrade auf das kommerzielle Produkt Edge Stack von Ambassador. Einige proprietäre Funktionen erfordern Zahlungen, um Unterstützung zu erhalten.

APISIX Ingress Controller

Die Datenebene von APISIX erweitert ihre Funktionalität hauptsächlich über Plugins, die mehr als 80 Plugins out-of-the-box bereitstellen. APISIX Ingress Controller unterstützt alle von APISIX bereitgestellten Plugins, die die meisten täglichen Anwendungsfälle abdecken können.

Wenn eine Anpassung basierend auf spezifischen Geschäftsszenarien erforderlich ist, bietet APISIX mehrere Erweiterungsoptionen, aus denen Benutzer frei wählen und kombinieren können, je nach ihren Anforderungen. Die derzeit unterstützten Erweiterungsmethoden sind wie folgt:

  1. Die Entwicklung von Plugins mit der Lua-Sprache ist relativ einfach und fast ohne Leistungsverlust. Darüber hinaus können Sie das serverlose Plugin verwenden, um Lua-Code direkt zu schreiben, was schnell Geschäftsanforderungen erfüllen kann.
  2. Neben der nativen Lua-Sprache können Sie auch Plugin Runner oder WASM-Plugins zur Erweiterung verwenden, die die Entwicklung benutzerdefinierter Plugins in Programmiersprachen wie Java, Python und Go unterstützen. Dies ermöglicht es Benutzern, ihre bestehende Geschäftslogik zu nutzen und basierend auf dem Technologie-Stack oder den Entwicklungspräferenzen ihres Unternehmens auszuwählen, ohne eine neue Sprache erlernen zu müssen.

APISIX Ingress Controller unterstützt die oben genannten Erweiterungsmethoden vollständig, ohne zusätzliche Entwicklungen.

Leistung

Als Kubernetes Ingress-Verkehrsproxy-Komponente verwaltet es den gesamten eingehenden Plattformverkehr und verwaltet verschiedene Verkehrsregeln einheitlich, was höhere Anforderungen an die Leistung des Proxys stellt.

In diesem Artikel werden wir Leistungstests für APISIX Ingress Controller (APISIX: 3.1.0) und Emissary-Ingress 3.4.0 in derselben Instanz (4C 8G) durchführen.

QPS

QPS (Queries-per-second) steht für die Anzahl der Abfragen, die ein Dienst pro Sekunde verarbeiten kann. Je höher die Zahl, desto besser die Leistung.

1-ingress-qps

  • 5000 Ingress Resource QPS

5000-ingress-qps

Latenz

Antwortlatenz: Die Zeit, die der Server benötigt, um zu antworten. Je kleiner die Verzögerung, desto besser die Leistung.

latency

Das Diagramm zeigt, dass APISIX Ingress Controller bei verschiedenen Ressourcenskalen eine konsistente Leistung beibehält und eine gut ausbalancierte Leistung demonstriert.

Andererseits hat Emissary-Ingress einen erheblichen Einfluss auf QPS und Latenz, wenn es um große Ressourcenskalen und verschiedene Routing-Matches geht, wobei die Leistung mit zunehmender Ressourcenanzahl abnimmt. Daher wird die hohe Leistung von APISIX in tatsächlichen Produktionsumgebungen mit wachsendem Geschäftsvolumen immer deutlicher.

Fazit

Emissary-Ingress zeichnet sich durch Einfachheit und einfache Integration aus, ist jedoch schwieriger für benutzerdefinierte Entwicklungen. Darüber hinaus sind zusätzliche Funktionsanforderungen auf die Unterstützung durch die Plattform und deren Komponenten angewiesen.

Im Vergleich dazu hat APISIX Ingress Controller Vorteile in Bezug auf Skalierbarkeit und Integration der Dienstentdeckung, mit starker Erweiterbarkeit und einfacher Entwicklung. Darüber hinaus zeigt APISIX Ingress Controller eine außergewöhnliche Leistung, insbesondere in Szenarien, in denen das Geschäftsvolumen weiter wächst, und weist erhebliche Vorteile auf.

Share article link