Os gateways multicluster ALB estendem o ALB Ingress para abranger vários clusters gerenciados pela Distributed Cloud Container Platform for Kubernetes (ACK One). Uma única instância de Application Load Balancer (ALB) atua como ponto de entrada unificado e distribui tráfego para Services de backend em todos os clusters associados. Na maioria dos casos, você pode usar os gateways multicluster ALB da mesma forma que o modo de cluster único do ALB Ingress, exceto por algumas diferenças específicas.
Por que usar gateways multicluster
Executar uma única instância ALB em vários clusters oferece as seguintes capacidades adicionais em relação a uma implantação de ALB Ingress de cluster único:
Isolamento de falhas: O tráfego se distribui por vários clusters; assim, o impacto de uma falha em um único cluster fica restrito a ele.
Gerenciamento unificado de tráfego: Gerencie regras de roteamento, listeners e balanceamento de carga em um único local, em vez de manter configurações de Ingress separadas por cluster.
Ingress consistente: Aplique os mesmos recursos do ALB — Auto Scaling, operação totalmente gerenciada e gerenciamento sem O&M — em todos os clusters da sua instância Fleet.
Como funciona
A arquitetura separa as responsabilidades do plano de controle e do plano de dados:
Plano de controle — controlador ALB Ingress: Monitora o servidor de API em busca de alterações nos resources de Ingress e atualiza a configuração da instância ALB com base nas regras de roteamento. O controlador gerencia a instância ALB, mas não distribui o tráfego.
Plano de dados — instância ALB: Recebe e distribui o tráfego de entrada para os Services de backend em todos os clusters associados, seguindo as regras configuradas pelo controlador.
Os componentes abaixo trabalham em conjunto para definir e rotear o tráfego:
AlbConfig: CustomResourceDefinition (CRD) criado pelo controlador ALB Ingress para definir a configuração da instância ALB. Cada AlbConfig mapeia exatamente uma instância ALB. No modo multicluster, a anotação
alb.ingress.kubernetes.io/remote-clustersno AlbConfig especifica quais clusters a instância ALB atende.IngressClass: Identifica qual controlador de Ingress processa um determinado resource de Ingress e permite a coexistência de múltiplos controladores no mesmo cluster.
Ingress: Define regras de roteamento de tráfego externo e de controle de acesso. O controlador ALB Ingress monitora alterações no Ingress e atualiza a instância ALB adequadamente.
Service: Fornece um endereço IP virtual e porta estáveis para um grupo de pods. A instância ALB roteia o tráfego para os Services sem precisar detectar alterações individuais nos pods.
Limitações
O modo multicluster suporta a maioria dos recursos do ALB Ingress, com uma exceção: não é possível usar simultaneamente a divisão de tráfego por peso e o canary release no modo multicluster.
|
Recurso |
Modo de cluster único |
Modo multicluster |
|
Divisão de tráfego por peso + canary release simultaneamente |
Suportado |
Não suportado |
Para obter a lista completa de anotações suportadas, consulte Anotações suportadas por ALB Ingresses.
Configurar um AlbConfig
Crie um AlbConfig com a anotação alb.ingress.kubernetes.io/remote-clusters para associar clusters à instância ALB.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: ackone-gateway-demo
annotations:
# Specify the cluster IDs associated with this ALB multi-cluster gateway.
alb.ingress.kubernetes.io/remote-clusters: ${cluster1},${cluster2}
spec:
config:
name: one-alb-demo
addressType: Internet
addressAllocatedMode: Fixed
zoneMappings:
- vSwitchId: ${vsw-id1}
- vSwitchId: ${vsw-id2}
listeners:
- port: 8001
protocol: HTTP
Substitua os placeholders a seguir pelos valores reais:
|
Placeholder |
Descrição |
|
|
IDs dos clusters associados à sua instância Fleet |
|
|
IDs dos vSwitches nas zonas onde a instância ALB está implantada |
A tabela a seguir descreve os principais parâmetros:
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
Nome do AlbConfig. |
|
|
Sim |
Lista separada por vírgulas de IDs de cluster a serem adicionados ao gateway multicluster ALB. Os clusters já devem estar associados à instância Fleet. |
|
|
Não |
Nome da instância ALB. |
|
|
Não |
Tipo de rede da instância ALB. Valores válidos: |
|
|
Sim |
IDs dos vSwitches para as zonas onde a instância ALB está implantada. Os vSwitches devem estar em zonas suportadas pelo ALB e na mesma VPC dos clusters. Se a região oferecer suporte a duas ou mais zonas, especifique vSwitches em pelo menos duas zonas para garantir alta disponibilidade. Para regiões e zonas suportadas, consulte Regiões e zonas. Para instruções sobre como criar um vSwitch, consulte Criar e gerenciar um vSwitch. |
|
|
Não |
Porta e protocolo do listener. O exemplo acima configura um listener HTTP na porta 8001. Um listener define como a instância ALB recebe o tráfego. Inclua um listener no AlbConfig; caso contrário, crie um manualmente antes de usar ALB Ingresses. |
Para obter a lista completa de campos do AlbConfig, consulte Dicionário GlobalConfiguration do ALB Ingress. Para exemplos de configuração, consulte Configurar instâncias e listeners ALB.
Próximos passos
Configure regras de roteamento de Ingress para seu gateway multicluster: Configurar Ingresses
Saiba mais sobre o gerenciamento de Services no ACK: Gerenciamento de Services