Configuração de NEGs sem servidor

Um grupo de endpoints de rede (NEG) especifica um grupo de endpoints de back-end para um balanceador de carga. Um NEG sem servidor é um back-end que aponta para um serviço do Cloud Run, App Engine ou Cloud Functions.

Um NEG sem servidor pode representar:

  • Um serviço ou um grupo de serviços do Cloud Run que compartilham o mesmo padrão de URL.
  • Uma função ou um grupo de funções do Cloud Functions que compartilham o mesmo padrão de URL.
  • Um aplicativo do App Engine (padrão ou flexível), um serviço específico dentro de um aplicativo ou até mesmo uma versão específica dele.

Esta página mostra como criar um balanceador de carga HTTP(S) externo para encaminhar solicitações para back-ends sem servidor. Aqui, o termo sem servidor refere-se aos seguintes produtos de computação sem servidor: App Engine, Cloud Functions e Cloud Run (totalmente gerenciado).

Os NEGs sem servidor permitem usar aplicativos sem servidor do Google Cloud com balanceamento de carga HTTP(S) externo. Depois de configurar um balanceador de carga com o back-end NEG sem servidor, as solicitações para o balanceador de carga são roteadas para o back-end do aplicativo sem servidor.

Antes de começar

Antes de começar:

  1. Leia a visão geral dos NEGs sem servidor.
  2. Implante um serviço do App Engine, do Cloud Functions ou do Cloud Run (totalmente gerenciado).
  3. Instalar o SDK do Google Cloud.
  4. Configurar permissões.
  5. Adicione um recurso de certificado SSL.

Implantar um serviço do App Engine, do Cloud Functions ou do Cloud Run (totalmente gerenciado)

As instruções nesta página pressupõem que você já tenha um serviço do Cloud Run (totalmente gerenciado), do Cloud Functions ou do App Engine em execução.

Neste exemplo, usamos o guia de início rápido do Cloud Run (totalmente gerenciado) para Python para implantar o serviço helloworld na região us-central1. O restante desta página mostra como configurar um balanceador de carga HTTP(S) externo que usa um back-end NEG sem servidor para encaminhar solicitações para o serviço helloworld.

Se você ainda não implantou um aplicativo sem servidor ou se quiser testar um NEG sem servidor com um aplicativo de amostra, use um dos guias de início rápido a seguir. É possível criar um aplicativo sem servidor em qualquer região, mas você precisa usar a mesma região posteriormente para criar o NEG e o balanceador de carga sem servidor.

Cloud Run (totalmente gerenciado)

Para criar um aplicativo Hello World simples, empacotá-lo em uma imagem de contêiner e implantá-la no Cloud Run (totalmente gerenciado), consulte o Guia de início rápido: criar e implantar.

Se você já tiver feito upload de um contêiner de amostra para o Container Registry, consulte Guia de início rápido: implantar um contêiner de amostra predefinido.

Cloud Functions

Consulte Guia de início rápido do Cloud Functions: Python.

App Engine

Consulte os seguintes guias de início rápido do App Engine para Python 3:

Instalar o Google Cloud SDK

Instale a ferramenta de linha de comando gcloud. Consulte Visão geral do gcloud para ver informações conceituais e de instalação sobre a ferramenta.

Caso ainda não tenha usado a ferramenta de linha de comando gcloud, primeiro execute gcloud init para iniciar o diretório do gcloud.

Configurar permissões

Para seguir este guia, você precisa criar um NEG sem servidor e um balanceador de carga HTTP(S) externo em um projeto. É necessário ser proprietário ou editor de um projeto ou ter os seguintes papéis de IAM do Compute Engine:

Tarefa Papel necessário
Criar balanceador de carga e componentes de rede Administrador de rede
Criar e modificar NEGs Administrador da instância do Compute
Criar e modificar certificados SSL Administrador de segurança

Como reservar um endereço IP externo

Agora que seus serviços estão funcionando, configure um endereço IP externo, estático e global que seus clientes possam usar para alcançar seu balanceador de carga.

Console

  1. Acesse a página "Endereços IP externos" no Console do Google Cloud.
    Acessar a página "Endereços IP externos"
  2. Clique em Reservar endereço estático para reservar um endereço IPv4.
  3. Atribua um Nome de example-ip.
  4. Defina o Nível da rede como Premium.
  5. Defina Versão IP como IPv4.
  6. Defina Tipo como Global.
  7. Clique em Reservar.

