¿Por qué APISIX Ingress Controller es una mejor opción en comparación con Traefik?

Jintao Zhang

Jintao Zhang

November 4, 2022

Products

¿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.

Arquitectura de APISIX Ingress Controller

¿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.

Arquitectura de Traefik

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.

ProtocoloAPISIX Ingress ControllerTraefik
HTTP/HTTPSSoportaSoporta
HTTP/2SoportaSoporta
HTTP/3No SoportaSoporta
TCPSoportaSoporta
UDPSoportaSoporta
WebSocketSoportaSoporta
DubboSoportaNo 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ónAPISIX Ingress ControllerTraefik
PropiedadApache Software Foundation(ASF)Traefik Labs
ProtocoloApache 2.0MIT
Tiempo de NacimientoJunio 2019Agosto 2015
consulSoportaSoporta
nacosSoportaNo Soporta
EurekaSoportaNo Soporta
etcdSoportaSoporta
zookeeperSoportaSoporta
DNSSoportaNo 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.

Diagrama de Arquitectura de Horizon

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.

Tags: