Warum ist der APISIX Ingress Controller eine bessere Wahl im Vergleich zu Traefik?

Jintao Zhang

Jintao Zhang

November 4, 2022

Products

Was ist der Apache APISIX Ingress Controller?

Apache APISIX Ingress Controller ist ein Kubernetes Ingress Controller, der Apache APISIX als Datenebene verwendet.

Er unterstützt Multi-Regel-Konfigurationen:

  • Ingress
  • APISIX Ingress CRD (benutzerdefinierte Ressource)
  • Gateway API

Insgesamt trennt die Architektur des Apache APISIX Ingress Controllers die Daten- und Steuerungsebenen und lässt Apache APISIX den Datenverkehr handhaben. Dadurch wird die allgemeine Sicherheit verbessert und Angriffe auf Kubernetes-Cluster aufgrund von Angriffen auf die Datenebene erheblich vermieden.

APISIX Ingress Controller Architektur

Was ist Traefik?

Traefik ist ein Open-Source-Reverse-Proxy sowie ein Lastenausgleich, der von Traefik Labs entwickelt wurde.

Es unterstützt Multi-Regel-Konfigurationen in Kubernetes:

  • Ingress
  • Traefik IngressRoute (benutzerdefinierte Ressource)
  • Gateway API

Traefik ist eine einheitliche Binärdatei; daher sind seine Steuerungsebene und die Proxy-Logik seiner Datenebene kombiniert. Wenn es also Angriffe auf Traefik oder Ausnutzungen von Sicherheitslücken bei der Remote-Ausführung gibt, könnten auch Kubernetes-Cluster angegriffen werden.

Traefik Architektur

Vergleich

In den folgenden Abschnitten werden wir den APISIX Ingress Controller mit Traefik aus den folgenden Dimensionen vergleichen.

Unterstützte Protokolle

Als Verkehrsgateway besteht seine Kernfähigkeit darin, den Proxy-Datenverkehr korrekt zu handhaben. Der Apache APISIX Ingress Controller, als Ingress-Gateway von Kubernetes-Clustern, handhabt hauptsächlich diese beiden Arten von Datenverkehr:

  • Datenverkehr zwischen Client und Ingress
  • Datenverkehr zwischen Ingress und Upstream-Service

Es zeigt sich wie folgt:

Client  <---->  Ingress  <---->  Upstream Service

Heutzutage gibt es eine Vielzahl von verschiedenen Protokollen. Hier ist eine einfache Tabelle, die den APISIX Ingress Controller mit Traefik in Bezug auf Protokolle vergleicht.

ProtokollAPISIX Ingress ControllerTraefik
HTTP/HTTPSUnterstütztUnterstützt
HTTP/2UnterstütztUnterstützt
HTTP/3Nicht unterstütztUnterstützt
TCPUnterstütztUnterstützt
UDPUnterstütztUnterstützt
WebSocketUnterstütztUnterstützt
DubboUnterstütztNicht unterstützt

Darüber hinaus unterstützen sowohl APISIX Ingress Controller als auch Traefik Protokolle über HTTP/2-Proxy oder TCP-Proxy wie gRPC, MQTT usw., daher haben wir sie nicht in der obigen Tabelle aufgeführt.

Aus Protokollsicht haben sowohl APISIX Ingress Controller als auch Traefik ihre eigenen Stärken. APISIX plant, HTTP/3 in Zukunft zu unterstützen.

Erweiterbarkeit

Die Erweiterbarkeit ist aufgrund vielfältiger Geschäftsanforderungen zu einem Kernindikator bei der Technologieauswahl geworden. Sowohl Apache Ingress als auch Traefik unterstützen auf ihre eigene Weise die Erweiterung von Funktionen. Lassen Sie uns diese einzeln vorstellen.

Apache APISIX Ingress Controller

Die Funktionserweiterung des APISIX Ingress Controllers wird durch die Implementierung von benutzerdefinierten Plugins erreicht. Derzeit unterstützt es hauptsächlich die folgenden drei Möglichkeiten, Plugins zu entwickeln:

  • Entwicklung von Plugins über Lua: Diese Methode ist relativ einfach und hat keine Leistungseinbußen;
  • Entwicklung von Plugins über --plugin-runner: In diesem Modus können Benutzer Plugins mit verschiedenen Programmiersprachen wie JAVA/Python/Go entwickeln, sodass sie die Logik ihrer aktuellen Projekte nutzen können, ohne eine neue Programmiersprache zu lernen;
  • Entwicklung von Plugins über WASM-Module: In diesem Modus können Benutzer jede Programmiersprache verwenden, die WASM-Module erstellt, um Plugins zu entwickeln;

Darüber hinaus können wir auch direkt Lua-Codes über das serverless Plugin schreiben, um unsere Geschäftsanforderungen schnell zu erfüllen.

Natürlich, wenn Sie Erfahrung in der Entwicklung von Lua-Modulen haben, können Sie direkt Lua-Module entwickeln und laden. Sie müssen jedoch die folgende Konfiguration hinzufügen, damit es funktioniert:

