O ACK oferece suporte aos controladores de Ingress Nginx, ALB, APIG e MSE para o roteamento de tráfego da Camada 7 para os services do cluster.
Termos
Um Ingress é um recurso do Kubernetes que roteia o tráfego externo para os pods de um service interno por meio de regras de encaminhamento. Consulte Comparison among Nginx Ingresses, ALB Ingresses, and MSE Ingresses.
Nginx Ingress Controller
O ACK otimiza o Nginx Ingress Controller mantido pela comunidade, preservando a compatibilidade total e o suporte a todas as anotações da comunidade.
Como funciona
Implante um Nginx Ingress Controller no cluster para analisar as regras de encaminhamento do Ingress. O controlador recebe as requisições, compara-as com as regras e as encaminha para os pods do service de backend. A relação entre um Service, um Nginx Ingress e o Nginx Ingress Controller é a seguinte:
Um service abstrai um ou mais services de backend idênticos.
Um Nginx Ingress define regras de proxy reverso que roteiam requisições HTTP e https para os pods do service com base no host e no caminho da URL.
O Nginx Ingress Controller analisa as regras do Nginx Ingress. Quando um Ingress é alterado, o controlador atualiza suas regras de encaminhamento e roteia as requisições recebidas para o pod do service apropriado.
O Nginx Ingress Controller obtém as alterações do Ingress a partir do API Server, gera arquivos de configuração do balanceador de carga (como nginx.conf) e recarrega o balanceador de carga (por exemplo, nginx -s reload) para aplicar as novas regras de roteamento.
Crie uma instância do Server Load Balancer (SLB) por meio de um service do tipo LoadBalancer, o que permite o acesso externo aos services do cluster com base nas regras do Nginx Ingress.
Referências para o Nginx Ingress
ALB Ingress Controller
O ALB Ingress Controller utiliza o Application Load Balancer (ALB) do Alibaba Cloud para o gerenciamento de tráfego do Ingress. Compatível com o Nginx Ingress, ele oferece suporte a roteamento complexo, descoberta automática de certificados e protocolos HTTP, https e QUIC para o processamento de tráfego da Camada 7 em grande escala.
Como funciona
Quando um recurso Ingress é alterado, o controlador detecta a mudança por meio do API server do Kubernetes e executa as seguintes operações:
Crie uma instância de ALB.
Configura listeners na instância.
Crie regras de Ingress.
Configura grupos de servidores de backend.
Os três recursos principais:
service — Define um endpoint de rede estável para o qual os Ingresses roteiam o tráfego, abstraindo uma aplicação em pods replicados.
Ingress — Define regras de proxy reverso que roteiam requisições HTTP e https para services com base no nome do host e no caminho da URL.
AlbConfig — Configura a instância de ALB subjacente. O controlador gera um AlbConfig para cada instância de ALB gerenciada.
O Controller gerencia totalmente a instância de ALB associada a um AlbConfig. Não modifique a instância no console do ALB, pois isso pode interromper os services de Ingress.
Referências para o ALB Ingress
APIG Ingress Controller
O APIG Ingress utiliza o api gateway cloud native para o gerenciamento de tráfego. É uma evolução do api gateway cloud native do MSE. Compatível com o Nginx Ingress e com mais de 50 anotações (o que abrange mais de 90% dos cenários do Nginx Ingress), ele oferece suporte a lançamentos graduais simultâneos, governança flexível de services e proteção de segurança abrangente para aplicações distribuídas em grande escala.
Componentes
-
APIG Controller:
O APIG Controller gerencia instâncias e configurações do api gateway cloud native. Ele opera em modo de bypass e não processa o tráfego do service — as instâncias do gateway lidam com todo o tráfego do plano de dados.
No cluster, install the APIG Controller component. Use o CRD ApigConfig e gerencie declarativamente as instâncias do gateway e defina as opções de listener do Ingress.
-
api gateway cloud native:
Crie o gateway a partir do recurso ApigConfig. O gateway possui um plano de controle e um plano de dados.
Plano de controle: Monitora os recursos de Ingress, IngressClass e service no cluster associado, analisa-os e envia as configurações para o plano de dados em tempo real.
Plano de dados: Processa requisições externas com base nas regras do plano de controle e as encaminha para os services de backend.
Como funciona
O APIG Controller monitora os recursos ApigConfig no cluster e mantém o ciclo de vida e a associação com o cluster de cada instância do gateway.
O plano de controle do gateway obtém as alterações do Ingress a partir do API server e atualiza as regras de roteamento. Quando uma requisição chega, o gateway a compara com as regras do Ingress e a encaminha para os pods do service de backend.
Os principais recursos e componentes do Kubernetes são:
service: Uma abstração que representa uma ou mais instâncias de service de backend idênticas.
Ingress: Regras de proxy reverso que roteiam requisições HTTP e https para services com base no host e no caminho da URL.
IngressClass: Identifica uma implementação de controlador de Ingress. Use o campo Parameter para associar um ApigConfig que implementa as regras de tráfego a partir dos recursos de Ingress.
ApigConfig: Um CRD fornecido pelo APIG Controller que define uma instância de api gateway cloud native.
APIG Controller: Gerencia instâncias e configurações do gateway ao monitorar os recursos ApigConfig e coordenar o gateway para implementar as regras de tráfego do Ingress.
O diagrama a seguir mostra como o APIG Controller funciona.
Referências para o APIG Ingress
MSE Ingress Controller
O MSE Ingress utiliza o api gateway cloud native do MSE para o gerenciamento de tráfego. Compatível com o Nginx Ingress e com mais de 50 anotações (o que abrange mais de 90% dos cenários do Nginx Ingress), ele oferece suporte a lançamentos graduais simultâneos, governança flexível de services e proteção de segurança abrangente para aplicações distribuídas em grande escala.
Como funciona
Componentes
-
MSE Ingress controller:
O MSE Ingress controller não é um plano de dados de rede, mas sim um plano de controle que gerencia os api gateways cloud native do MSE e suas configurações. Ele não processa nenhuma requisição de service. O MSE Ingress controller atua como um bypass de tráfego e gerencie os api gateways cloud native do MSE que processam o tráfego do service.
Instale o componente MSE Ingress Controller no seu cluster ACK , use os CRDs MseIngressConfig fornecidos por este componente e gerencie os api gateways cloud native com base em anotações e defina as opções de listener de recursos de Ingress para os gateways.
Para obter mais informações, instale o componente MSE Ingress controller e consulte Manage the MSE Ingress Controller add-on.
-
api gateways cloud native do MSE: Os api gateways cloud native do MSE são criados com base nos CRDs MseIngressConfig que você configurou. Um api gateway cloud native do MSE consiste em um plano de controle e um plano de dados.
Plano de controle: monitora recursos como Ingresses, classes de Ingress e services em um cluster ACK associado. Após a análise, as configurações dos recursos são enviadas para o plano de dados do gateway em tempo real.
Plano de dados: implementa a governança de tráfego. O plano de dados processa requisições externas com base nas regras de governança enviadas pelo plano de controle e roteia as requisições para o service de backend de destino.
Fluxo de trabalho
O MSE Ingress controller monitora o recurso definido por um CRD MseIngressConfig em um cluster ACK e mantém dinamicamente o ciclo de vida do api gateway cloud native correspondente ao recurso, bem como a associação entre o gateway e o cluster ACK em tempo real.
O plano de controle do api gateway cloud native obtém as alterações dos recursos de Ingress por meio do API server do cluster ACK associado e atualiza dinamicamente as regras de roteamento do gateway. Após o api gateway cloud native receber uma requisição, ele a compara com uma regra de roteamento de Ingress e roteia a requisição para o pod correspondente ao service de backend com base na regra de roteamento encontrada.
Em um cluster Kubernetes, services, Ingresses, classes de Ingress, MseIngressConfigs e o MSE Ingress controller funcionam por meio do seguinte processo:
service: uma abstração de services de backend reais. Um service pode representar vários services de backend idênticos.
Ingress: um conjunto de regras de proxy reverso. Um Ingress especifica o service para o qual as requisições HTTP ou https são roteadas. Por exemplo, um Ingress roteia requisições para diferentes services com base nos nomes de host e nas URLs das requisições.
Classe de Ingress: uma descrição do processador de Ingress. Uma classe de Ingress declara a implementação de um processador de Ingress em um cluster Kubernetes. O processador de Ingress analisa os recursos de Ingress associados à classe. Associe um MseIngressConfig ao campo Parameter da classe de Ingress para implementar a regra de gerenciamento de tráfego especificada na descrição do recurso de Ingress analisado.
MseIngressConfig: um CRD fornecido pelo MSE Ingress Controller. Um CRD MseIngressConfig fornece informações básicas sobre um api gateway cloud native.
MSE Ingress Controller: um plano de controle que gerencia os api gateways cloud native do MSE e suas configurações. O MSE Ingress Controller não é um plano de dados de rede. Ele monitora os recursos de Ingress definidos pelos CRDs MseIngressConfig em um cluster e coordena os api gateways cloud native do MSE para implementar a regra de gerenciamento de tráfego especificada na descrição do recurso de Ingress analisado.
A figura a seguir mostra como o MSE Ingress controller funciona.
