Pourquoi APISIX Ingress Controller est-il un meilleur choix par rapport à Traefik ?
November 4, 2022
Qu'est-ce que le contrôleur d'entrée Apache APISIX ?
Apache APISIX Ingress Controller est un contrôleur d'entrée Kubernetes qui utilise Apache APISIX comme plan de données.
Il prend en charge les configurations multi-règles :
- Ingress
- APISIX Ingress CRD (ressource personnalisée)
- Gateway API
Globalement, l'architecture du contrôleur d'entrée Apache APISIX sépare les plans de données et de contrôle, permettant à Apache APISIX de gérer le trafic. Par conséquent, cela améliore la sécurité globale et évite significativement les attaques contre les clusters Kubernetes dues aux attaques contre le plan de données.
Qu'est-ce que Traefik ?
Traefik est un proxy inverse open source ainsi qu'un répartiteur de charge développé par Traefik Labs.
Il prend en charge les configurations multi-règles dans Kubernetes :
- Ingress
- Traefik IngressRoute (ressource personnalisée)
- Gateway API
Traefik est un fichier binaire unifié ; ainsi, son plan de contrôle et les logiques de proxy de son plan de données sont combinés. Par conséquent, s'il y a des attaques contre Traefik ou des exploitations de vulnérabilités de sécurité exécutives à distance, les clusters Kubernetes pourraient également être attaqués.
Comparaison
Dans les sections suivantes, nous comparerons le contrôleur d'entrée APISIX avec Traefik selon les dimensions suivantes.
Protocoles pris en charge
En tant que passerelle de trafic, sa capacité principale est de gérer correctement le trafic proxy. Le contrôleur d'entrée Apache APISIX, en tant que passerelle d'entrée des clusters Kubernetes, gère principalement ces deux types de trafic :
- trafic entre le client et l'entrée
- trafic entre l'entrée et le service en amont
Cela se présente comme suit :
Client <----> Ingress <----> Service en amont
Aujourd'hui, il existe une multitude de protocoles différents. Voici un tableau simple comparant le contrôleur d'entrée APISIX avec Traefik en ce qui concerne les protocoles.
Protocole | Contrôleur d'entrée APISIX | Traefik |
---|---|---|
HTTP/HTTPS | Support | Support |
HTTP/2 | Support | Support |
HTTP/3 | Non supporté | Support |
TCP | Support | Support |
UDP | Support | Support |
WebSocket | Support | Support |
Dubbo | Support | Non supporté |
En plus de cela, le contrôleur d'entrée APISIX ou Traefik prend en charge les protocoles via un proxy HTTP/2 ou TCP, tels que gRPC, MQTT, etc., donc nous ne les avons pas listés dans le tableau ci-dessus.
Du point de vue des protocoles, le contrôleur d'entrée APISIX ou Traefik a ses propres forces. APISIX prévoit de prendre en charge HTTP/3 à l'avenir.
Extensibilité
L'extensibilité est devenue un indicateur clé dans la sélection des technologies en raison des besoins commerciaux divers. Apache Ingress et Traefik prennent tous deux en charge l'extension des fonctionnalités à leur manière. Présentons-les un par un.
Contrôleur d'entrée Apache APISIX
L'extension des fonctionnalités du contrôleur d'entrée APISIX est réalisée en implémentant des plugins personnalisés. Actuellement, il prend principalement en charge les trois méthodes suivantes pour développer des plugins :
- Développer des plugins via Lua : Cette méthode est relativement simple et n'entraîne aucun coût de performance ;
- Développer des plugins via
--plugin-runner
: Sous ce mode, les utilisateurs peuvent développer des plugins en utilisant différents langages de programmation tels que JAVA/Python/Go afin de pouvoir utiliser la logique de leurs projets actuels sans apprendre un nouveau langage de programmation ; - Développer des plugins via des modules WASM : Sous ce mode, les utilisateurs peuvent utiliser n'importe quel langage de programmation qui génère des modules WASM pour développer des plugins ;
De plus, nous pouvons également écrire directement des codes Lua via le plugin serverless pour satisfaire rapidement nos besoins commerciaux.
Bien sûr, si vous avez de l'expérience dans le développement de modules Lua, vous pouvez directement développer des modules Lua et les charger. Cependant, vous devez ajouter la configuration suivante pour que cela fonctionne :
apisix:
...
extra_lua_path: "/path/to/example/?.lua"
Veuillez vous référer à la documentation de développement de plugins Apache APISIX et Comment le contrôleur d'entrée APISIX prend en charge les plugins personnalisés pour les étapes détaillées de développement et d'utilisation des plugins.
Traefik
Traefik fournit également des mécanismes de plugins pour étendre ses fonctionnalités. Cependant, comme Traefik est développé en Go, ses plugins doivent également être développés en Go.
Vous pouvez référencer votre plugin développé en ajoutant le contenu suivant à la configuration de Traefik.
experimental:
localPlugins:
example:
moduleName: github.com/traefik/pluginproviderdemo
À noter, le nom du plugin doit être le même que le nom du module.
En général, le contrôleur d'entrée APISIX prend en charge plusieurs méthodes d'extension, et les utilisateurs peuvent choisir la meilleure méthode selon la situation réelle. De plus, il permet aux utilisateurs de sélectionner leurs outils de développement préférés et les aide à s'intégrer plus facilement à leurs lignes commerciales actuelles. D'autre part, Traefik ne peut utiliser que Golang pour le développement.
Écosystème
Lors de la sélection des technologies, nous considérons principalement le protocole utilisé dans le projet, la propriété du projet et comment nous pouvons intégrer le contrôleur à notre infrastructure actuelle.
Aspect de comparaison | Contrôleur d'entrée APISIX | Traefik |
---|---|---|
Propriété | Apache Software Foundation(ASF) | Traefik Labs |
Protocole | Apache 2.0 | MIT |
Date de création | Juin 2019 | Août 2015 |
consul | Support | Support |
nacos | Support | Non supporté |
Eureka | Support | Non supporté |
etcd | Support | Support |
zookeeper | Support | Support |
DNS | Support | Non supporté |
La comparaison ci-dessus contient des éléments des plans de contrôle et de données. De plus, ces deux projets travaillent activement et s'intègrent avec d'autres projets de l'écosystème, tels que Rancher, KubeSphere, etc.
De ce point de vue, par rapport à Traefik, APISIX a une meilleure capacité à s'intégrer avec les composants de base.
Vous pouvez peser le pour et le contre des composants de base que vous utilisez lors de la sélection des technologies.
Retour des utilisateurs (Cas d'utilisation)
Horizon robotics a migré de Traefik à Apache APISIX, en considérant principalement les aspects suivants :
- La configuration ajoutée via Annotation ne pouvait pas être réutilisée facilement.
- Le comportement par défaut de Traefik diffère de NGINX, ce qui déroute les utilisateurs lors de l'utilisation.
Après qu'Horizon ait basculé vers le contrôleur d'entrée Apache APISIX, grâce à l'écosystème riche d'extensions du contrôleur d'entrée APISIX, la plupart des besoins peuvent être satisfaits par les plugins internes. De plus, les utilisateurs peuvent directement définir la configuration des plugins via la ressource ApisixRoute du contrôleur d'entrée APISIX, ce qui est très simple. En outre, les utilisateurs peuvent également configurer le module de configuration du plugin via ApisixPluginConfig, et il peut être référencé dans d'autres ressources ApisixRoute.
Le contrôleur d'entrée APISIX a d'excellentes performances de plan de données et peut gérer efficacement l'augmentation du trafic sans goulot d'étranglement de performance.
Outre Horizon, des entreprises comme igetcool et gwwisdom utilisent également le contrôleur d'entrée APISIX pour remplacer Traefik. Veuillez vous référer aux Cas d'utilisation pour plus de cas d'utilisation clients.
De plus, Apache APISIX a une communauté très active, et vous pouvez obtenir des réponses et des solutions rapides sur des canaux comme Github, Slack, etc.
Conclusion
Cet article compare le contrôleur d'entrée Apache APISIX avec Traefik en ce qui concerne les protocoles, l'extensibilité et l'écosystème.
Apache Ingress a certains avantages dans les domaines de l'extensibilité et de l'intégration de l'écosystème. Les utilisateurs peuvent étendre les fonctionnalités du contrôleur d'entrée APISIX et s'intégrer plus efficacement avec certains composants de base.
Nous espérons que cet article vous donnera quelques indications lors du choix de votre contrôleur d'entrée Kubernetes.