Por que o APISIX Ingress Controller é uma escolha melhor em comparação com o Traefik?

November 4, 2022

Products

O que é o Apache APISIX Ingress Controller?

Apache APISIX Ingress Controller é um controlador de Ingress do Kubernetes que utiliza o Apache APISIX como seu plano de dados.

Ele suporta configurações de múltiplas regras:

  • Ingress
  • APISIX Ingress CRD (recurso personalizado)
  • Gateway API

De modo geral, a arquitetura do Apache APISIX Ingress Controller separa os planos de dados e controle, permitindo que o Apache APISIX gerencie o tráfego. Portanto, isso melhora a segurança geral e evita significativamente ataques contra clusters Kubernetes devido a ataques ao plano de dados.

Arquitetura do APISIX Ingress Controller

O que é o Traefik?

Traefik é um proxy reverso de código aberto, bem como um balanceador de carga desenvolvido pela Traefik Labs.

Ele suporta configurações de múltiplas regras no Kubernetes:

  • Ingress
  • Traefik IngressRoute (recurso personalizado)
  • Gateway API

O Traefik é um arquivo binário unificado; portanto, seu plano de controle e as lógicas de proxy do plano de dados estão combinados. Assim, se houver ataques contra o Traefik ou explorações de vulnerabilidades de segurança de execução remota, os clusters Kubernetes também podem ser atacados.

Arquitetura do Traefik

Comparação

Nas seções a seguir, compararemos o APISIX Ingress Controller com o Traefik a partir das seguintes dimensões.

Protocolos Suportados

Como um gateway de tráfego, sua capacidade central é lidar corretamente com o tráfego de proxy. O Apache APISIX Ingress Controller, como Ingress Gateway de clusters Kubernetes, lida principalmente com esses dois tipos de tráfego:

  • tráfego entre o Cliente e o Ingress
  • tráfego entre o Ingress e o Serviço Upstream

Isso é mostrado da seguinte forma:

Cliente  <---->  Ingress  <---->  Serviço Upstream

Atualmente, existem inúmeros protocolos diferentes. Aqui, listamos uma tabela simples que compara o APISIX Ingress Controller com o Traefik em relação aos protocolos.

ProtocoloAPISIX Ingress ControllerTraefik
HTTP/HTTPSSuportaSuporta
HTTP/2SuportaSuporta
HTTP/3Não SuportaSuporta
TCPSuportaSuporta
UDPSuportaSuporta
WebSocketSuportaSuporta
DubboSuportaNão Suporta

Além disso, tanto o APISIX Ingress Controller quanto o Traefik suportam protocolos por meio de proxy HTTP/2 ou TCP, como gRPC, MQTT, etc., então não os listamos na tabela acima.

Do ponto de vista dos protocolos, tanto o APISIX Ingress Controller quanto o Traefik têm seus pontos fortes. O APISIX tem planos de suportar HTTP/3 no futuro.

Extensibilidade

A extensibilidade tornou-se um indicador central na seleção de tecnologias devido às diversas necessidades de negócios. Tanto o Apache Ingress quanto o Traefik suportam extensões de recursos de suas próprias maneiras. Vamos apresentá-los um por um.

Apache APISIX Ingress Controller

A extensão de recursos do APISIX Ingress Controller é alcançada por meio da implementação de plugins personalizados. Atualmente, ele suporta principalmente as seguintes três maneiras de desenvolver plugins:

  • Desenvolver plugins via Lua: Essa maneira é relativamente simples e não terá custo de desempenho;
  • Desenvolver plugins via --plugin-runner: Nesse modo, os usuários podem desenvolver plugins usando diferentes linguagens de programação, como JAVA/Python/Go, para que possam utilizar a lógica de seus projetos atuais sem precisar aprender uma nova linguagem de programação;
  • Desenvolver plugins via módulos WASM: Nesse modo, os usuários podem usar qualquer linguagem de programação que gere módulos WASM para desenvolver plugins;

Além disso, também podemos escrever diretamente códigos Lua por meio do plugin serverless para atender rapidamente às nossas necessidades de negócios.

