O ingress gateway é o único ponto de entrada para tráfego externo na service mesh. Ele usa balanceamento de carga da camada 7 para rotear solicitações aos serviços de backend com base em atributos HTTP, como caminho da URL e cabeçalho de host.
Com o gateway em execução, configure as regras de roteamento do Istio para direcionar o tráfego a serviços específicos.
Pré-requisitos
Crie um ingress gateway no console do ASM
Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Na página Mesh Management, clique em no nome da instância do ASM. No painel de navegação à esquerda, escolha ASM Gateways > Ingress Gateway.
-
Na página Ingress Gateway, clique em Create e configure os parâmetros a seguir.
Para usar YAML, clique em Create from YAML . Gerencie o ingress gateway usando KubeAPI .
Se o cluster no plano de dados for um cluster registrado e você selecione LoadBalancer , verifique se o cluster oferece suporte a Services do tipo LoadBalancer. Caso contrário, a criação do ingress gateway falhará.
ImportanteAtribua um balanceador de carga dedicado a cada serviço do Kubernetes. Compartilhar um balanceador de carga gera os seguintes riscos: - Reutilizar um balanceador de carga existente sobrescreve seus listeners, o que pode tornar a aplicação inacessível. - Apenas balanceadores de carga criados manualmente no console ou via API podem ser reutilizados. Balanceadores de carga criados pelo Kubernetes não podem ser reutilizados. - Serviços que compartilham um balanceador de carga não podem usar a mesma porta de escuta de frontend. Conflitos de porta causam falhas no serviço. - Os nomes de listeners e grupos vServer são identificadores exclusivos para o Kubernetes. Não os modifique. - Não há suporte para reutilização de balanceadores de carga entre clusters ou regiões.
Parâmetro
Descrição
Name
Nome do ingress gateway.
Cluster
Cluster onde implantar o ingress gateway.
Service Type
Tipo de Service do Kubernetes. Valores válidos: LoadBalancer, ClusterIP e NodePort. Consulte Service.
CLB / NLB
Obrigatório quando Service Type estiver definido como LoadBalancer. Valores válidos: Internet Access e Private Access.
Create LoadBalancer Instance
Necessário quando Service Type estiver definido como LoadBalancer. Create LoadBalancer Instance -- Para CLB, selecione uma especificação em Select CLB Specifications. Para NLB, selecione vSwitches em pelo menos duas zonas em Select Zones for NLB Instance. Use Existing SLB Instance -- Selecione um balanceador de carga existente. Consulte os riscos de compartilhamento de balanceador de carga abaixo.
Port Mapping
Defina Protocol e Service Port. Duas portas padrão do Istio vêm pré-configuradas. Modifique conforme necessário.
Resources Limits
Limites de CPU e memória para o pod do ingress gateway.
Gateway instances
Número de réplicas de pods para o ingress gateway.
-
(Opcional) Clique em Advanced Options para configurar definições de dimensionamento, atualização e disponibilidade.
Recursos marcados como (Enterprise/Ultimate Edition) exigem a edição Enterprise ou Ultimate.
Parâmetro
Descrição
External Traffic Policy
Controla a distribuição de tráfego externo. Local: roteia o tráfego apenas para pods no nó receptor. Cluster: permite roteamento para pods em outros nós.
HPA(Enterprise/Ultimate Edition)
Habilita o Horizontal Pod Autoscaler (HPA). Defina Monitoring items e Threshold para CPU ou memória. As réplicas aumentam quando qualquer métrica excede seu limiar e diminuem quando ambas ficam abaixo dele. Defina Maximum replicas e Minimum number of replicas para estabelecer o intervalo de dimensionamento.
Rolling Upgrade
Configura o comportamento de atualização contínua. Maximum number of unavailable instances: quantidade máxima de pods que podem ficar indisponíveis durante uma atualização contínua. Exceeding the desired number of instances: limite extra de pods criados durante uma atualização contínua. Por exemplo, 25% significa que o total de réplicas não pode ultrapassar 125% da contagem desejada.
Enable MultiBuffer-based TLS encryption and decryption performance optimization(Enterprise/Ultimate Edition)
Acelera a criptografia e descriptografia TLS com MultiBuffer. supported nodeaffinity: selecione rótulos de nó para definir o escopo da otimização. Poll Delay(ms): atraso de sondagem para reduzir o tempo de espera do MultiBuffer antes de processar solicitações. Consulte a descrição dos parâmetros.
Deploy ASM Gateway replicas as widely as possible
Usa
podAntiAffinitypara implantar preferencialmente pods do gateway em nós diferentes e melhorar a disponibilidade.Custom Deployment Policy
Configura os campos
nodeSelector,tolerationseaffinitypara o gateway. Consulte a descrição do CRD do gateway ASM.Graceful Shutdown(Enterprise/Ultimate Edition)
Garante a conclusão das solicitações em andamento antes da remoção de um pod. Connection timeout (seconds): tempo que o balanceador de carga aguarda após remover um pod antes de desconectar conexões existentes. O tempo padrão de desligamento gracioso do pod do gateway é de 30 segundos. Defina este valor como 30 segundos ou menos.
Clique em Create.
Verifique o resultado
Após a criação, o status do gateway muda para Running na página Ingress Gateway. A coluna Service address exibe o endereço IP do gateway.
Gerencie o ingress gateway
Edite ou visualize o gateway
Na página Ingress Gateway, localize o gateway desejado e execute uma das ações a seguir:
Clique em View Details para modificar a configuração do gateway.
Clique em Edit YAML para abrir a caixa de diálogo Edit. Modifique os campos e clique em OK. Consulte a descrição do CRD do gateway ASM.
Exclua o gateway
Na página Ingress Gateway, localize o gateway desejado e clique em Delete. Na caixa de diálogo Submit, clique em OK.
Após a exclusão de um ingress gateway, o tráfego externo não consegue mais alcançar os serviços por meio desse gateway. Esta ação não pode ser desfeita.
Visualize o gateway no console do ACK
Visualize informações básicas:
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em no nome do cluster desejado. No painel de navegação à esquerda, escolha Network > Services.
Na página Services, selecione istio-system na lista suspensa Namespace.
A coluna External IP exibe o endereço IP do ingress gateway.
Visualize informações do pod:
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em no nome do cluster desejado. No painel de navegação à esquerda, escolha Workloads > Pods.
Na página Pods, selecione Istio-system na lista suspensa Namespace.
Clique em no pod desejado para visualizar seus detalhes.
Próximas etapas
Para expor serviços por meio do gateway, configure regras de roteamento. Consulte Usar recursos do Istio para rotear tráfego para diferentes versões de um serviço.
Para centralizar o tráfego de saída, crie um egress gateway.
Para monitorar o tráfego entre serviços, use a Topologia da Malha para visualizar a topologia de uma aplicação.
Consulte a visão geral dos gateways do ASM.
Para criar o gateway programaticamente, chame a API CreateASMGateway.