gcloud

gcloud compute addresses create example-ip \
    --ip-version=IPV4 \
    --global

Anote o endereço IPv4 que foi reservado:

gcloud compute addresses describe example-ip \
    --format="get(address)" \
    --global

Como criar um recurso de certificado SSL

Se você quiser criar um balanceador de carga HTTPS, adicione um recurso de certificado SSL ao front-end do balanceador de carga. Crie um recurso de certificado SSL usando um certificado SSL gerenciado pelo Google ou um certificado SSL autogerenciado.

  • Certificados gerenciados pelo Google. O uso de certificados gerenciados pelo Google é recomendado porque o Google Cloud recebe, gerencia e renova esses certificados automaticamente. Para criar um certificado gerenciado pelo Google, você precisa ter um domínio e os registros DNS desse domínio para que o certificado seja provisionado. Se você ainda não tiver um domínio, será possível conseguir um no Google Domains. Além disso, você precisará atualizar o registro DNS A do domínio para apontar para o endereço IP do balanceador de carga criado na etapa anterior (example-ip). Para instruções detalhadas, consulte Como usar certificados gerenciados pelo Google.

  • Certificados autoassinados. Se você não quiser configurar um domínio agora, use um certificado SSL autoassinado para o teste.

Este exemplo pressupõe que você já criou um recurso de certificado SSL.

Se você quiser testar esse processo sem criar um recurso de certificado SSL (ou um domínio conforme exigido pelos certificados gerenciados pelo Google), ainda será possível usar as instruções nesta página para configurar uma carga HTTP.

Como criar o balanceador de carga HTTP(S) externo

No diagrama a seguir, o balanceador de carga usa um back-end NEG sem servidor para direcionar solicitações para um serviço do Cloud Run (totalmente gerenciado) sem servidor. Neste exemplo, usamos o guia de início rápido do Cloud Run (totalmente gerenciado) para implantar o serviço helloworld-python.

Balanceamento de carga HTTPS simples (clique para ampliar)
Balanceamento de carga HTTPS para um aplicativo do Cloud Run

Como as verificações de integridade não são compatíveis com serviços de back-end com back-ends de NEG sem servidor, você não precisa criar uma regra de firewall que permita verificações de integridade se o balanceador de carga tiver apenas back-ends de NEG sem servidor.

Console

Como nomear o balanceador de carga

  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud.
    Acessar a página "Balanceamento de carga"
  2. Em Balanceamento de carga HTTP(S), clique em Iniciar configuração.
  3. Em Somente voltado para a Internet ou interno, selecione Da Internet para minhas VMs.
  4. Clique em Continuar.
  5. Em Nome do balanceador de carga, digite helloworld-lb.
  6. Mantenha a janela aberta para continuar.

Como configurar os serviços de back-end

  1. Clique em Configuração de back-end.
  2. No menu suspenso Criar ou selecionar um serviço de back-end, mantenha o ponteiro do mouse sobre Serviços de back-end e selecione Criar um serviço de back-end.
  3. Defina o Nome do serviço de back-end como helloworld-backend-service.
  4. Em Tipo de back-end, selecione Grupo de endpoints de rede sem servidor.
  5. No menu suspenso Protocolo, selecione HTTPS.
  6. Em Back-ends, na janela Novo back-end, selecione Criar grupo de endpoints de rede sem servidor.
    1. Em Nome, insira helloworld-serverless-neg.
    2. Em Região, selecione us-central1.
    3. Selecione um Tipo de grupo de endpoints de rede sem servidor. Neste exemplo, usamos um serviço do Cloud Run (totalmente gerenciado). Portanto, selecione Cloud Run.
      1. Selecione Selecionar nome do serviço.
      2. Na lista suspensa Serviço, selecione o serviço helloworld.
    4. Clique em Criar.
  7. Na janela Novo back-end, clique em Concluído.
  8. (Opcional) Selecione Ativar Cloud CDN.
  9. Clique em Criar.

Como configurar regras de host e correspondentes de caminho

As regras de host e os correspondentes de caminho são componentes de configuração do Mapa de URLs de um balanceador de carga de HTTP(S) externo.

  1. Clique em Regras de host e caminho.
  2. Mantenha os hosts e caminhos padrão. Isso significa que todas as solicitações vão para helloworld-backend-service.

