Configurar o Cloud Run, o Cloud Functions ou o App Engine

Nesta página, mostramos como criar um balanceador de carga de aplicativo 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 Run functions
  • Cloud Run

A integração de balanceadores de carga aplicativo externos com o gateway de API permite que os back-ends sem servidor aproveitem todos os recursos fornecidos pelo Cloud Load Balancing. Para configurar um balanceador de carga de aplicativo externo para rotear o tráfego para um gateway de API, consulte Noções básicas sobre balanceador de carga de aplicativo externo para gateway de API. O suporte do balanceador de carga de aplicativo externo para o gateway de API está em visualização.

Os NEGs sem servidor permitem usar aplicativos sem servidor do Google Cloud com balanceadores de carga de aplicativo externos. 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.

Para saber mais sobre NEGs sem servidor, consulte a visão geral de NEGs sem servidor.

Antes de começar

  1. Implante um serviço do App Engine, do Cloud Functions ou do Cloud Run.
  2. Instale a CLI do Google Cloud, caso ainda não tenha feito isso.
  3. Configurar permissões.
  4. Adicione um recurso de certificado SSL.

Implantar um serviço do App Engine, do Cloud Functions ou do Cloud Run

As instruções nesta página presumem que você já tem um o Cloud Run, as funções do Cloud Run ou do App Engine em execução.

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

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

Para criar um aplicativo Hello World simples, empacotá-lo em uma imagem de contêiner e implantá-la no Cloud Run, 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.

Funções do Cloud Run

Consulte Funções do Cloud Run: guia de início rápido do Python.

App Engine

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

Instale a CLI do Google Cloud

Instale a CLI do Google Cloud. 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 CLI , primeiro execute gcloud init para inicializar 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

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. No console do Google Cloud, acesse a página Endereços IP externos.

    Acessar Endereços IP externos

  2. Clique em Reservar endereço IP estático externo.

  3. Em Nome, insira example-ip.

  4. Em Nível de serviço de rede, selecione Premium.

  5. Em Versão IP, selecione IPv4.

  6. Em Tipo, selecione Global.

  7. Clique em Reservar.

gcloud

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

Anote o endereço IPv4 que foi reservado:

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

É possível criar um recurso de certificado SSL

Para criar um balanceador de carga HTTPS, é necessário adicionar 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. Além disso, você precisa 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 chaves de criptografia certificados do Google Cloud.

  • 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.

Criar o balanceador de carga

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 sem servidor. Neste exemplo, usamos o guia de início rápido do Cloud Run Python para implantar um serviço do Cloud Run.

Arquitetura do balanceador de carga de aplicativo externo para um aplicativo do Cloud Run.
Arquitetura do balanceador de carga de aplicativo externo para um aplicativo do Cloud Run (clique para ampliar).

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

Iniciar a configuração

  1. No console do Google Cloud, acesse a página Balanceamento de carga.

    Acessar o "Balanceamento de carga"

  2. Clique em Criar balanceador de carga.
  3. Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicativo (HTTP/HTTPS) e clique em Próxima.
  4. Em Voltado ao público ou interno, selecione Voltado ao público (externo) e clique em Próxima.
  5. Em Implantação global ou de região única, selecione Melhor para cargas de trabalho globais e clique em Próxima.
  6. Em Geração do balanceador de carga, selecione Balanceador de carga de aplicativo clássico e clique em Próxima.
  7. Clique em Configurar.

Configuração básica

  1. Digite serverless-lb como o nome do balanceador de carga.
  2. Mantenha a janela aberta para continuar.

Configuração de front-end

  1. Clique em Configuração de front-end.
  2. Em Nome, 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.

  4. Para configurar um balanceador de carga de aplicativo externo, preencha os campos da seguinte maneira.

    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.
    Opcional: ativar o redirecionamento de HTTP para HTTPS Use essa caixa de seleção para ativar os redirecionamentos de HTTP para HTTPS.

    Ativar esta caixa de seleção cria um balanceador de carga HTTP parcial que utiliza o mesmo endereço IP que o balanceador de carga HTTPS e redireciona solicitações HTTP para o front-end HTTPS do balanceador de carga.

    Essa caixa de seleção só poderá ser marcada quando o protocolo HTTPS estiver selecionado e um endereço IP reservado for utilizado.

  5. Clique em Concluído.

Configuração de back-end

  1. Clique em Configuração de back-end.
  2. Na lista Serviços e buckets de back-end, clique em Criar um serviço de back-end.
  3. Em Nome, digite um nome.
  4. Em Tipo de back-end, selecione Grupo de endpoints de rede sem servidor.
  5. Deixe o Protocolo inalterado. Este parâmetro é ignorado.
  6. Na seção Back-ends, em Novo back-end, selecione Criar grupo de endpoints de rede sem servidor.
  7. Em Nome, digite um nome.
  8. Clique em Criar.
  9. Na seção Novo back-end, clique em Concluído.
  10. Selecione Ativar Cloud CDN.
  11. Opcional: modifique as configurações do modo de cache e TTL.
  12. Clique em Criar.

Regras de roteamento

As regras de roteamento determinam como o tráfego é direcionado. Para configurar o roteamento, configure regras de host e correspondências de caminho, que são componentes de configuração do mapa de URLs de um balanceador de carga de aplicativo externo.

  1. Clique em Regras de host e caminho.

  2. Mantenha os hosts e caminhos padrão. Neste exemplo, todas as solicitações vão para o serviço de back-end criado na etapa anterior.

