Um gateway de entrada oferece um ponto de acesso unificado para rotear o tráfego de entrada na camada 7. Ele direciona requisições HTTP da mesma porta baseada em TCP para diferentes Kubernetes Services com base no conteúdo da requisição. Quando vários gateways de entrada precisam das mesmas regras de roteamento, vincule-os a um único resource do Istio Gateway por meio de seletores de rótulo, em vez de duplicar as configurações de Gateway para cada gateway de entrada.
Como funcionam os seletores de gateway
Um resource Gateway utiliza o campo spec.selector para corresponder aos pods do gateway de entrada pelos seus rótulos. Qualquer pod cujos rótulos correspondam ao seletor recebe a configuração do Gateway, independentemente do namespace.
Para compartilhar um único Istio Gateway entre vários gateways de entrada:
Adicione um rótulo comum a cada gateway de entrada por meio do campo
podLabels.Defina o
spec.selectordo Gateway para corresponder a esse rótulo.
Todos os gateways de entrada correspondentes passam a compartilhar a mesma configuração de Gateway.
Neste exemplo, dois registros A estão configurados para o nome de domínio xxx.xxx.cn. Esses dois registros A apontam para duas instâncias de Classic Load Balancer (CLB), associadas respectivamente a dois gateways de entrada na instância ASM. Como ambos os gateways de entrada exigem o mesmo Istio Gateway, eles são vinculados por meio de um seletor de rótulo compartilhado.
Para obter mais informações sobre os campos de um gateway de entrada e de um gateway Istio, consulte Campos CRD para um gateway ASM e Gateway.
Pré-requisitos
Antes de começar, verifique se você possui:
Uma instância ASM versão 1.13.4.46 ou posterior. Consulte Crie uma instância ASM
Um cluster adicionado à instância ASM. Consulte Adicionar um cluster a uma instância ASM
Pelo menos dois gateways de entrada implantados. Consulte Crie um gateway de entrada
Uma aplicação implantada no cluster. Consulte Implantar uma aplicação em um cluster ACK adicionado a uma instância ASM
Adicione um rótulo comum a cada gateway de entrada
Adicione o mesmo rótulo a todos os gateways de entrada que devem compartilhar o Istio Gateway.
Faça login no console ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Na página Mesh Management, clique em no nome da sua instância ASM. No painel de navegação à esquerda, escolha ASM Gateways > Ingress Gateway.
Na página Ingress Gateway, localize o primeiro gateway de entrada e clique em YAML.
-
Na caixa de diálogo Edit, adicione um campo
podLabelsabaixo despece clique em OK.Nota: Mantenha todos os outros campos inalterados. Adicione apenas a entrada
podLabels.... spec: podLabels: key1: value1 ... Repita as etapas 3 e 4 para cada gateway de entrada adicional. Utilize o mesmo par chave-valor de rótulo (
key1: value1) em todos eles.
Configure o seletor do Istio Gateway
Defina o spec.selector do Istio Gateway para corresponder ao rótulo adicionado na seção anterior.
Na página de detalhes da instância ASM, escolha ASM Gateways > Gateway no painel de navegação à esquerda.
Na página Gateway, localize o Istio Gateway desejado e clique em YAML na coluna Actions.
-
Na caixa de diálogo Edit, defina o campo
selectorpara corresponder ao rótulo comum e clique em OK. Após salve essa configuração, o Gateway será aplicado a todos os gateways de entrada que possuírem o rótulokey1: value1.apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: name: bookinfo-gateway namespace: default spec: selector: key1: value1 servers: - hosts: - '*' port: name: http number: 80 protocol: HTTP
Próximos passos
Um Istio Gateway apenas configure os proxies para escutar em portas específicas. Para rotear o tráfego aos seus serviços, é necessário também configure virtual services para especifique as regras de encaminhamento de tráfego. Para consultar a referência completa dos campos VirtualService, veja Virtual Service. Para instruções passo a passo, consulte Gerencie virtual services.