¿Por qué APISIX Ingress Controller es una mejor opción en comparación con Traefik?
November 4, 2022
¿Qué es Apache APISIX Ingress Controller?
Apache APISIX Ingress Controller es un controlador de Ingress para Kubernetes que utiliza Apache APISIX como su plano de datos.
Soporta configuraciones de múltiples reglas:
- Ingress
- APISIX Ingress CRD (recurso personalizado)
- Gateway API
En general, la arquitectura de Apache APISIX Ingress Controller separa los planos de datos y control, permitiendo que Apache APISIX maneje el tráfico. Por lo tanto, mejora la seguridad general y evita significativamente los ataques contra los clústeres de Kubernetes debido a ataques contra el plano de datos.
¿Qué es Traefik?
Traefik es un proxy inverso de código abierto y un balanceador de carga desarrollado por Traefik Labs.
Soporta configuraciones de múltiples reglas en Kubernetes:
- Ingress
- Traefik IngressRoute (recurso personalizado)
- Gateway API
Traefik es un archivo binario unificado; por lo tanto, su plano de control y las lógicas de proxy de su plano de datos están combinados. Por lo tanto, si hay ataques contra Traefik o explotaciones de vulnerabilidades de seguridad de ejecución remota, los clústeres de Kubernetes también podrían ser atacados.
Comparación
En las siguientes secciones, compararemos APISIX Ingress Controller con Traefik desde las siguientes dimensiones.
Protocolos Soportados
Como puerta de enlace de tráfico, su capacidad central es manejar correctamente el tráfico proxy. Apache APISIX Ingress Controller, como puerta de enlace de Ingress para clústeres de Kubernetes, maneja principalmente estos dos tipos de tráfico:
- tráfico entre el Cliente y el Ingress
- tráfico entre el Ingress y el Servicio Upstream
Se muestra de la siguiente manera:
Cliente <----> Ingress <----> Servicio Upstream
Hoy en día, existen muchos protocolos diferentes. Aquí presentamos una tabla simple que compara APISIX Ingress Controller con Traefik en cuanto a protocolos.
Protocolo | APISIX Ingress Controller | Traefik |
---|---|---|
HTTP/HTTPS | Soporta | Soporta |
HTTP/2 | Soporta | Soporta |
HTTP/3 | No Soporta | Soporta |
TCP | Soporta | Soporta |
UDP | Soporta | Soporta |
WebSocket | Soporta | Soporta |
Dubbo | Soporta | No Soporta |
Además, tanto APISIX Ingress Controller como Traefik soportan protocolos a través de proxy HTTP/2 o proxy TCP como gRPC, MQTT, etc., por lo que no los incluimos en la tabla anterior.
Desde la perspectiva de los protocolos, tanto APISIX Ingress Controller como Traefik tienen sus propias fortalezas. APISIX tiene planes de soportar HTTP/3 en el futuro.
Extensibilidad
La extensibilidad se ha convertido en un indicador central en la selección de tecnología debido a las diversas necesidades comerciales. Tanto Apache Ingress como Traefik soportan extensiones de características de diferentes maneras. Vamos a presentarlas una por una.
Apache APISIX Ingress Controller
La extensión de características de APISIX Ingress Controller se logra implementando plugins personalizados. Actualmente, soporta principalmente las siguientes tres formas de desarrollar plugins:
- Desarrollar plugins mediante Lua: Esta forma es relativamente simple y no tiene ningún costo de rendimiento;
- Desarrollar plugins mediante
--plugin-runner
: Bajo este modo, los usuarios pueden desarrollar plugins utilizando diferentes lenguajes de programación como JAVA/Python/Go, lo que les permite aprovechar la lógica de sus proyectos actuales sin necesidad de aprender un nuevo lenguaje de programación; - Desarrollar plugins mediante módulos WASM: Bajo este modo, los usuarios pueden usar cualquier lenguaje de programación que construya módulos WASM para desarrollar plugins;
Además, también podemos escribir directamente códigos Lua a través del plugin serverless para satisfacer rápidamente nuestras necesidades comerciales.
Por supuesto, si tienes experiencia en el desarrollo de módulos Lua, puedes desarrollar directamente módulos Lua y cargarlos. Sin embargo, necesitas agregar la siguiente configuración para que funcione:
apisix:
...
extra_lua_path: "/ruta/al/ejemplo/?.lua"
Consulta la documentación de desarrollo de plugins de Apache APISIX y Cómo APISIX Ingress Controller soporta plugins personalizados para los pasos detallados de desarrollo y usos de plugins.
Traefik
Traefik también proporciona mecanismos de plugins para extender sus características. Sin embargo, debido a que Traefik está desarrollado en Go, sus plugins también deben desarrollarse en Go.
Puedes referenciar tu plugin desarrollado agregando el siguiente contenido a la configuración de Traefik.
experimental:
localPlugins:
ejemplo:
moduleName: github.com/traefik/pluginproviderdemo
Ten en cuenta que el nombre del plugin debe ser el mismo que el nombre del módulo.
En general, APISIX Ingress Controller soporta múltiples métodos de extensión, y los usuarios pueden elegir el mejor método según la situación real. Además, permite a los usuarios seleccionar sus herramientas de desarrollo preferidas y les ayuda a integrarse más fácilmente con sus líneas de negocio actuales. Por otro lado, Traefik solo puede usar Golang para desarrollar.
Ecosistema
Al realizar la selección de tecnología, consideraremos principalmente el protocolo utilizado en el proyecto, la propiedad del proyecto y cómo podemos integrar el controlador con nuestra infraestructura actual.
Aspecto de Comparación | APISIX Ingress Controller | Traefik |
---|---|---|
Propiedad | Apache Software Foundation(ASF) | Traefik Labs |
Protocolo | Apache 2.0 | MIT |
Tiempo de Nacimiento | Junio 2019 | Agosto 2015 |
consul | Soporta | Soporta |
nacos | Soporta | No Soporta |
Eureka | Soporta | No Soporta |
etcd | Soporta | Soporta |
zookeeper | Soporta | Soporta |
DNS | Soporta | No Soporta |
La comparación anterior incluye contenidos tanto del plano de control como del plano de datos. Además, estos dos proyectos trabajan activamente e integran con otros proyectos en el ecosistema, como Rancher, KubeSphere, etc.
Desde esta perspectiva, en comparación con Traefik, APISIX tiene una mejor capacidad para integrarse con componentes básicos.
Puedes sopesar los pros y los contras de los componentes básicos que estás utilizando al realizar selecciones de tecnología.
Comentarios de Usuarios (Casos de Uso)
Horizon robotics migró de Traefik a Apache APISIX, considerando principalmente los siguientes aspectos:
- La configuración agregada mediante Annotation no podía reutilizarse fácilmente.
- El comportamiento predeterminado de Traefik difiere de NGINX, lo que confunde a los usuarios durante el uso.
Después de que Horizon cambió a Apache APISIX Ingress Controller, gracias al rico ecosistema de extensiones de APISIX Ingress Controller, la mayoría de los requisitos podían lograrse mediante los plugins internos. Además, los usuarios podían definir directamente la configuración de los plugins a través del recurso ApisixRoute de APISIX Ingress Controller, lo cual es muy sencillo. Además, los usuarios también pueden configurar el módulo de configuración del plugin mediante ApisixPluginConfig, y puede ser referenciado en otros recursos ApisixRoute.
APISIX Ingress Controller tiene un excelente rendimiento en el plano de datos y puede manejar eficientemente el aumento del tráfico sin un cuello de botella de rendimiento.
Además de Horizon, empresas como igetcool y gwwisdom también utilizan APISIX Ingress Controller para reemplazar Traefik. Consulta Casos de Uso para más casos de uso de clientes.
Además, Apache APISIX tiene una comunidad altamente activa, y puedes obtener respuestas y soluciones rápidas en canales como Github, Slack, etc.
Conclusión
Este artículo compara Apache APISIX Ingress Controller con Traefik en cuanto a protocolos, extensibilidad y ecosistema.
Apache Ingress tiene ciertas ventajas en los campos de extensibilidad e integración del ecosistema. Los usuarios pueden extender las características de APISIX Ingress Controller e integrarse con algunos componentes básicos de manera más eficiente.
Esperamos que este artículo te dé algunas pistas al elegir tu controlador de Ingress para Kubernetes.