apisix:
    ...
    extra_lua_path: "/path/to/example/?.lua"

Bitte lesen Sie die Apache APISIX Plugin-Entwicklungsdokumentation und Wie unterstützt APISIX Ingress Controller benutzerdefinierte Plugins für die detaillierten Schritte und Verwendungen der Plugin-Entwicklung.

Traefik

Traefik bietet ebenfalls Plugin-Mechanismen zur Erweiterung seiner Funktionen. Da Traefik jedoch in Go entwickelt wurde, müssen seine Plugins ebenfalls in Go entwickelt werden.

Sie können Ihr entwickeltes Plugin referenzieren, indem Sie die folgenden Inhalte zur Traefik-Konfiguration hinzufügen.

experimental:
  localPlugins:
    example:
      moduleName: github.com/traefik/pluginproviderdemo

Zu beachten ist, dass der Plugin-Name mit dem Modulnamen übereinstimmen muss.

Im Allgemeinen unterstützt der APISIX Ingress Controller mehrere Erweiterungsmethoden, und Benutzer können je nach Situation die beste Methode wählen. Darüber hinaus können Benutzer ihre bevorzugten Entwicklungswerkzeuge auswählen und sich so besser in ihre aktuellen Geschäftslinien integrieren. Andererseits kann Traefik nur mit Golang entwickelt werden.

Ökosystem

Bei der Technologieauswahl berücksichtigen wir hauptsächlich das im Projekt verwendete Protokoll, die Eigentümerschaft des Projekts und wie wir den Controller in unsere aktuelle Infrastruktur integrieren können.

VergleichsaspektAPISIX Ingress ControllerTraefik
EigentümerschaftApache Software Foundation(ASF)Traefik Labs
ProtokollApache 2.0MIT
GeburtszeitJuni 2019August 2015
consulUnterstütztUnterstützt
nacosUnterstütztNicht unterstützt
EurekaUnterstütztNicht unterstützt
etcdUnterstütztUnterstützt
zookeeperUnterstütztUnterstützt
DNSUnterstütztNicht unterstützt

Der obige Vergleich enthält Inhalte sowohl von der Steuerungs- als auch von der Datenebene. Darüber hinaus arbeiten und integrieren sich diese beiden Projekte aktiv mit anderen Projekten im Ökosystem, wie z.B. Rancher, KubeSphere usw.

Aus dieser Perspektive hat APISIX im Vergleich zu Traefik eine bessere Fähigkeit, sich mit Basiskomponenten zu integrieren.

Sie können die Vor- und Nachteile der Basiskomponenten, die Sie verwenden, bei der Technologieauswahl abwägen.

Benutzerfeedback (Anwendungsfälle)

Horizon Robotics migrierte von Traefik zu Apache APISIX, hauptsächlich aufgrund der folgenden Aspekte:

  • Die über Annotation hinzugefügte Konfiguration konnte nicht einfach wiederverwendet werden.
  • Das Standardverhalten von Traefik unterscheidet sich von NGINX, was Benutzer bei der Verwendung verwirrt.

Nachdem Horizon zu Apache APISIX Ingress Controller gewechselt hat, konnten dank des reichhaltigen Erweiterungsökosystems von APISIX Ingress Controller die meisten Anforderungen durch interne Plugins erfüllt werden. Darüber hinaus können Benutzer die Konfiguration von Plugins direkt über die ApisixRoute-Ressource des APISIX Ingress Controllers definieren, was sehr einfach ist. Außerdem können Benutzer die Konfiguration des Plugin-Moduls über ApisixPluginConfig konfigurieren, und sie kann in anderen ApisixRoute-Ressourcen referenziert werden.

Horizon Architekturdiagramm

Der APISIX Ingress Controller hat eine hervorragende Leistung der Datenebene und kann den zunehmenden Datenverkehr effizient handhaben, ohne auf Leistungsengpässe zu stoßen.

Neben Horizon verwenden auch Unternehmen wie igetcool und gwwisdom den APISIX Ingress Controller, um Traefik zu ersetzen. Bitte lesen Sie Anwendungsfälle für weitere Kundenanwendungsfälle.

Darüber hinaus hat Apache APISIX eine sehr aktive Community, und Sie können in Kanälen wie Github, Slack usw. schnelle Antworten und Lösungen erhalten.

Fazit

Dieser Artikel vergleicht den Apache APISIX Ingress Controller mit Traefik in Bezug auf Protokolle, Erweiterbarkeit und Ökosystem.

Apache Ingress hat bestimmte Vorteile in den Bereichen Erweiterbarkeit und Ökosystemintegration. Benutzer können die Funktionen des APISIX Ingress Controllers erweitern und sich effizienter mit einigen Basiskomponenten integrieren.

Wir hoffen, dass dieser Artikel Ihnen einige Hinweise gibt, wenn Sie Ihren Kubernetes Ingress Controller auswählen.

Tags: