Os gateways do Alibaba Cloud Service Mesh (ASM) são proxies Envoy independentes que operam na borda da malha, separados dos proxies sidecar das cargas de trabalho. Eles funcionam como pontos dedicados de entrada e saída para aplicação de regras de roteamento, políticas de segurança e configurações de observabilidade, tudo gerenciado por um único plano de controle.
Diferentemente de um controlador Ingress padrão do Kubernetes, os gateways do ASM expõem todas as capacidades de gerenciamento de tráfego da malha de serviços: balanceamento de carga das camadas 4 a 7, mTLS, autorização refinada e roteamento com reconhecimento de protocolo. Defina o comportamento do gateway por meio de recursos de gateway do Istio ou da Gateway API do Kubernetes e vincule serviços virtuais para roteamento na camada 7.
O ASM oferece três tipos de gateway:
|
Tipo de gateway |
Função |
Quando usar |
|
Gateway de entrada |
Roteia o tráfego de entrada para serviços dentro da malha. Opera na camada 7 e distribui requisições HTTP para diferentes serviços do Kubernetes com base em caminhos, cabeçalhos de host ou outros atributos da requisição. |
Exponha serviços à internet ou a uma rede interna por um único ponto de entrada com balanceamento de carga na camada 7, terminação TLS e controle de acesso. |
|
Gateway de saída |
Direciona o tráfego de saída dos serviços da malha para endpoints externos por um ponto de saída centralizado. |
Imponha políticas de segurança no tráfego de saída e gerencie centralmente o roteamento para serviços externos. |
|
Gateway do Istio |
Recurso de configuração que define como um balanceador de carga na borda da malha lida com conexões HTTP e TCP de entrada ou saída. Vincule um serviço virtual a ele para habilitar o roteamento na camada 7. |
Defina portas, protocolos e configurações TLS para um balanceador de carga e anexe regras de roteamento via serviços virtuais. |
Gateway de entrada
Um gateway de entrada fornece um ponto de entrada unificado para tráfego de entrada na camada 7. Ele roteia requisições HTTP da mesma porta TCP para diferentes serviços do Kubernetes com base em caminhos de URL, cabeçalhos de host e outros atributos da requisição.
Implante e gerencie gateways de entrada
|
Recurso |
Descrição |
Referência |
|
Crie um gateway de entrada |
Implante um gateway de entrada em um cluster Kubernetes como ponto único de acesso pela internet ou rede interna. Gerencie o gateway pelo console do ASM. |
|
|
Gateways serverless |
Implante gateways em modo serverless, totalmente gerenciados pelo ASM. Esses gateways lidam com picos de tráfego por meio de dimensionamento automático, sem depender de clusters do Container Service for Kubernetes (ACK). Em comparação aos gateways padrão do ASM executados em clusters ACK, os gateways serverless oferecem maior estabilidade, melhor elasticidade e custo reduzido. |
|
|
Suporte a Network Load Balancer (NLB) |
Associe uma instância NLB a um gateway de entrada para obter balanceamento de carga na camada 4 com dimensionamento automático. Por padrão, definir |
Protocolos suportados
|
Recurso |
Descrição |
Referência |
|
Roteamento de tráfego (GUI) |
Crie regras de destino e serviços virtuais por uma interface gráfica, sem necessidade de escrever YAML. |
|
|
Migração de tráfego TCP |
Migre tráfego TCP de forma transparente para manter a continuidade dos negócios ao otimizar a topologia de rede, escalar servidores de aplicação ou limitar tráfego. |
|
|
gRPC |
Acesse serviços gRPC na malha por um gateway de entrada com controle de acesso e governança de serviços. |
|
|
Transcodificação gRPC-JSON |
Utilize o ASMGrpcJsonTranscoder para converter requisições HTTP com corpos JSON em requisições gRPC e permita que clientes HTTP/JSON acessem serviços gRPC. |
Usar ASMGrpcJsonTranscoder para transcodificação de HTTP/JSON para gRPC |
|
WebSocket |
Acesse serviços WebSocket por um gateway de entrada. O WebSocket proporciona comunicação full-duplex sobre uma única conexão TCP na camada de aplicação. |
Usar um gateway de entrada para acessar um serviço WebSocket |
Gerenciamento de tráfego
|
Recurso |
Descrição |
Referência |
|
Limitação local |
Limite o tráfego no nível do gateway ou do serviço para proteger o sistema contra sobrecarga durante picos de demanda. |
|
|
Limitação global |
Aplique limites de taxa a rotas específicas em um gateway de entrada para lidar com rajadas de tráfego, evitar sobrecarga de serviços e defender contra ataques. |
|
|
Circuit breaking |
Configure circuit breaking no nível de rota por meio de serviços virtuais e regras de destino para uma governança de tráfego não intrusiva. |
|
|
Gateway API |
Defina regras de roteamento usando a Gateway API do Kubernetes, um projeto open source da comunidade SIG-NETWORK para redes de serviços expressivas, extensíveis e orientadas a funções. |
|
|
Modo de controlador Ingress |
Utilize um gateway do ASM como controlador Ingress do Kubernetes para expor serviços em um cluster. |
|
|
Espelhamento de tráfego |
Espelhe o tráfego de produção para um cluster de teste ou versão de serviço para validar alterações sem afetar o ambiente produtivo. |
|
|
Afinidade de sessão |
Direcione todas as requisições do mesmo usuário ou sessão para o mesmo servidor backend. Útil para manter estado em carrinhos de compras, sessões de login e configurações personalizadas. |
Implementar afinidade de sessão em um gateway de entrada do ASM |
Gerenciamento de TLS e certificados
Todos os dados entre um gateway de entrada e um proxy sidecar trafegam por um túnel mTLS. Se houver proxies sidecar injetados na aplicação, configure a terminação TLS no gateway de entrada para manter a criptografia de ponta a ponta.
|
Recurso |
Descrição |
Referência |
|
HTTPS com carregamento dinâmico de certificados |
Ative HTTPS em um gateway de entrada com atualizações de certificado em tempo real. Configure chaves privadas, certificados de servidor e certificados raiz sem reiniciar gateways ou montar volumes de segredos. Gerencie múltiplos certificados e suas respectivas chaves privadas para diferentes hosts. |
|
|
Passagem direta de TLS |
Encaminhe tráfego criptografado diretamente para os serviços de backend sem terminar o TLS no gateway. Use esta opção quando proxies sidecar não estiverem injetados ou quando outras circunstâncias exigirem criptografia de ponta a ponta na camada de aplicação. |
|
|
Listener HTTPS no CLB |
Crie um listener HTTPS vinculando um certificado à instância CLB de um gateway de entrada. O listener descriptografa requisições HTTPS em HTTP e as encaminha para o pod do gateway. |
|
|
Gerenciamento de certificados |
Sincronize certificados em vários clusters dentro de uma instância do ASM. Visualize detalhes dos certificados e configure alertas de expiração. |
|
|
Imposição de versão TLS |
Desative versões antigas do TLS (1,0 e 1,1) e imponha o uso de TLS 1.2 ou superior para prevenir ataques man-in-the-middle e violações de dados. |
|
|
mTLS para gRPC |
Configure Mutual TLS (mTLS) para serviços gRPC a fim de impor autenticação bidirecional e criptografia de ponta a ponta. |
Usar um gateway de entrada para configurar gRPC baseado em mTLS |
|
Vinculação de certificado a domínio |
Vincule um certificado a um nome de domínio pelo console e acesse o domínio via HTTPS pelo gateway de entrada. |
|
|
Integração com WAF |
Conecte um gateway de entrada a uma instância do Web Application Firewall (WAF) e personalize campos de log de acesso para visualizar cabeçalhos adicionados pelo WAF. |
|
|
Integração com cert-manager |
Use o cert-manager para emitir e gerenciar certificados para gateways do ASM e habilite acesso HTTPS aos serviços. |
Usar cert-manager para gerenciar certificados de gateways do ASM |
Autorização e controle de acesso
|
Recurso |
Descrição |
Referência |
|
Controle de acesso baseado em IP |
Configure uma lista de bloqueios ou de permissões para permitir ou negar requisições com base em endereços IP de origem, nomes de domínio, portas ou blocos de IP remotos. |
Configure lista de bloqueios ou de permissões para um gateway de entrada |
|
Autorização personalizada |
Defina políticas de controle de acesso baseadas em nomes de domínio, caminhos e métodos HTTP para restringir o acesso a serviços específicos. |
|
|
Single sign-on (SSO) baseado em OIDC |
Configure SSO via OpenID Connect (OIDC) usando o Alibaba Cloud IDaaS ou outros provedores de identidade compatíveis com OIDC. Acesse múltiplos sistemas com uma única identidade, sem modificar as aplicações. |
|
|
Autenticação JWT |
Valide JSON Web Tokens (JWTs) nos cabeçalhos das requisições para autenticar usuários no nível do gateway. Apenas requisições com JWT válido são encaminhadas aos serviços de backend. |
Configure autenticação baseada em JWT em um gateway de entrada |
|
Autenticação JWT de usuário final |
Autentique a origem das requisições no gateway de entrada verificando JWTs nos cabeçalhos das requisições. |
Configure autenticação JWT para um gateway de entrada no ASM |
|
Integração com OPA |
Integre um mecanismo Open Policy Agent (OPA) a um gateway de entrada para definir políticas de autorização refinadas com base em identidades de usuário ou conteúdo da requisição. |
|
|
SSO com IDaaS |
Implemente single sign-on para todas as aplicações em uma instância do ASM pelo Alibaba Cloud IDaaS, sem alterar o código. |
|
|
SSO com Keycloak |
Use o Keycloak autogerenciado como provedor de identidade para implementar single sign-on nas aplicações de uma instância do ASM. |
|
|
CORS |
Configure políticas de compartilhamento de recursos de origem cruzada (CORS) em um serviço virtual para permitir acesso entre domínios distintos de clientes e serviços. |
|
|
Restrição de IP com proxy de camada 7 |
Restrinja o acesso de endereços IP específicos às aplicações, com ou sem um proxy de camada 7 entre o cliente e o gateway do ASM. |
Rede e configuração
|
Recurso |
Descrição |
Referência |
|
Gateway Istio compartilhado |
Configure um único recurso de gateway Istio para múltiplos gateways de entrada e simplifique a configuração. |
Configure um gateway Istio para múltiplos gateways de entrada |
|
Múltiplas instâncias CLB |
Associe várias instâncias CLB a um único gateway de entrada para aumentar a capacidade de balanceamento de carga. |
Acessar um gateway de entrada usando múltiplas instâncias CLB |
|
Extração de IP do cliente |
Extraia o endereço IP original do cliente dos cabeçalhos de requisição HTTP para viabilizar políticas de controle de acesso baseadas em IP. |
|
|
Suporte a IPv6 |
Crie um gateway de entrada com endereço IPv6 para obter maior segurança em comparação ao IPv4. |
|
|
Acesso ao CLB a partir de pods |
Caso os pods no plano de dados não consigam alcançar o endereço IP do CLB de um gateway de entrada, acesse-o pelo IP do cluster ou pelo nome do gateway. |
Resolver problemas de acesso ao CLB a partir de pods do plano de dados |
|
Desativar HTTP/2 |
Desative o HTTP/2 em um gateway de entrada com HTTPS habilitado quando limitações de HTTP/2 no lado do cliente não puderem ser resolvidas via configuração. |
Gateway de saída
Um gateway de saída fornece um ponto de saída centralizado para o tráfego que deixa a malha. Roteie todo o tráfego de saída por um gateway dedicado para obter visibilidade e controle sobre as comunicações externas.
Gerencie gateways de saída pelo console do ASM ou pela API do Kubernetes.
|
Recurso |
Descrição |
Referência |
|
Crie um gateway de saída |
Implante um gateway de saída em um cluster Kubernetes como ponto centralizado de saída para tráfego da internet ou rede interna. |
|
|
Roteamento de todo o tráfego de saída |
Configure um gateway de saída para gerenciar centralmente todo o tráfego de saída, garantindo controle de segurança e roteamento adequado. |
Configure um gateway de saída para rotear todo o tráfego de saída |
|
Política de tráfego de saída (CRD) |
Defina políticas de tráfego de saída usando campos CustomResourceDefinition (CRD). Requer ASM versão 1.16.4 ou posterior. |
Usar política de tráfego de saída para gerenciar tráfego de saída |
Gateway do Istio
Um gateway do Istio é um recurso de configuração que define um balanceador de carga executado na borda da malha. Ele especifica quais portas, protocolos e configurações TLS o balanceador de carga expõe. Vincule um serviço virtual a um gateway do Istio para adicionar regras de roteamento na camada 7.
|
Recurso |
Descrição |
Referência |
|
Gerencie gateways do Istio |
Crie, modifique e exclua gateways do Istio no console do ASM. |
Alta disponibilidade
O ASM suporta diversas estratégias para manter os gateways com alta disponibilidade e minimizar a perda de tráfego durante atualizações, dimensionamentos e falhas.
|
Recurso |
Descrição |
Referência |
|
Configuração de gateway de alto desempenho |
Configure um gateway do ASM para obter alto desempenho e alta disponibilidade. |
Configure um gateway do ASM de alto desempenho e alta disponibilidade |
|
Agendamento de pods |
Agende pods do gateway em nós específicos para isolá-los dos pods de aplicação e melhorar a disponibilidade. |
|
|
Implantação de gateway serverless |
Implante um gateway serverless do ASM em nós virtuais com Elastic Container Instance para cargas de trabalho elásticas que não exigem manutenção de nós. |
|
|
Anti-afinidade de pods |
Distribua pods do gateway por diferentes nós ou zonas de disponibilidade usando políticas de anti-afinidade de pods. |
|
|
Desligamento gracioso |
Evite perda de tráfego durante reduções de escala ou reinícios contínuos permitindo que requisições em andamento sejam concluídas dentro de uma janela de tempo configurada. |
|
|
Entrada multi-cluster |
Implante serviços em vários clusters e configure um gateway de entrada unificado para gerenciar o tráfego de todos eles. |
Configure um gateway de entrada unificado para múltiplos clusters |
|
Atualização canário |
Atualize um gateway do ASM incrementalmente iniciando uma nova versão do pod do gateway, verificando o encaminhamento de tráfego e concluindo a atualização completa. Faça rollback a qualquer momento se surgirem problemas. |
Observabilidade
Monitore o tráfego do gateway por meio de logs de acesso e métricas, com integração nativa aos serviços de observabilidade da Alibaba Cloud.
|
Recurso |
Descrição |
Referência |
|
Logs de acesso |
Gere logs de acesso no gateway (impressos na saída padrão com campos personalizáveis) e colete-os no Simple Log Service para armazenamento, análise e visualização. |
|
|
Métricas |
Gere métricas personalizáveis no gateway e colete-as no Managed Service for Prometheus para armazenamento, análise e visualização. |
Processamento de requisições
|
Recurso |
Descrição |
Referência |
|
Cabeçalhos de resposta HTTP |
Adicione cabeçalhos de resposta HTTP para aplicações web usando um filtro Envoy e aumente a segurança da aplicação. |
Adicionar cabeçalhos de resposta HTTP usando um filtro Envoy |
|
Compressão de dados |
Ative a compressão de dados em um gateway do ASM para reduzir o tamanho das respostas e melhorar o tempo de resposta. |
Migrar de gateways existentes
Se você usa atualmente um gateway de entrada Istio autogerenciado ou NGINX Ingress Controller, migre o tráfego para um gateway de entrada do ASM e obtenha gerenciamento centralizado pelo plano de controle do ASM.
|
Caminho de migração |
Referência |
|
Gateway de entrada Istio autogerenciado para ASM |
Migrar tráfego de um gateway de entrada Istio autogerenciado |
|
NGINX Ingress Controller para ASM |
|
|
Configurações NGINX para ASM |