Claro, se você tiver experiência no desenvolvimento de módulos Lua, pode desenvolver diretamente módulos Lua e carregá-los. No entanto, você precisa adicionar a seguinte configuração para que funcione:

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

Consulte a documentação de desenvolvimento de plugins do Apache APISIX e Como o APISIX Ingress Controller suporta plugins personalizados para obter etapas detalhadas de desenvolvimento e usos de plugins.

Traefik

O Traefik também fornece mecanismos de plugins para estender seus recursos. No entanto, como o Traefik é desenvolvido em Go, seus plugins também devem ser desenvolvidos em Go.

Você pode referenciar seu plugin desenvolvido adicionando o seguinte conteúdo à configuração do Traefik.

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

Para ser notado, o nome do plugin deve ser o mesmo que o nome do módulo.

Em geral, o APISIX Ingress Controller suporta vários métodos de extensão, e os usuários podem escolher o melhor método de acordo com a situação real. Além disso, ele permite que os usuários selecionem suas ferramentas de desenvolvimento preferidas e os ajuda a integrar-se mais facilmente com suas linhas de negócios atuais. Por outro lado, o Traefik só pode usar Golang para desenvolver.

Ecossistema

Ao fazer a seleção de tecnologia, consideramos principalmente o protocolo usado no projeto, a propriedade do projeto e como podemos integrar o controlador com nossa infraestrutura atual.

Aspecto de ComparaçãoAPISIX Ingress ControllerTraefik
PropriedadeApache Software Foundation(ASF)Traefik Labs
ProtocoloApache 2.0MIT
Tempo de NascimentoJunho de 2019Agosto de 2015
consulSuportaSuporta
nacosSuportaNão Suporta
EurekaSuportaNão Suporta
etcdSuportaSuporta
zookeeperSuportaSuporta
DNSSuportaNão Suporta

A comparação acima contém conteúdos de ambos os planos de controle e dados. Além disso, esses dois projetos trabalham ativamente e se integram com outros projetos no ecossistema, como Rancher, KubeSphere, etc.

Dessa perspectiva, em comparação com o Traefik, o APISIX tem uma capacidade melhor de integração com componentes básicos.

Você pode pesar os prós e contras dos componentes básicos que está usando ao fazer seleções de tecnologia.

Feedback dos Usuários (Casos de Uso)

Horizon robotics migrou do Traefik para o Apache APISIX, considerando principalmente os seguintes aspectos:

  • A configuração adicionada via Annotation não podia ser reutilizada facilmente.
  • O comportamento padrão do Traefik difere do NGINX, o que confunde os usuários durante o uso.

Após a Horizon mudar para o Apache APISIX Ingress Controller, graças ao rico ecossistema de extensões do APISIX Ingress Controller, a maioria das necessidades pode ser alcançada pelos plugins internos. Além disso, os usuários podem definir diretamente a configuração dos plugins por meio do recurso ApisixRoute do APISIX Ingress Controller, o que é muito direto. Além disso, os usuários também podem configurar o módulo de plugin via ApisixPluginConfig, e ele pode ser referenciado em outros recursos ApisixRoute.

Diagrama de Arquitetura da Horizon

O APISIX Ingress Controller tem um excelente desempenho no plano de dados e pode lidar eficientemente com o aumento do tráfego sem gargalos de desempenho.

Além da Horizon, empresas como igetcool e gwwisdom também usam o APISIX Ingress Controller para substituir o Traefik. Consulte Casos de Uso para mais casos de uso de clientes.

Além disso, o Apache APISIX tem uma comunidade altamente ativa, e você pode obter respostas e soluções rápidas em canais como Github, Slack, etc.

Conclusão

Este artigo compara o Apache APISIX Ingress Controller com o Traefik em relação a protocolos, extensibilidade e ecossistema.

O Apache Ingress tem certas vantagens nos campos de extensibilidade e integração de ecossistema. Os usuários podem estender os recursos do APISIX Ingress Controller e integrar-se com alguns componentes básicos de forma mais eficiente.

Esperamos que este artigo lhe dê algumas dicas ao escolher seu controlador de Ingress Kubernetes.

Share article link