Como configurar o front-end

  1. Clique em Configuração de front-end.
  2. Digite um Nome.
  3. Para criar um balanceador de carga HTTPS, é necessário ter um Certificado SSL (gcloud compute ssl-certificates list). Recomendamos o uso de um certificado gerenciado pelo Google, conforme descrito anteriormente. Para configurar um balanceador de carga HTTP(S) externo, preencha os campos como a seguir.

    Verifique se as seguintes opções estão configuradas com estes valores:

    Propriedade Valor: digite um valor ou selecione uma opção conforme especificado
    Protocolo HTTPS
    Nível de serviço da rede Premium
    Versão IP IPv4
    Endereço IP example-ip
    Porta 443
    Certificado Selecione um certificado SSL existente ou crie um novo.

    Para criar um balanceador de carga HTTPS, você precisa ter um recurso de certificado SSL para usar no proxy HTTPS. É possível criar um recurso de certificado SSL usando um certificado SSL gerenciado pelo Google ou um certificado SSL autogerenciado.
    Para criar um certificado gerenciado pelo Google, você precisa ter um domínio. O registro A do domínio precisa ser resolvido para o endereço IP do balanceador de carga (neste exemplo, example-ip). É recomendável usar certificados gerenciados pelo Google porque o Google Cloud recebe, gerencia e renova esses certificados automaticamente. Se você não tiver um domínio, será possível usar um certificado SSL autoassinado para testes.

    Se você quiser testar esse processo sem configurar um recurso de certificado SSL (ou um domínio conforme exigido pelos certificados gerenciados pelo Google), configure um balanceador de carga HTTP.

    Para criar um balanceador de carga HTTP, verifique se as seguintes opções estão configuradas com estes valores:

    Propriedade Valor: digite um valor ou selecione uma opção conforme especificado
    Protocolo HTTP
    Nível de serviço da rede Premium
    Versão IP IPv4
    Endereço IP example-ip
    Porta 80

  4. Clique em Concluído.

Como verificar a configuração

  1. Clique em Analisar e finalizar.
  2. Revise o Back-end, as Regras de host e caminho e o Front-end.
  3. Clique em Criar.
  4. Aguarde o balanceador de carga ser criado.
  5. Clique no nome do balanceador de carga (helloworld-lb).
  6. Anote o endereço IP do balanceador de carga para a próxima tarefa. Ele é referenciado como IP_ADDRESS.

