Gateways virtuais - AWS App Mesh

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Gateways virtuais

Um gateway virtual permite que recursos fora da sua malha se comuniquem com recursos que estão dentro da sua malha. O gateway virtual representa um proxy Envoy em execução em uma tarefa do serviço Amazon ECS, em um serviço do Kubernetes ou em uma instância do Amazon EC2. Ao contrário de um nó virtual, que representa um Envoy em execução com um aplicativo, um gateway virtual representa o Envoy implantado por si mesmo.

Os recursos externos devem ser capazes de resolver um nome do DNS para um endereço IP atribuído ao serviço ou instância que executa o Envoy. O Envoy pode então acessar toda a configuração do App Mesh para os recursos que estão dentro da malha. A configuração para lidar com as solicitações de entrada no gateway virtual é especificada usando Rotas do gateway.

Importante

Um gateway virtual com um receptor HTTP ou HTTP2 regrava o nome do host da solicitação de entrada no Nome do serviço virtual de destino da Rota do gateway, e o prefixo correspondente da Rota do gateway é regravado para /, por padrão. Por exemplo, se você configurou o prefixo de correspondência da Rota do gateway como /chapter, se a solicitação de entrada for /chapter/1, a solicitação será regravada para /1. Para configurar regravações, consulte a seção Criar uma rota de gateway em Rotas do gateway.

Ao criar um gateway virtual, proxyConfiguration e user não devem ser configurados.

Para obter uma explicação completa, consulte Configuração do gateway de entrada.

Criar um gateway virtual

nota

Ao criar um gateway virtual, você deve adicionar um Seletor de namespace com um rótulo para identificar a lista de namespaces aos quais associar Rotas do gateway ao Gateway virtual criado.

