Um gateway de entrada oferece um único ponto de acesso para tráfego externo em sua malha de serviços pela Internet ou por uma rede interna. Ele roteia solicitações HTTP para serviços de backend com base em caminhos de URL, cabeçalhos de host e outros atributos, proporcionando controle de tráfego na camada 7.
Após criar o gateway, defina regras de roteamento do Istio para controlar a distribuição de tráfego. O recurso Gateway gerencia a configuração de portas e protocolos. Já os recursos VirtualService cuidam da lógica de roteamento, como roteamento baseado em caminho, lançamentos canário e testes A/B.
Como funciona
Implante um gateway de entrada em um cluster Kubernetes gerenciado pela sua instância ASM.
O sistema cria um Service do tipo LoadBalancer, ClusterIP ou NodePort para receber o tráfego externo.
Crie recursos Istio Gateway e VirtualService para definir como o tráfego flui do gateway para seus serviços de backend.
Pré-requisitos
Criar um gateway de entrada no console
As etapas a seguir abrangem três fases: configurar definições básicas, ajustar opções avançadas e verificar o gateway.
Faça login no console ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Na página Mesh Management, clique no nome da instância ASM. No painel de navegação à esquerda, escolha ASM Gateways > Ingress Gateway.
Na página Ingress Gateway, clique em Create.
-
Configure as definições básicas.
Parâmetro
Descrição
Name
Nome do gateway de entrada.
Cluster
Cluster onde o gateway será implantado.
Service Type
Tipo de Service Kubernetes: LoadBalancer, ClusterIP ou NodePort. Para mais detalhes, consulte Service.
CLB / NLB
Aparece quando Service Type é LoadBalancer. Selecione Internet Access para serviços públicos ou Private Access para serviços internos.
Create LoadBalancer Instance
Visível quando Service Type for LoadBalancer. Opções disponíveis:
- Create LoadBalancer Instance: Para CLB, selecione uma especificação em Select CLB Specifications. Para NLB, escolha vSwitches em pelo menos duas zonas em Select Zones for NLB Instance.
- Use Existing SLB Instance: Escolha um balanceador de carga existente na lista.
Port Mapping
Defina Protocol e Service Port. O console fornece duas portas padrão do Istio. Modifique-as conforme necessário.
Resources Limits
Limites de cpu e memória para o pod do gateway.
Gateway instances
Quantidade de réplicas de pod para o gateway.
NotaSe o seu cluster de plano de dados for um cluster registrado, verifique se ele suporta Services do tipo LoadBalancer antes de selecionar LoadBalancer. Caso contrário, a criação do gateway falhará.
ImportanteUtilize um balanceador de carga dedicado para cada Service Kubernetes. Compartilhar um balanceador de carga gera os seguintes riscos:
Reutilizar um balanceador de carga existente sobrescreve seus listeners, o que pode tornar as aplicações inacessíveis.
Apenas balanceadores de carga criados manualmente (pelo console ou OpenAPI) podem ser reutilizados. Balanceadores provisionados automaticamente pelo Kubernetes via recurso Service não são elegíveis para reuso.
Services que compartilham um balanceador de carga não podem usar a mesma porta de escuta frontend.
Não renomeie listeners ou grupos vServer — o Kubernetes utiliza esses nomes como identificadores únicos.
Não há suporte para reutilização de balanceadores de carga entre clusters ou regiões diferentes.
Para definir o gateway via YAML, clique em Use a YAML template na página Ingress Gateway. Para consultar o esquema, veja Gerenciar o gateway de entrada usando KubeAPI.
-
(Opcional) Clique em Advanced Options para configurações adicionais.
Parâmetro
Descrição
External Traffic Policy
Controla a distribuição de tráfego. Local: direciona o tráfego apenas para pods no nó receptor, preservando o ip de origem do cliente. Cluster: permite que o tráfego alcance pods em qualquer nó.
HPA
Habilita o dimensionamento automático horizontal de pods. Configure Monitoring items, Threshold, Maximum replicas e Minimum number of replicas. Se limiares de cpu e memória estiverem configurados, o gateway escala quando qualquer um deles for excedido. Disponível apenas nas edições Enterprise ou Ultimate.
Rolling Upgrade
Gerencia o comportamento de atualização contínua. Maximum number of unavailable instances: quantidade de pods que podem ficar indisponíveis durante a atualização. Exceeding the desired number of instances: pods extras permitidos durante o processo (por exemplo, 25% significa que as réplicas não podem ultrapassar 125% da contagem desejada).
Enable MultiBuffer-based TLS encryption and decryption performance optimization
Acelera o processamento TLS. Defina supported nodeaffinity para selecionar os nós alvo e ajuste Poll Delay(ms) para otimizar a latência. Consulte Descrição dos parâmetros. Exclusivo das edições Enterprise ou Ultimate.
Deploy ASM Gateway replicas as widely as possible
Configura
podAntiAffinitypara agendar os pods do gateway em nós distintos sempre que possível.Custom Deployment Policy
Define
nodeSelector,tolerationseaffinitypara os pods do gateway. Veja Descrição do CRD de gateway ASM.Graceful Shutdown
Mantém as conexões existentes abertas durante a remoção do pod. Connection timeout (seconds): tempo que o balanceador de carga aguarda antes de encerrar a conexão com o pod removido. Não ultrapasse o período padrão de 30 segundos para desligamento graceful. Disponível apenas nas edições Enterprise ou Ultimate.
Clique em Create.
Verificar o resultado
Na página Ingress Gateway, confirme se o status do gateway é Running. A coluna Service address exibe o endereço ip do gateway.
Gerenciar o gateway de entrada
Editar ou visualizar no console ASM
Faça login no console ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Na página Mesh Management, clique no nome da instância ASM. No painel de navegação à esquerda, escolha ASM Gateways > Ingress Gateway.
-
Na página Ingress Gateway, localize o gateway desejado e execute uma das ações abaixo:
Clique em View Details para visualizar ou modificar a configuração do gateway.
Clique em YAML para editar o recurso do gateway diretamente. Na caixa de diálogo Edit, altere os campos e clique em OK. Para detalhes sobre os campos, consulte Descrição do CRD de gateway ASM.
Excluir o gateway
Localize o gateway desejado e clique em Delete. Na caixa de diálogo Submit, clique em OK.
Excluir o gateway de entrada remove permanentemente o acesso externo aos serviços por meio desse gateway. Esta ação não pode ser desfeita.
Visualizar no console ACK
Informações do Service:
Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, escolha Network > Services.
Selecione istio-system na lista suspensa Namespace. A coluna External IP mostra o endereço ip do gateway de entrada.
Informações do Pod:
Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, escolha Workloads > Pods.
Selecione Istio-system na lista suspensa Namespace. Clique em um pod para visualizar seus detalhes.
Próximos passos
Usar recursos Istio para rotear tráfego para diferentes versões de um serviço — Configure roteamento baseado em caminho, lançamentos canário e testes A/B por meio do gateway.
Criar um gateway de saída — Estabeleça uma saída de tráfego centralizada para aplicações da malha.
Usar Mesh Topology para visualizar a topologia de uma aplicação — Visualize relacionamentos de chamadas de serviço e fluxos de tráfego.
Visão geral dos gateways ASM — Explore todos os tipos e capacidades de gateways.
Referências
CreateASMGateway — Crie um gateway de entrada por meio da API.