Como verificar a configuração

  1. Clique em Analisar e finalizar.
  2. Revise todas as configurações.
  3. Opcional: clique em Código equivalente para conferir a solicitação de API REST que será usada para criar o balanceador de carga.
  4. Clique em Criar.
  5. Aguarde o balanceador de carga ser criado.
  6. Clique no nome do balanceador de carga (serverless-lb).
  7. 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 app sem servidor. Para mais opções, consulte o guia de referência da gcloud para gcloud compute network-endpoint-groups create.
  2. Crie um serviço de back-end.
       gcloud compute backend-services create BACKEND_SERVICE_NAME \
           --load-balancing-scheme=LOAD_BALANCING_SCHEME \
           --global \
           --enable-cdn \
           --cache-mode=CACHE_MODE \
           --custom-response-header='Cache-Status: {cdn_cache_status}' \
           --custom-response-header='Cache-ID: {cdn_cache_id}'
       

    Defina o modo de cache substituindo CACHE_MODE por um dos seguintes itens:

    • CACHE_All_STATIC (padrão): armazena automaticamente o conteúdo estático em cache.
    • USE_ORIGIN_HEADERS: exige a origem para definir cabeçalhos de cache válidos a fim de armazenar conteúdo em cache.
    • FORCE_CACHE_ALL: armazena em cache todo o conteúdo, ignorando todas as diretivas private, no-store ou no-cache em cabeçalhos de resposta Cache-Control.

    Para informações sobre as diretivas de cache que o Cloud CDN entende e o que não é armazenado em cache pelo Cloud CDN, consulte Conteúdo armazenável em cache e Conteúdo não armazenável em cache.

  3. Adicione o NEG sem servidor como um back-end ao serviço de back-end:
       gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
           --global \
           --network-endpoint-group=SERVERLESS_NEG_NAME \
           --network-endpoint-group-region=us-central1
       
  4. Crie um mapa de URL para encaminhar solicitações recebidas para o serviço de back-end :
       gcloud compute url-maps create URL_MAP_NAME \
           --default-service BACKEND_SERVICE_NAME
       

    Este mapa de URL de exemplo segmenta apenas um serviço de back-end que representa um único app sem servidor. Portanto, não é necessário 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.

  5. 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:
       gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
           --domains DOMAIN
       
    Para criar um recurso de certificado SSL autogerenciado:
       gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
           --certificate CRT_FILE_PATH \
           --private-key KEY_FILE_PATH
       
  6. Crie um proxy de destino HTTP(S) para encaminhar solicitações ao mapa de URLs.

    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 carregue também o certificado.

       gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
          --ssl-certificates=SSL_CERTIFICATE_NAME \
          --url-map=URL_MAP_NAME
       
  7. Crie uma regra de encaminhamento para encaminhar as solicitações recebidas para o proxy.

    Para um balanceador de carga HTTPS:

       gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
           --load-balancing-scheme=EXTERNAL \
           --network-tier=PREMIUM \
           --address=example-ip \
           --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
           --global \
           --ports=443
       

Como conectar seu domínio ao balanceador de carga

Após a criação do balanceador de carga, anote o endereço IP associado a ele, por exemplo, 30.90.80.100. Para apontar seu domínio para o balanceador de carga, crie um registro A usando o serviço de registro de domínio. Se você adicionou vários domínios ao certificado SSL, adicione um registro A para cada um deles, todos apontando para o endereço IP do balanceador de carga. Por exemplo, para criar registros A para www.example.com e example.com, use o seguinte:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Se você usa o Cloud DNS como provedor de DNS, consulte Adicionar, modificar e excluir registros.

Testar o balanceador de carga

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. No Console do Google Cloud, acesse a página Balanceamento de carga.

    Acessar o "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. Para um balanceador de carga HTTPS, é 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.

  5. Para verificar as respostas do cache, use o curl na linha de comando da sua máquina local. Substitua IP_ADDRESS pelo endereço IPv4 do balanceador de carga:

    curl -v -o/dev/null https://IP_ADDRESS
    

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

    curl -v -o/dev/null -k -s 'https://DOMAIN:443' --connect-to DOMAIN: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 de certificados.

    A saída precisa conter os cabeçalhos personalizados Cache-ID e Cache-Status que você configurou para indicar se a resposta foi veiculada a partir do cache:

    HTTP/2 200
    cache-status: hit
    cache-id: SEA-b9fa975e
    

    A saída contém os cabeçalhos de resposta que indicam que houve uma ocorrência em cache, o que significa que o recurso estático no app sem servidor foi veiculado ao usuário de um cache de ponta do Cloud CDN.

    O cabeçalho cache-status informa o valor disabled para as respostas que não são armazenadas em cache no Cloud CDN. Para respostas em cache, o valor do cabeçalho cache-status é hit, miss ou revalidated.

Como desativar a Cloud CDN

Console

Desative o Cloud CDN para um único serviço de back-end

  1. No console do Google Cloud, acesse a página do Cloud CDN.

    Acessar o Cloud CDN

  2. No lado direito da linha de origem, clique emMenu e selecione Editar.

  3. Desmarque as caixas de seleção dos serviços de back-end que você não quer mais que usem o Cloud CDN.

  4. Clique em Atualizar.

Remova o Cloud CDN de todos os serviços de back-end de uma origem

  1. No console do Google Cloud, acesse a página do Cloud CDN.

    Acessar o Cloud CDN

  2. No lado direito da linha de origem, clique em Menu e selecione Remover.

  3. Para confirmar, clique em Remover.

gcloud

gcloud compute backend-services update BACKEND_SERVICE_NAME 
--no-enable-cdn

A desativação da Cloud CDN não invalida ou limpa os caches. Se desativá-la e ativá-la de novo, a maior parte do seu conteúdo em cache talvez ainda esteja armazenada. Para impedir que o conteúdo seja usado pelos caches, é necessário invalidar esse conteúdo.

A seguir