AWS Management Console
Para criar um gateway virtual usando o AWS Management Console
  1. Abra o console do App Mesh em https://console.aws.amazon.com/appmesh/.

  2. Escolha a malha na qual você deseja criar o gateway virtual. Todas as malhas que você possui e que foram compartilhadas com você estão listadas.

  3. Escolha Gateways virtuais no painel de navegação à esquerda.

  4. Escolha Criar gateway virtual.

  5. Em Nome do gateway virtual, insira um nome para o seu gateway virtual.

  6. (Opcional, mas recomendado) Configurar os Padrões de política de cliente.

    1. (Opcional) Selecione Impor o TLS se quiser exigir que o gateway só se comunique com os serviços virtuais usando Transport Layer Security (TLS).

    2. (Opcional) Para Portas, especifique uma ou mais portas nas quais você deseja impor o TLS na comunicação com serviços virtuais.

    3. Para Método de validação, selecione uma das opções a seguir. O certificado especificado já deve existir e atender aos requisitos específicos. Para obter mais informações, consulte Requisitos de certificado.

      • Hospedagem da AWS Private Certificate Authority: selecione um ou mais Certificados existentes.

      • Envoy Secret Discovery Service (SDS) hosting: digite o nome do segredo para o Envoy buscar usando o Secret Discovery Service.

      • Hospedagem de arquivos local: especifique o caminho para o arquivo da Cadeia de certificados no sistema de arquivos em que o Envoy está implantado.

    4. (Opcional) Insira um Nome alternativo do assunto. Para adicionar mais SANs, selecione Adicionar SAN. Os SANs devem estar formatados como FQDN ou URI.

    5. (Opcional) Selecione Fornecer certificado de cliente e uma das opções abaixo para fornecer um certificado de cliente quando um servidor o solicitar e habilitar a autenticação de TLS mútuo. Para saber mais sobre o TLS mútuo, consulte os documentos de Autenticação de TLS mútuo do App Mesh.

      • Envoy Secret Discovery Service (SDS) hosting: digite o nome do segredo para o Envoy buscar usando o Secret Discovery Service.

      • Hospedagem de arquivos local: especifique o caminho para o arquivo da Cadeia de certificados como a Chave privada, no sistema de arquivos em que o Envoy está implantado. Para uma explicação completa da implantação de uma malha com um aplicativo de exemplo usando criptografia com arquivos locais, consulte Configurar o TLS com Certificados TLS fornecidos por arquivo no GitHub.

  7. (Opcional) Para configurar o registro em log, selecione Registro. Insira o caminho dos logs de acesso HTTP que você deseja que o Envoy use. Recomendamos o caminho /dev/stdout, para que você possa usar drivers de log do Docker para exportar seus logs do Envoy para um serviço, como o Amazon CloudWatch Logs.

    nota

    Os logs ainda devem ser ingeridos por um agente no seu aplicativo e enviados para um destino. Esse caminho de arquivo apenas informa ao Envoy para onde os logs devem ser enviados.

  8. Configure o Receptor.

    1. Selecione um Protocolo e especifique a Porta na qual o Envoy recebe o tráfego. O receptor http permite a transição da conexão para websockets. Você pode clicar em Adicionar receptor para adicionar vários receptores. O botão Remover removerá esse receptor.

    2. (Opcional) Habilitar grupo de conexões

      O pooling de conexões limita o número de conexões que o Envoy do gateway virtual pode estabelecer simultaneamente. O objetivo é proteger sua instância do Envoy de ficar sobrecarregada com conexões e permitir que você ajuste a modelagem de tráfego de acordo com as necessidades dos seus aplicativos.

      Você pode definir as configurações do grupo de conexões do lado do destino para um receptor de gateway virtual. O App Mesh define as configurações do grupo de conexões do lado do cliente como infinitas por padrão, simplificando a configuração da malha.

      nota

      Os protocolos portMapping connectionPool e connectionPool devem ser os mesmos. Se o protocolo do seu receptor for grpc ou http2, especifique maxRequests somente. Se o protocolo do seu receptor for http, você poderá especificar ambos, maxConnections e maxPendingRequests.

      • Em Máximo de conexões, especifique o número máximo de conexões de saída.

      • Em Máximo de solicitações, especifique o número máximo de solicitações paralelas que podem ser estabelecidas com o Envoy do gateway virtual.

      • (Opcional) Para Máximo de solicitações pendentes, especifique o número de solicitações excedentes após o Máximo de conexões que um Envoy coloca na fila. O valor padrão é 2147483647.

    3. (Opcional) Se você quiser configurar uma verificação de integridade para seu receptor, selecione Habilitar a verificação de integridade.

      Uma política de verificação de integridade é opcional, mas se você especificar qualquer valor para uma política de integridade, deverá especificar valores para Limite de integridade, Intervalo de verificação de integridade, Protocolo de verificação de integridade, Tempo limite e Limite de integridade inadequada.

      • Em Protocolo de verificação de integridade, escolha um protocolo. Se você selecionar grpc, o serviço deverá estar em conformidade com o Protocolo de verificação de integridade GRPC.

      • Em Health check port (Porta de verificação de integridade), especifique a porta em que a verificação de integridade deve ser executada.

      • Em Healthy threshold (Limite de integridade), especifique o número de verificações de integridade consecutivas bem-sucedidas que deve ocorrer antes de o listener ser declarado íntegro.

      • Em Health check interval (Intervalo de verificação de integridade), especifique o período em milissegundos entre cada execução de verificação de integridade.

      • Em Path (Caminho), especifique o caminho de destino para a solicitação de verificação de integridade. Esse valor é usado somente se o Protocolo de verificação de integridade for http ou http2. O valor é ignorado para outros protocolos.

      • Em Período de tempo limite, especifique tempo de espera ao receber uma resposta da verificação de integridade, em milissegundos.

      • Em Unhealthy threshold (Limite de não integridade), especifique o número de verificações de integridade consecutivas com falha que deve ocorrer antes de o listener ser declarado não íntegro.

    4. (Opcional) Se você quiser especificar se os clientes se comunicam com esse gateway virtual usando TLS, selecione Habilitar encerramento do TLS.

      • Em Modo, selecione o modo no qual você deseja que o TLS seja configurado no receptor.

      • Em Método de certificado, selecione uma das seguintes opções. O certificado deve atender aos requisitos específicos. Para obter mais informações, consulte Requisitos de certificado.

        • Hospedagem do AWS Certificate Manager: selecione um Certificado existente.

        • Envoy Secret Discovery Service (SDS) hosting: digite o nome do segredo para o Envoy buscar usando o Secret Discovery Service.

        • Hospedagem de arquivos local: especifique o caminho para os arquivos da Cadeia de certificados e da Chave privada no sistema de arquivos em que o Envoy está implantado.

      • (Opcional) Selecione Exigir certificado de cliente e uma das opções abaixo para habilitar a autenticação de TLS mútuo quando um cliente fornecer um certificado. Para saber mais sobre o TLS mútuo, consulte os documentos de Autenticação de TLS mútuo do App Mesh.

        • Envoy Secret Discovery Service (SDS) hosting: digite o nome do segredo para o Envoy buscar usando o Secret Discovery Service.

        • Hospedagem de arquivos local: especifique o caminho para o arquivo da Cadeia de certificados no sistema de arquivos em que o Envoy está implantado.

      • (Opcional) Insira um Nome alternativo do assunto. Para adicionar mais SANs, selecione Adicionar SAN. Os SANs devem estar formatados como FQDN ou URI.

  9. Escolha Criar gateway virtual para concluir.

AWS CLI

Para criar um gateway virtual usando a AWS CLI.