gcloud

  1. Crie um NEG sem servidor para seu serviço do Cloud Run (totalmente gerenciado). Neste exemplo, presumimos que você tenha implantado um serviço do Cloud Run (totalmente gerenciado) chamado helloworld.
    gcloud compute network-endpoint-groups create helloworld-serverless-neg \
        --region=us-central1 \
        --network-endpoint-type=serverless  \
        --cloud-run-service=helloworld
    
    Para criar um NEG para um serviço do App Engine ou uma função do Cloud Functions, consulte o guia de referência gcloud para gcloud compute network-endpoint-groups create.
  2. Crie um serviço de back-end e adicione o NEG sem servidor ao serviço de back-end:
    gcloud compute backend-services create helloworld-backend-service \
        --global
    
    gcloud compute backend-services add-backend helloworld-backend-service \
        --global \
        --network-endpoint-group=helloworld-serverless-neg \
        --network-endpoint-group-region=us-central1
    
  3. Crie um mapa de URL para encaminhar solicitações recebidas para o serviço de back-end helloworld-backend-service:
    gcloud compute url-maps create helloworld-url-map \
        --default-service helloworld-backend-service
    
    Este exemplo de mapa de URL segmenta apenas um serviço de back-end que representa um único serviço do Cloud Run (totalmente gerenciado). Portanto, não precisamos configurar regras de host ou correspondências de caminho. Se você tiver mais de um serviço de back-end, poderá usar regras de host para direcionar solicitações para serviços diferentes com base no nome do host e configurar correspondências de caminho para direcionar solicitações para serviços diferentes com base no caminho da solicitação.
  4. Para criar um balanceador de carga HTTPS, você precisa ter um recurso de certificado SSL para usar no proxy HTTPS. É possível criar um recurso de certificado SSL usando um certificado SSL gerenciado pelo Google ou um certificado SSL autogerenciado. O uso de certificados gerenciados pelo Google é recomendado porque o Google Cloud recebe, gerencia e renova esses certificados automaticamente.
    Para criar um certificado gerenciado pelo Google, você precisa ter um domínio. Se você não tiver um domínio, será possível usar um certificado SSL autoassinado para testes.

    Para criar um recurso de certificado SSL gerenciado pelo Google chamado www-ssl-cert:
    gcloud compute ssl-certificates create www-ssl-cert \
        --domains [DOMAIN]
    
    Para criar um recurso de certificado SSL autogerenciado chamado www-ssl-cert:
    gcloud compute ssl-certificates create www-ssl-cert \
        --certificate [CRT_FILE_PATH] \
        --private-key [KEY_FILE_PATH]
    
  5. Crie um proxy de destino HTTP(S) para encaminhar solicitações ao mapa de URLs.

    Para um balanceador de carga HTTP, crie um proxy de destino HTTP:
      gcloud compute target-http-proxies create helloworld-http-proxy \
        --url-map=helloworld-url-map
      
    Para um balanceador de carga HTTPS, crie um proxy de destino HTTPS. O proxy é a parte do balanceador de carga onde é armazenado o certificado SSL para balanceamento de carga HTTPS. Portanto, nesta etapa, também é possível carregar o certificado.
    gcloud compute target-https-proxies create helloworld-https-proxy \
        --ssl-certificates=www-ssl-cert \
        --url-map=helloworld-url-map
    
  6. Crie uma regra de encaminhamento global para encaminhar as solicitações recebidas para o proxy.

    Para um balanceador de carga HTTP:
    gcloud compute forwarding-rules create http-forwarding-rule \
        --address=example-ip \
        --target-http-proxy=helloworld-http-proxy \
        --global \
        --ports=80
    
    Para um balanceador de carga HTTPS:
    gcloud compute forwarding-rules create https-forwarding-rule \
        --address=example-ip \
        --target-https-proxy=helloworld-https-proxy \
        --global \
        --ports=443
    

Como atualizar os registros DNS do seu domínio para usar o endereço IP do balanceador de carga

Se você ainda não tiver feito isso, atualize o registro A de DNS do seu domínio para apontar para o endereço IP do balanceador de carga de modo que o tráfego enviado para o Cloud Run (totalmente gerenciado) ou para os URLs de domínio personalizado do App Engine seja roteado pelo balanceador de carga.

Por exemplo, se você tiver um domínio personalizado chamado example.com e todos os serviços do Cloud Run (totalmente gerenciados) forem mapeados para esse domínio, atualize o registro A de DNS para que example.com aponte para o endereço IP do balanceador de carga.

Antes de atualizar os registros DNS, teste a configuração localmente forçando a resolução de DNS local do domínio personalizado para o endereço IP do balanceador de carga. Para testar localmente, modifique o arquivo /etc/hosts/ na máquina local para apontar example.com para o endereço IP do balanceador de carga ou use a sinalização curl --resolve para forçar curl a usar o IP do balanceador de carga para a solicitação.

Quando o registro DNS de example.com é resolvido para o endereço IP do balanceador de carga HTTP(S), as solicitações enviadas para example.com começam a ser roteadas por meio do balanceador de carga. O balanceador de carga os envia ao serviço de back-end relevante de acordo com o mapa de URL. Além disso, se o serviço de back-end estiver configurado com uma máscara de URL, o NEG sem servidor usará a máscara para encaminhar a solicitação para o serviço apropriado do Cloud Run (totalmente gerenciado), do Cloud Functions ou do App Engine.

Se você usa certificados gerenciados pelo Google, a migração de um serviço existente para um balanceador de carga HTTP(S) externo pode gerar inatividade, geralmente menos de uma hora. Isso ocorre porque o certificado SSL do balanceador de carga HTTP(S) externo não será provisionado até que você atualize os registros DNS para apontar para o endereço IP do balanceador de carga.

Como testar o balanceador de carga HTTP(S) externo