Crie um gateway virtual usando o comando a seguir e um arquivo JSON de entrada (substitua os valores em vermelho pelos seus):

  1. aws appmesh create-virtual-gateway \ --mesh-name meshName \ --virtual-gateway-name virtualGatewayName \ --cli-input-json file://create-virtual-gateway.json
  2. Conteúdo do exemplo create-virtual-gateway.json:

    { "spec": { "listeners": [ { "portMapping": { "port": 9080, "protocol": "http" } } ] } }
  3. Resultado do exemplo:

    { "virtualGateway": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:123456789012:mesh/meshName/virtualGateway/virtualGatewayName", "createdAt": "2022-04-06T10:42:42.015000-05:00", "lastUpdatedAt": "2022-04-06T10:42:42.015000-05:00", "meshOwner": "123456789012", "resourceOwner": "123456789012", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 1 }, "spec": { "listeners": [ { "portMapping": { "port": 9080, "protocol": "http" } } ] }, "status": { "status": "ACTIVE" }, "virtualGatewayName": "virtualGatewayName" } }

Para obter mais informações sobre como criar um gateway virtual com a AWS CLI para App Mesh, consulte o comando create-virtual-gateway na referência da AWS CLI.

Implementar um gateway virtual

Implante um serviço Amazon ECS ou Kubernetes que contenha somente o contêiner do Envoy. Você também pode implantar o contêiner Envoy em uma instância do Amazon EC2. Para obter mais informações, consulte Conceitos básicos do App Mesh e do Amazon EC2. Para obter mais informações sobre como implantar no Amazon ECS, consulte Conceitos básicos do App Mesh e do Amazon ECS ou Conceitos básicos do AWS App Mesh e do Kubernetes para implantar no Kubernetes. Você precisa definir a variável de ambiente APPMESH_RESOURCE_ARN como mesh/mesh-name/virtualGateway/virtual-gateway-name e não especificar a configuração do proxy para que o tráfego do proxy não seja redirecionado para ele mesmo. Por padrão, o App Mesh usa o nome do recurso especificado em APPMESH_RESOURCE_ARN quando o Envoy está se referindo a si mesmo em métricas e rastreamentos. É possível substituir esse comportamento definindo a variável de ambiente APPMESH_RESOURCE_CLUSTER com seu próprio nome.

Recomendamos implantar várias instâncias do contêiner e configurar um Network Load Balancer para balancear a carga do tráfego para as instâncias. O nome da descoberta de serviços do balanceador de carga é o nome que você deseja que os serviços externos usem para acessar os recursos que estão na malha, como myapp.example.com. Para obter mais informações, consulte Criação de um Network Load Balancer (Amazon ECS), Criação de um Load Balancer externo (Kubernetes) ou Tutorial: Aumente a disponibilidade do seu aplicativo no Amazon EC2. Você também pode encontrar mais exemplos e orientações em nossos Exemplos do App Mesh.

Habilite a autorização de proxy para o Envoy. Para obter mais informações, consulte Autorização do Envoy Proxy.

Excluir um gateway virtual

AWS Management Console
Para excluir um gateway virtual usando o AWS Management Console
  1. Abra o console do App Mesh em https://console.aws.amazon.com/appmesh/.

  2. Escolha a malha da qual você deseja excluir um gateway virtual. Todas as malhas que você possui e que foram compartilhadas com você estão listadas.

  3. Escolha Gateways virtuais no painel de navegação à esquerda.

  4. Escolha o gateway virtual que deseja excluir e selecione Excluir. Você não pode excluir um gateway virtual se ele alguma rota do gateway associada. Você deve primeiro excluir todas as rotas do gateway associadas. Você só pode excluir um gateway virtual em que sua conta esteja listada como Proprietário do recurso.

  5. Na caixa de confirmação, digite delete e selecione Excluir.

AWS CLI
Para excluir um gateway virtual usando a AWS CLI
  1. Use o comando a seguir para excluir o gateway virtual (substitua os valores em vermelho pelos seus):

    aws appmesh delete-virtual-gateway \ --mesh-name meshName \ --virtual-gateway-name virtualGatewayName
  2. Resultado do exemplo:

    { "virtualGateway": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:123456789012:mesh/meshName/virtualGateway/virtualGatewayName", "createdAt": "2022-04-06T10:42:42.015000-05:00", "lastUpdatedAt": "2022-04-07T10:57:22.638000-05:00", "meshOwner": "123456789012", "resourceOwner": "123456789012", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 2 }, "spec": { "listeners": [ { "portMapping": { "port": 9080, "protocol": "http" } } ] }, "status": { "status": "DELETED" }, "virtualGatewayName": "virtualGatewayName" } }

Para obter mais informações sobre como excluir um gateway virtual com a AWS CLI para App Mesh, consulte o comando delete-virtual-gateway na referência da AWS CLI.