Agora que você configurou o balanceador de carga, é possível começar a enviar tráfego para o endereço IP dele. Se você tiver configurado um domínio, também será possível enviar tráfego para o nome do domínio. No entanto, a propagação de DNS pode levar algum tempo para ser concluída. Portanto, é possível começar usando o endereço IP para o teste.

  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud.
    Acessar a página "Balanceamento de carga"
  2. Clique no balanceador de carga que você acabou de criar.
  3. Anote o Endereço IP do balanceador de carga.
  4. Se você tiver criado um balanceador de carga HTTP, será possível testar seu balanceador de carga usando um navegador da Web acessando http://IP_ADDRESS. Substitua IP_ADDRESS pelo endereço IP do balanceador de carga. Você será direcionado para a página inicial do serviço helloworld.

    Se você tiver criado um balanceador de carga HTTPS, será possível testar seu balanceador de carga usando um navegador da Web acessando https://IP_ADDRESS. Substitua IP_ADDRESS pelo endereço IP do balanceador de carga. Você será direcionado para a página inicial do serviço helloworld.

    Se isso não funcionar e você estiver usando um certificado gerenciado pelo Google, confirme se o status do recurso do certificado é "ATIVO". Para mais informações, consulte Status do recurso de certificado SSL gerenciado pelo Google.

    Caso você tenha usado um certificado autoassinado durante o teste, o navegador exibirá um aviso. Você precisa permitir que o navegador aceite um certificado autoassinado. Clique no aviso para ver a página real.

    Se preferir, use o curl na linha de comando da sua máquina local. Substitua IP_ADDRESS pelo endereço IPv4 do balanceador de carga: Você será direcionado para a página inicial do serviço helloworld.

    Se você estiver usando um certificado gerenciado pelo Google, teste o domínio que aponta para o endereço IP do balanceador de carga. Exemplo:

    curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS:443
    

    Se você estiver usando um certificado autoassinado, também precisará especificar a sinalização -k. A opção curl -k permite que o curl funcione se você tiver um certificado autoassinado. Use o parâmetro -k somente para testar seu próprio site. Em circunstâncias normais, um certificado válido é uma medida de segurança importante. Não ignore os avisos sobre certificados.

  5. (Opcional) Se você estiver usando um domínio personalizado, talvez seja necessário aguardar para que as configurações de DNS atualizadas sejam propagadas. Em seguida, teste seu domínio (por exemplo, https://test.example.com) no navegador da Web. Você será direcionado para a página inicial do serviço helloworld.

Outras opções de configuração

Nesta seção, o exemplo é detalhado para fornecer outras opções de configuração. Todas as tarefas são opcionais. É possível realizá-las em qualquer ordem.

Como configurar o balanceamento de carga multirregional

No exemplo descrito acima, temos apenas um serviço do Cloud Run (totalmente gerenciado) que serve como back-end. Como o NEG sem servidor só pode apontar para um endpoint por vez, o balanceamento de carga não é realmente executado. O balanceador de carga HTTP(S) externo exibe apenas como o front-end e envia o tráfego via proxy para o endpoint do aplicativo helloworld especificado. No entanto, talvez você queira disponibilizar o aplicativo Cloud Run (totalmente gerenciado) de mais de uma região para melhorar a disponibilidade do serviço e a latência para os usuários.

Se um serviço de back-end contiver vários NEGs, o balanceador de carga equilibrará o tráfego encaminhando solicitações para o NEG sem servidor na região disponível mais próxima. No entanto, os serviços de back-end só podem conter um NEG sem servidor por região. Para disponibilizar o serviço do Cloud Run (totalmente gerenciado) em várias regiões, você precisará configurar o roteamento entre regiões. Você precisará usar um único esquema de URL que funcione em qualquer lugar do mundo, mas que exiba solicitações de usuários da região mais próxima do usuário. Se a região mais próxima não estiver disponível ou tiver pouca capacidade, a solicitação será encaminhada para uma região diferente.

Para configurar a exibição multirregional, você precisará usar o nível de rede Premium para garantir que todas as implantações regionais do Cloud Run (totalmente gerenciadas) sejam compatíveis e estejam prontas para veicular o tráfego de qualquer região.

Para configurar um balanceador de carga multirregional:

  1. Configure dois serviços do Cloud Run (totalmente gerenciados) em diferentes regiões. Vamos supor que você tenha implantado dois serviços do Cloud Run (totalmente gerenciados): um para uma região na Europa e outro para uma região nos EUA.
  2. Crie um balanceador de carga HTTP(S) externo com a seguinte configuração:
    1. Configure um serviço de back-end global com dois NEGs sem servidor.
      1. Crie o primeiro NEG na mesma região que o serviço do Cloud Run implantado na Europa.
      2. Crie o segundo NEG na mesma região do serviço do Cloud Run implantado nos EUA.
    2. Defina sua configuração de front-end com o nível de rede Premium.

O restante da configuração pode ser o mesmo descrito anteriormente. A configuração resultante será semelhante a esta:

Distribuição de tráfego para aplicativos sem servidor (clique para ampliar)
Roteamento multirregional para aplicativos sem servidor (com failover)

Como configurar o roteamento regional

Um motivo comum para exibir aplicativos de várias regiões é atender aos requisitos de localidade de dados. Por exemplo, é possível garantir que as solicitações feitas por usuários europeus sejam sempre exibidas de uma região localizada na Europa. Para configurar isso, você precisa de um esquema com URLs separados para usuários da UE e usuários não pertencentes à UE, além de direcionar os usuários da UE para os URLs da UE.

Nesse cenário, você usa o mapa de URLs para encaminhar solicitações de URLs específicos para as regiões correspondentes. Nessa configuração, as solicitações feitas para uma região nunca são entregues a uma região diferente. Isso fornece isolamento entre as regiões. Por outro lado, quando uma região falha, as solicitações não são roteadas para uma região diferente. Portanto, essa configuração não aumenta a disponibilidade do serviço.

Para configurar o roteamento regional, você precisará usar o nível de rede Premium para combinar diferentes regiões em uma única regra de encaminhamento.

Para configurar um balanceador de carga com roteamento regional:

  1. Configure dois serviços do Cloud Run (totalmente gerenciados) em diferentes regiões. Vamos supor que você tenha implantado dois serviços do Cloud Run (totalmente gerenciados): hello-world-eu em uma região na Europa e hello-world-us em uma região nos EUA.
  2. Crie um balanceador de carga HTTP(S) externo com a seguinte configuração:
    1. Configure um serviço de back-end com um NEG sem servidor na Europa. O NEG sem servidor precisa ser criado na mesma região do serviço do Cloud Run (totalmente gerenciado) implantado na Europa.
    2. Configure um segundo serviço de back-end com outro NEG sem servidor nos EUA. Esse NEG sem servidor precisa ser criado na mesma região do serviço do Cloud Run implantado nos EUA.
    3. Configure seu mapa de URL com as regras de host e caminho apropriadas para que um conjunto de URLs seja encaminhado para o serviço de back-end europeu, enquanto todas as solicitações serão encaminhadas para o serviço de back-end dos EUA.
    4. Defina sua configuração de front-end com o nível de rede Premium.

O restante da configuração pode ser o mesmo descrito anteriormente. A configuração resultante será semelhante a esta:

Distribuição de tráfego para aplicativos sem servidor (clique para ampliar)
Roteamento regional para aplicativos sem servidor (sem failover)

Como usar uma máscara de URL

Ao criar um NEG sem servidor, em vez de selecionar um serviço específico do Cloud Run (totalmente gerenciado), é possível usar uma máscara de URL para apontar para vários serviços exibidos no mesmo domínio. Uma máscara de URL é um modelo do esquema de URL. O NEG sem servidor usará esse modelo para extrair o nome do serviço do URL da solicitação recebida e mapear a solicitação para o serviço apropriado.

As máscaras de URL são particularmente úteis se o serviço estiver mapeado para um domínio personalizado em vez do endereço padrão fornecido pelo Google Cloud para o serviço implantado. Uma máscara de URL permite segmentar vários serviços e versões com uma única regra, mesmo quando seu aplicativo usa um padrão personalizado do URL.

Se você ainda não tiver feito isso, leia Visão geral do NEGS sem servidor: máscaras de URL.

Como criar uma máscara de URL

Para criar uma máscara de URL para o balanceador de carga, comece com o URL do serviço. Neste exemplo, usaremos um aplicativo de amostra sem servidor em execução em https://example.com/login. Esse é o URL em que o serviço login do aplicativo será exibido.

  1. Remova o http ou o https do URL. Você ainda tem example.com/login.
  2. Substitua o nome do serviço por um marcador para a máscara de URL.
    1. Cloud Run (totalmente gerenciado): substitua o nome do serviço do Cloud Run (totalmente gerenciado) pelo marcador <service>. Se o serviço do Cloud Run (totalmente gerenciado) tiver uma tag associada a ele, substitua o nome da tag pelo marcador <tag>. Neste exemplo, a máscara de URL restante é example.com/<service>.
    2. Cloud Functions: substitua o nome da função pelo marcador <function>. Neste exemplo, a máscara de URL restante é <function>.example.com.
    3. App Engine: substitua o nome do serviço pelo marcador <service>. Se o serviço tiver uma versão associada a ele, substitua a versão pelo marcador <version>. Neste exemplo, a máscara de URL restante é example.com/<service>.
  3. (Opcional) Se o nome do serviço (ou função, versão ou tag) puder ser extraído da parte do caminho do URL, o domínio poderá ser omitido. A parte do caminho da máscara de URL é diferenciada pelo primeiro caractere /. Se um / não estiver presente na máscara de URL, a máscara será entendida para representar apenas o host. Portanto, para este exemplo, a máscara de URL pode ser reduzida para /<service> ou /<function>.

    Da mesma forma, se o nome do serviço puder ser extraído da parte do host do URL, será possível omitir o caminho completamente da máscara de URL.

    Também é possível omitir todos os componentes de host ou subdomínio que vêm antes do primeiro marcador, bem como qualquer componente de caminho que vem depois do último marcador. Nesses casos, o marcador captura as informações necessárias para o componente.

Veja mais alguns exemplos que demonstram essas regras:

Cloud Run

Nesta tabela, pressupomos que você tenha um domínio personalizado chamado example.com e que todos os serviços do Cloud Run (totalmente gerenciados) estejam sendo mapeados para esse domínio.

Serviço, nome da tag URL de domínio personalizado do Cloud Run (totalmente gerenciado) Máscara de URL
serviço: login https://login-home.example.com/web <service>-home.example.com
serviço: login https://example.com/login/web example.com/<service> ou /<service>
serviço: login, tag: test https://test.login.example.com/web <tag>.<service>.example.com
serviço: login, tag: test https://example.com/home/login/test example.com/home/<service>/<tag> ou /home/<service>/<tag>
serviço: login, tag: test https://test.example.com/home/login/web <tag>.example.com/home/<service>

Cloud Functions

Nesta tabela, pressupomos que você tenha um domínio personalizado chamado example.com e que todos os serviços do Cloud Functions estejam sendo mapeados para esse domínio.

Nome da função URL de domínio personalizado do Cloud Functions Máscara de URL
Login https://example.com/login /<function>
Login https://example.com/home/login /home/<function>
Login https://login.example.com <function>.example.com
Login https://login.home.example.com <function>.home.example.com

App Engine

Nesta tabela, pressupomos que você tenha um domínio personalizado chamado example.com e que todos os seus serviços do App Engine estejam sendo mapeados para esse domínio.

Nome do serviço, versão URL de domínio personalizado do App Engine Máscara de URL
serviço: login https://login.example.com/web <service>.example.com
serviço: login https://example.com/home/login/web example.com/home/<service>, or /home/<service>
serviço: login, versão: test https://test.example.com/login/web <version>.example.com/<service>
serviço: login, versão: test https://example.com/login/test example.com/<service>/<version>

Como criar um NEG sem servidor com uma máscara de URL

Console

Para um novo balanceador de carga, é possível usar o mesmo processo completo conforme descrito anteriormente neste tópico. Ao configurar o serviço de back-end, em vez de selecionar um serviço específico, insira uma máscara de URL.

Se você tiver um balanceador de carga, poderá editar a configuração do back-end e fazer com que o ponto de NEG sem servidor acesse uma máscara de URL, em vez de um serviço específico.

Para adicionar um NEG sem base baseado em máscara de URL a um serviço de back-end atual:

  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud.
    Acessar a página "Balanceamento de carga"
  2. Clique no nome do balanceador de carga em que está o serviço de back-end a ser editado.
  3. Na página Detalhes do balanceador de carga, clique em Editar .
  4. Na página Editar balanceador de carga HTTP(S), clique em Configuração de back-end.
  5. Na página Configuração de back-end, clique em Editar no serviço de back-end que você quer modificar.
  6. Clique em Adicionar back-end.
  7. Selecione Criar grupo de endpoints da rede sem servidor.
    1. Em Nome, insira helloworld-serverless-neg.
    2. Em Região, selecione us-central1.
    3. Em Tipo de grupo de endpoints de rede sem servidor, selecione a plataforma em que os aplicativos (ou serviços ou funções) sem servidor foram criados.
      1. Selecione Usar máscara de URL.
      2. Insira uma máscara de URL. Para receber instruções sobre como criar uma máscara de URL, consulte Como criar uma máscara de URL.
      3. Clique em Criar.
  8. Na janela Novo back-end, clique em Concluído.
  9. Clique em Atualizar.

gcloud: Cloud Run

Para criar um NEG sem servidor com uma máscara de URL de amostra de example.com/<service>:

gcloud compute network-endpoint-groups create helloworld-neg-mask \
    --region=us-central1 \
    --network-endpoint-type=serverless \
    --cloud-run-url-mask="example.com/<service>"

gcloud: Cloud Functions

Para criar um NEG sem servidor com uma máscara de URL de amostra de example.com/<function>:

gcloud compute network-endpoint-groups create helloworld-neg-mask \
    --region=us-central1 \
    --network-endpoint-type=serverless \
    --cloud-function-url-mask="example.com/<function>"

gcloud: App Engine

Para criar um NEG sem servidor com uma máscara de URL de amostra de example.com/<service>:

gcloud compute network-endpoint-groups create helloworld-neg-mask \
    --region=us-central1 \
    --network-endpoint-type=serverless \
    --app-engine-url-mask="example.com/<service>"

Para saber como o balanceador de carga lida com problemas com incompatibilidades de máscara de URL, consulte Solução de problemas com NEGs sem servidor.

Como ativar a Cloud CDN

Ativar o Cloud CDN para o serviço Cloud Run (totalmente gerenciado) permite otimizar o envio de conteúdo armazenando-o em cache próximo aos usuários.

É possível ativar o Cloud CDN no serviço de back-end do balanceador de carga HTTP(S) externo usando o comando gcloud compute backend-services update.

  gcloud compute backend-services update helloworld-backend-service \
    --enable-cdn \
    --global

O Cloud CDN é compatível com serviços de back-end com back-ends do Cloud Run (totalmente gerenciados), do Cloud Functions e do App Engine.

Como ativar o Google Cloud Armor

O Google Cloud Armor é um produto de segurança que fornece proteção contra ataques distribuídos de negação de serviço (DDoS, na sigla em inglês) a todos os balanceadores de carga de proxy GCLB. O Google Cloud Armor também fornece políticas de segurança configuráveis para serviços acessados por meio de um balanceador de carga HTTP(S) externo. Para saber mais sobre as políticas de segurança do Google Cloud Armor para o balanceamento de carga HTTP(S), consulte Visão geral da política de segurança do Google Cloud Armor.

Embora o Google Cloud Armor possa ser configurado para serviços de back-end com back-ends do Cloud Run (totalmente gerenciados), do Cloud Functions e do App Engine, existem algumas limitações associadas a esse recurso, especialmente com o Cloud Run (totalmente gerenciado) e o App Engine. Os usuários que têm acesso aos URLs padrão atribuídos a esses serviços pelo Google Cloud podem ignorar o balanceador de carga e acessar diretamente os URLs de serviço, burlando as políticas de segurança configuradas do Google Cloud Armor.

Se você estiver usando o Cloud Functions, reduza-o usando a configuração de entrada internal-and-gclb para garantir que as solicitações enviadas para URLs cloudfunctions.net padrão ou quaisquer outros domínios personalizados configurados com o Cloud Functions sejam bloqueados.

Como excluir um NEG sem servidor

Um grupo de endpoints de rede não pode ser excluído se estiver conectado a um serviço de back-end. Antes de excluir um NEG, verifique se ele está separado do serviço de back-end.

Para remover um NEG sem servidor de um serviço de back-end, especifique a região em que o NEG foi criado. Você também precisa especificar a sinalização --global porque helloworld-backend-service é um recurso global.

gcloud compute backend-services remove-backend helloworld-backend-service \
    --network-endpoint-group=helloworld-serverless-neg \
    --network-endpoint-group-region=us-central1 \
    --global

Para excluir o NEG sem servidor:

gcloud compute network-endpoint-groups delete helloworld-serverless-neg \
    --region=us-central1

Observe que a exclusão de um balanceador de carga com um back-end de NEG sem servidor excluirá somente o serviço de back-end associado ao balanceador de carga. Ele não exclui automaticamente o NEG sem servidor. Você precisará excluir manualmente o NEG sem servidor, conforme mostrado nesta seção.

A seguir