Configurar um balanceador de carga de aplicativo externo regional com buckets do Cloud Storage em um ambiente de VPC compartilhada

Neste documento, mostramos duas configurações de amostra para configurar um balanceador de carga de aplicativo externo regional em um ambiente de VPC compartilhada com buckets do Cloud Storage:

  • O primeiro exemplo cria todos os componentes e back-ends do balanceador de carga no projeto de serviço.
  • O segundo exemplo cria os componentes de front-end e o mapa de URL do balanceador de carga em um projeto de serviço, enquanto o bucket de back-end e os buckets do Cloud Storage do balanceador de carga são criados em um projeto de serviço diferente.

Os dois exemplos exigem a mesma configuração inicial para conceder as funções necessárias e configurar uma VPC compartilhada antes de começar a criar balanceadores de carga.

Além das configurações de exemplo mencionadas neste documento, também é possível configurar uma implantação de VPC compartilhada em que o front-end e o mapa de URL do balanceador de carga são criados no projeto host, e os buckets de back-end, junto com os buckets do Cloud Storage, são criados em um projeto de serviço. Para mais informações sobre outras arquiteturas de VPC compartilhada válidas, consulte Arquiteturas de VPC compartilhada.

Se você não quiser usar uma rede VPC compartilhada, consulte Configurar um balanceador de carga de aplicativo externo regional com buckets do Cloud Storage.

Antes de começar

Certifique-se de que sua configuração atenda aos seguintes pré-requisitos.

Criar projetos do Google Cloud

Crie Google Cloud projetos para um host e dois projetos de serviço.

Funções exigidas

Para ter as permissões necessárias para configurar um balanceador de carga de aplicativo regional externo em um ambiente de VPC compartilhada com buckets do Cloud Storage, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Configurar um ambiente de VPC compartilhada

Conclua as etapas a seguir no projeto host para configurar um ambiente de VPC compartilhada:

  1. Configure uma rede VPC de modo personalizado.
  2. Configure uma sub-rede somente proxy.
  3. Configure uma VPC compartilhada no projeto host.

As etapas nesta seção não precisam ser realizadas sempre que você quiser criar um novo balanceador de carga. No entanto, é preciso garantir que você tenha acesso aos recursos descritos aqui antes de continuar criando o balanceador de carga.

Este exemplo usa a seguinte rede VPC, região e sub-rede somente proxy:

  • Rede. Uma rede VPC de modo personalizado denominada lb-network.

  • Sub-rede para proxies Envoy. Uma sub-rede chamada proxy-only-subnet-us na região us-east1 usa 10.129.0.0/23 como o intervalo de IP principal.

Configurar uma rede VPC de modo personalizado

Console

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

    Acessar redes VPC

  2. Clique em Criar rede VPC.

  3. Em Nome, insira lb-network.

  4. Clique em Criar.

gcloud

  1. Crie uma rede VPC personalizada, chamada lb-network, com o comando gcloud compute networks create.

      gcloud compute networks create lb-network \
          --subnet-mode=custom \
          --project=HOST_PROJECT_ID
    

    Substitua HOST_PROJECT_ID pelo Google Cloud ID do projeto atribuído ao projeto que está ativado como um projeto host em um ambiente de VPC compartilhada.

Configurar uma sub-rede somente proxy

Uma sub-rede somente proxy fornece um conjunto de endereços IP que o Google Cloud usa para executar proxies Envoy em seu nome. Os proxies encerram as conexões do cliente e criam novas conexões com os back-ends.

Essa sub-rede somente proxy é usada por todos os balanceadores de carga regionais baseados no Envoy que estão na mesma região que a rede VPC. Só pode haver uma sub-rede somente proxy ativa para uma determinada finalidade, por região e por rede.

Console

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

    Acessar redes VPC

  2. Clique no nome da rede VPC que você criou.

  3. Na guia Sub-rede, clique em Adicionar sub-rede.

  4. Digite as seguintes informações:

    • Nome: proxy-only-subnet-us
    • Região: us-east1
    • Finalidade: Proxy gerenciado regional
    • Intervalo de endereços IP: 10.129.0.0/23
  5. Clique em Add.

gcloud

  1. Crie uma sub-rede somente proxy na região us-east1 com o comando gcloud compute networks subnets create.

    gcloud compute networks subnets create proxy-only-subnet-us \
        --purpose=REGIONAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=us-east1 \
        --network=lb-network \
        --range=10.129.0.0/23 \
        --project=HOST_PROJECT_ID
    

    Substitua HOST_PROJECT_ID pelo ID do projetoGoogle Cloud atribuído ao projeto host.

Configurar uma VPC compartilhada no projeto host

É possível ativar um projeto host da VPC compartilhada e anexar projetos de serviço a ele para que os projetos de serviço possam usar a rede VPC compartilhada. Para configurar uma VPC compartilhada no projeto host, consulte as seguintes páginas:

Depois de concluir as etapas anteriores, você poderá seguir uma das seguintes configurações:

Configurar um balanceador de carga no projeto de serviço

Este exemplo cria um balanceador de carga de aplicativo externo regional em que todos os componentes de balanceamento de carga (regra de encaminhamento, proxy de destino, mapa de URL e bucket de back-end) e buckets do Cloud Storage são criados no projeto de serviço.

Os recursos de rede do balanceador de carga de aplicativo externo regional, como a sub-rede somente proxy, são criados no projeto host.

Figura 1. Balanceador de carga HTTP(S) externo regional em um ambiente de VPC compartilhada com buckets do Cloud Storage
Figura 1. Balanceador de carga de aplicativo externo regional em um ambiente de VPC compartilhada com buckets do Cloud Storage

Nesta seção, mostramos como configurar o balanceador de carga e os back-ends.

Os exemplos de configuração nesta página configuram explicitamente um endereço IP reservado para a regra de encaminhamento do balanceador de carga de aplicativo externo regional, em vez de permitir que um endereço IP temporário seja alocado. Como prática recomendada, reserve endereços IP para regras de encaminhamento.

Configurar os buckets do Cloud Storage

O processo de configuração dos buckets do Cloud Storage é o seguinte:

  1. Crie os buckets do Cloud Storage.
  2. Copie o conteúdo para os buckets do Cloud Storage.
  3. Torne os buckets do Cloud Storage publicamente acessíveis.

Criar os buckets do Cloud Storage

Neste exemplo, você cria dois buckets do Cloud Storage na região us-east1.

Console

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

    Acessar buckets

  2. Clique em Criar.

  3. Na seção Começar, insira um nome globalmente exclusivo que siga as diretrizes de nomenclatura.

  4. Clique em Escolha onde armazenar os dados.

  5. Defina o Tipo de local como Região.

  6. Na lista de regiões, selecione us-east1.

  7. Clique em Criar.

  8. Clique em Buckets para retornar à página "Buckets do Cloud Storage". Use estas instruções para criar um segundo bucket na região us-east1.

gcloud

  1. Crie o primeiro bucket na região us-east1 com o comando gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET1_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_ID
    
  2. Crie o segundo bucket também na região us-east1 com o comando gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET2_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_ID
    

Substitua:

  • BUCKET1_NAME e BUCKET2_NAME: o nome dos seus buckets do Cloud Storage
  • SERVICE_PROJECT_ID: o Google Cloud ID do projeto atribuído ao projeto de serviço

Copiar conteúdo para os buckets do Cloud Storage

Para preencher os buckets do Cloud Storage, copie um arquivo gráfico de um bucket público do Cloud Storage para seus próprios buckets do Cloud Storage.

  gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
  
  gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
  

Substitua BUCKET1_NAME e BUCKET2_NAME pelo nome dos seus buckets do Cloud Storage.

Tornar os buckets do Cloud Storage acessíveis publicamente

Para tornar todos os objetos de um bucket acessíveis a todos na Internet pública, conceda ao principal allUsers o papel Leitor de objetos do Storage (roles/storage.objectViewer).

Console

Para conceder acesso a todos os usuários para visualizar objetos nos seus buckets, repita o procedimento a seguir para cada bucket:

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

    Acessar buckets

  2. Na lista de buckets, clique no nome do bucket que você quer tornar público.

  3. Selecione a guia Permissões.

  4. Na seção Permissões, clique no botão Conceder acesso. A caixa de diálogo Conceder acesso será exibida.

  5. No campo Novos participantes, insira allUsers.

  6. No campo Selecionar um papel, insira Storage Object Viewer na caixa de filtro e selecione Visualizador de objetos do Storage nos resultados filtrados.

  7. Clique em Salvar.

  8. Clique em Permitir acesso público.

gcloud

Para conceder a todos os usuários acesso para visualizar objetos nos seus buckets, execute o comando buckets add-iam-policy-binding.

gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME --member=allUsers --role=roles/storage.objectViewer

Substitua BUCKET1_NAME e BUCKET2_NAME pelo nome dos seus buckets do Cloud Storage.

Reserve o endereço IP do balanceador de carga

Reserve um endereço IP externo estático para a regra de encaminhamento do balanceador de carga.

Console

  1. No console do Google Cloud , acesse a página Reservar um endereço estático.

    Acessar "Reservar um endereço estático"

  2. Em Nome, insira um nome para o novo endereço.

  3. Em Versão do IP, selecione IPv4.

  4. Em Tipo, selecione Regional.

  5. Em Região, selecione us-east1.

  6. Deixe a opção Anexado a definida como Nenhum. Depois de criar o balanceador de carga, esse endereço IP será anexado à regra de encaminhamento do balanceador de carga.

  7. Clique em Reservar para reservar o IP.

gcloud

  1. Para reservar um endereço IP externo estático usando gcloud compute, use o comando compute addresses create.

     gcloud compute addresses create ADDRESS_NAME  \
         --region=us-east1 \
         --project=SERVICE_PROJECT_ID
    

    Substitua:

    • ADDRESS_NAME: o nome que você quer atribuir a esse endereço IP.
    • REGION: a região em que você quer reservar o endereço. Essa região precisa ser a mesma do balanceador de carga.
    • SERVICE_PROJECT_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço.
  2. Use o comando compute addresses describe para ver o resultado:

     gcloud compute addresses describe ADDRESS_NAME
    

    Substitua ADDRESS_NAME pelo nome que você atribuiu ao endereço IP.

    O endereço IP retornado é chamado de RESERVED_IP_ADDRESS nas seções a seguir.

Configurar um recurso de certificado SSL

Para um balanceador de carga de aplicativo externo regional que usa HTTPS como o protocolo de solicitação e resposta, é possível criar um recurso de certificado SSL usando um certificado SSL do Compute Engine ou do Gerenciador de certificados.

Para este exemplo, crie um recurso de certificado SSL usando o Gerenciador de certificados, conforme descrito em um dos seguintes documentos:

Depois de criar o certificado, anexe-o ao proxy de destino HTTPS.

Recomendamos o uso de um certificado gerenciado pelo Google.

Configurar o balanceador de carga com buckets de back-end

Nesta seção, mostramos como criar os seguintes recursos para um balanceador de carga de aplicativo externo regional:

  • Dois buckets de back-end. Os buckets de back-end servem como um wrapper para os buckets do Cloud Storage que você criou anteriormente.
  • Mapa de URL
  • Proxy de destino
  • Uma regra de encaminhamento com endereços IP regionais. A regra de encaminhamento tem um endereço IP externo.

Neste exemplo, é possível usar HTTP ou HTTPS como protocolo de solicitação e resposta entre o cliente e o balanceador de carga. Para criar um balanceador de carga HTTPS, é necessário adicionar um recurso de certificado SSL ao front-end do balanceador de carga.

Para criar os componentes de balanceamento de carga mencionados usando a CLI gcloud, siga estas etapas:

  1. Crie dois buckets de back-end com o comando gcloud compute backend-buckets create. Os buckets de back-end têm um esquema de balanceamento de carga de EXTERNAL_MANAGED.

      gcloud beta compute backend-buckets create backend-bucket-cats \
          --gcs-bucket-name=BUCKET1_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    
      gcloud beta compute backend-buckets create backend-bucket-dogs \
          --gcs-bucket-name=BUCKET2_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Substitua:

    • BUCKET1_NAME e BUCKET2_NAME: o nome dos buckets do Cloud Storage
    • SERVICE_PROJECT_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço
  2. Crie um mapa de URL para encaminhar solicitações recebidas para o bucket de back-end com o comando gcloud compute url-maps create.

      gcloud beta compute url-maps create URL_MAP_NAME \
          --default-backend-bucket=backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Substitua:

    • URL_MAP_NAME: o nome do mapa de URL.
    • SERVICE_PROJECT_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço
  3. Configure as regras de host e de caminho do mapa de URL com o comando gcloud compute url-maps add-path-matcher.

    Neste exemplo, o bucket de back-end padrão é backend-bucket-cats, que processa todos os caminhos que existem nele. No entanto, qualquer solicitação direcionada a http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg usa o back-end backend-bucket-dogs. Por exemplo, se a pasta /love-to-fetch/ também existir no seu back-end padrão (backend-bucket-cats), o balanceador de carga vai priorizar o back-end backend-bucket-dogs porque há uma regra de caminho específica para /love-to-fetch/*.

      gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \
          --path-matcher-name=path-matcher-pets \
          --new-hosts=* \
          --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \
          --default-backend-bucket=backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Substitua:

    • URL_MAP_NAME: o nome do mapa de URL.
    • SERVICE_PROJECT_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço
  4. Crie um proxy de destino com o comando gcloud compute target-http-proxies create.

    Para tráfego HTTP, crie um proxy HTTP de destino para encaminhar solicitações ao mapa de URL:

      gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Substitua:

    • TARGET_HTTP_PROXY_NAME: o nome do proxy HTTP de destino
    • URL_MAP_NAME: o nome do mapa de URL.
    • SERVICE_PROJECT_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço

    Para tráfego HTTPS, crie um proxy HTTPS de destino para encaminhar solicitações ao mapa de URL. O proxy é a parte do balanceador de carga que armazena o certificado SSL de um balanceador de carga HTTPS. Depois de criar o certificado, anexe-o ao proxy de destino HTTPS.

    Para anexar um certificado do Gerenciador de certificados, execute o seguinte comando:

      gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --certificate-manager-certificates=CERTIFICATE_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Substitua:

    • TARGET_HTTPS_PROXY_NAME: o nome do proxy HTTPS de destino.
    • URL_MAP_NAME: o nome do mapa de URL.
    • CERTIFICATE_NAME: o nome do certificado SSL do Gerenciador de certificados
    • SERVICE_PROJECT_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço
  5. Crie uma regra de encaminhamento com um endereço IP na região us-east1 com o comando gcloud compute forwarding-rules create.

    Para tráfego HTTP, crie uma regra de encaminhamento regional para encaminhar solicitações recebidas ao proxy HTTP de destino:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --address=RESERVED_IP_ADDRESS \
          --ports=80 \
          --region=us-east1 \
          --target-http-proxy=TARGET_HTTP_PROXY_NAME \
          --target-http-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Substitua:

    • FORWARDING_RULE_NAME: o nome da regra de encaminhamento
    • HOST_PROJECT_ID: o ID do projeto Google Cloud atribuído ao projeto host
    • RESERVED_IP_ADDRESS: o endereço IP reservado
    • TARGET_HTTP_PROXY_NAME: o nome do proxy HTTP de destino
    • SERVICE_PROJECT_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço

    Para o tráfego HTTPS, crie uma regra de encaminhamento regional para encaminhar as solicitações recebidas para o proxy HTTPS de destino:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --address=RESERVED_IP_ADDRESS \
          --ports=443 \
          --region=us-east1 \
          --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
          --target-https-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Substitua:

    • FORWARDING_RULE_NAME: o nome da regra de encaminhamento
    • HOST_PROJECT_ID: o ID do projeto Google Cloud atribuído ao projeto host
    • RESERVED_IP_ADDRESS: o endereço IP reservado
    • TARGET_HTTPS_PROXY_NAME: o nome do proxy HTTPS de destino.
    • SERVICE_PROJECT_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço

Enviar uma solicitação HTTP ao balanceador de carga

Agora que o serviço de balanceamento de carga está em execução, é possível enviar tráfego para a regra de encaminhamento do balanceador de carga.

  1. Anote o endereço IP da regra de encaminhamento do balanceador de carga, que está na região us-east1.

     gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
         --region=us-east1 \
         --project=SERVICE_PROJECT_ID
    

    Substitua:

    • FORWARDING_RULE_NAME: o nome da regra de encaminhamento
    • SERVICE_PROJECT_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço

    Copie o endereço IP retornado para usar como FORWARDING_RULE_IP_ADDRESS na próxima etapa.

  2. Faça uma solicitação HTTP para o endereço IP virtual (VIP) da regra de encaminhamento usando curl.

     curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
    
     curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
    

    Substitua FORWARDING_RULE_IP_ADDRESS pelo endereço IP da regra de encaminhamento do balanceador de carga.

Configurar um balanceador de carga com uma configuração entre projetos

O exemplo anterior nesta página mostra como configurar uma implantação de VPC compartilhada em que todos os componentes do balanceador de carga e os back-ends dele são criados no projeto de serviço.

O balanceamento de carga de aplicativo externo regional também permite configurar implantações de VPC compartilhada em que um mapa de URL em um projeto host ou de serviço pode referenciar buckets de back-end localizados em vários projetos de serviço em ambientes de VPC compartilhada.

Use as etapas desta seção como referência para configurar qualquer uma das combinações compatíveis listadas aqui:

  • Regra de encaminhamento, proxy de destino e mapa de URL no projeto host, com bucket de back-end em um projeto de serviço.
  • Regra de encaminhamento, proxy de destino e mapa de URL em um projeto de serviço, com bucket de back-end em outro projeto de serviço.

Nesta seção, a última configuração é apresentada como um exemplo.

Visão geral da configuração

Este exemplo configura um balanceador de carga com o front-end e o back-end em dois projetos de serviço diferentes.

Se você ainda não tiver feito isso, configure as funções necessárias e crie um ambiente de VPC compartilhada. Para instruções, consulte as seguintes seções no início desta página:

Figura 2. Front-end e back-end do balanceador de carga em projetos de serviço diferentes
Figura 2. Front-end e back-end do balanceador de carga em projetos de serviço diferentes.

Configurar os buckets do Cloud Storage e de back-end no projeto de serviço B

Todas as etapas nesta seção precisam ser realizadas no projeto de serviço B.

O processo de configuração de buckets do Cloud Storage e de back-end é o seguinte:

  1. Crie os buckets do Cloud Storage.
  2. Copie o conteúdo para os buckets do Cloud Storage.
  3. Torne os buckets do Cloud Storage publicamente acessíveis.
  4. Crie buckets de back-end e direcione-os para os buckets do Cloud Storage.

Criar os buckets do Cloud Storage

Console

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

    Acessar buckets

  2. Clique em Criar.

  3. Na seção Começar, insira um nome globalmente exclusivo que siga as diretrizes de nomenclatura.

  4. Clique em Escolha onde armazenar os dados.

  5. Defina o Tipo de local como Região.

  6. Na lista de regiões, selecione us-east1.

  7. Clique em Criar.

  8. Clique em Buckets para retornar à página "Buckets do Cloud Storage". Use estas instruções para criar um segundo bucket na região us-east1.

gcloud

  1. Crie o primeiro bucket na região us-east1 com o comando gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET1_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_B_ID
    
  2. Crie o segundo bucket também na região us-east1 com o comando gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET2_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_B_ID
    

Substitua:

  • BUCKET1_NAME e BUCKET2_NAME: o nome do bucket do Cloud Storage
  • SERVICE_PROJECT_B_ID: o Google Cloud ID do projeto atribuído ao projeto de serviço B

Copiar conteúdo para os buckets do Cloud Storage

Para preencher os buckets do Cloud Storage, copie um arquivo gráfico de um bucket público do Cloud Storage para seus próprios buckets do Cloud Storage.

    gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
  
    gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
  

Substitua BUCKET1_NAME e BUCKET2_NAME pelo nome dos seus buckets do Cloud Storage.

Tornar os buckets do Cloud Storage acessíveis publicamente

Para tornar todos os objetos de um bucket acessíveis a todos na Internet pública, conceda ao principal allUsers o papel Leitor de objetos do Storage (roles/storage.objectViewer).

Console

Para conceder acesso a todos os usuários para visualizar objetos nos seus buckets, repita o procedimento a seguir para cada bucket:

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

    Acessar buckets

  2. Na lista de buckets, clique no nome do bucket que você quer tornar público.

  3. Selecione a guia Permissões.

  4. Na seção Permissões, clique no botão Conceder acesso. A caixa de diálogo Conceder acesso será exibida.

  5. No campo Novos participantes, insira allUsers.

  6. No campo Selecionar um papel, insira Storage Object Viewer na caixa de filtro e selecione Visualizador de objetos do Storage nos resultados filtrados.

  7. Clique em Salvar.

  8. Clique em Permitir acesso público.

gcloud

Para conceder a todos os usuários acesso para visualizar objetos nos seus buckets, execute o comando buckets add-iam-policy-binding.

gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME --member=allUsers --role=roles/storage.objectViewer

Substitua BUCKET1_NAME e BUCKET2_NAME pelo nome dos seus buckets do Cloud Storage.

Criar buckets de back-end e apontar para os buckets do Cloud Storage

Para criar os buckets de back-end, siga estas etapas:

  1. Crie dois buckets de back-end com o comando gcloud compute backend-buckets create. Os buckets de back-end têm um esquema de balanceamento de carga de EXTERNAL_MANAGED.

      gcloud beta compute backend-buckets create backend-bucket-cats \
          --gcs-bucket-name=BUCKET1_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --region=us-east1 \
          --project=SERVICE_PROJECT_B_ID
    
      gcloud beta compute backend-buckets create backend-bucket-dogs \
          --gcs-bucket-name=BUCKET2_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --region=us-east1 \
          --project=SERVICE_PROJECT_B_ID
    

    Substitua:

    • BUCKET1_NAME e BUCKET2_NAME: o nome dos buckets do Cloud Storage
    • SERVICE_PROJECT_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço

Configurar os componentes de front-end do balanceador de carga no projeto de serviço A

Todas as etapas nesta seção precisam ser realizadas no projeto de serviço A.

No projeto de serviço A, crie os seguintes componentes de balanceamento de carga de front-end:

  1. Um recurso de certificado SSL anexado ao proxy de destino. Siga as etapas descritas na seção anterior para criar o certificado SSL.
  2. Um endereço IP para a regra de encaminhamento do balanceador de carga. Siga as etapas descritas na seção anterior para criar um endereço IP.
  3. Um mapa de URL que faz referência aos buckets de back-end no projeto de serviço B
  4. Um proxy de destino
  5. Uma regra de encaminhamento com endereços IP regionais. A regra de encaminhamento tem um endereço IP externo.

Para criar o mapa de URL, o proxy de destino e a regra de encaminhamento, faça o seguinte:

  1. Crie um mapa de URL para encaminhar solicitações recebidas para o bucket de back-end com o comando gcloud beta compute url-maps create.

      gcloud beta compute url-maps create URL_MAP_NAME \
          --default-backend-bucket=backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Substitua:

    • URL_MAP_NAME: o nome do mapa de URL.
    • SERVICE_PROJECT_A_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço A
  2. Configure as regras de host e de caminho do mapa de URL com o comando gcloud beta compute url-maps add-path-matcher.

    Neste exemplo, o bucket de back-end padrão é backend-bucket-cats, que processa todos os caminhos que existem nele. No entanto, qualquer solicitação direcionada a http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg usa o back-end backend-bucket-dogs. Por exemplo, se a pasta /love-to-fetch/ também existir no seu back-end padrão (backend-bucket-cats), o balanceador de carga vai priorizar o back-end backend-bucket-dogs porque há uma regra de caminho específica para /love-to-fetch/*.

      gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \
          --path-matcher-name=path-matcher-pets \
          --new-hosts=* \
          --backend-bucket-path-rules="/love-to-fetch/*=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-dogs" \
          --default-backend-bucket=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Substitua:

    • URL_MAP_NAME: o nome do mapa de URL.
    • SERVICE_PROJECT_A_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço A
  3. Crie um proxy de destino com o comando gcloud compute target-http-proxies create.

    Para tráfego HTTP, crie um proxy HTTP de destino para encaminhar solicitações ao mapa de URL:

      gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Substitua:

    • TARGET_HTTP_PROXY_NAME: o nome do proxy HTTP de destino
    • URL_MAP_NAME: o nome do mapa de URL.
    • SERVICE_PROJECT_A_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço A

    Para tráfego HTTPS, crie um proxy HTTPS de destino para encaminhar solicitações ao mapa de URL. O proxy é a parte do balanceador de carga que armazena o certificado SSL de um balanceador de carga HTTPS. Depois de criar o certificado, anexe-o ao proxy de destino HTTPS.

    Para anexar um certificado do Gerenciador de certificados, execute o seguinte comando:

      gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
          --url-map=lb-map \
          --certificate-manager-certificates=CERTIFICATE_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Substitua:

    • TARGET_HTTPS_PROXY_NAME: o nome do proxy HTTPS de destino.
    • URL_MAP_NAME: o nome do mapa de URL.
    • CERTIFICATE_NAME: o nome do certificado SSL do Gerenciador de certificados
    • SERVICE_PROJECT_A_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço A
  4. Crie uma regra de encaminhamento com um endereço IP na região asia-east1 com o comando gcloud compute forwarding-rules create.

    Para tráfego HTTP, crie uma regra de encaminhamento regional para encaminhar solicitações recebidas ao proxy HTTP de destino:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --address=RESERVED_IP_ADDRESS \
          --ports=80 \
          --region=us-east1 \
          --target-http-proxy=TARGET_HTTP_PROXY_NAME \
          --target-http-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Substitua:

    • FORWARDING_RULE_NAME: o nome da regra de encaminhamento
    • HOST_PROJECT_ID: o ID do projeto Google Cloud atribuído ao projeto host
    • RESERVED_IP_ADDRESS: o endereço IP reservado
    • TARGET_HTTP_PROXY_NAME: o nome do proxy HTTP de destino
    • SERVICE_PROJECT_A_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço A

    Para o tráfego HTTPS, crie uma regra de encaminhamento regional para encaminhar as solicitações recebidas para o proxy HTTPS de destino:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --address=RESERVED_IP_ADDRESS \
          --ports=443 \
          --region=us-east1 \
          --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
          --target-https-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Substitua:

    • FORWARDING_RULE_NAME: o nome da regra de encaminhamento
    • HOST_PROJECT_ID: o ID do projeto Google Cloud atribuído ao projeto host
    • RESERVED_IP_ADDRESS: o endereço IP reservado
    • TARGET_HTTPS_PROXY_NAME: o nome do proxy HTTPS de destino.
    • SERVICE_PROJECT_A_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço A

Conceder permissão ao administrador do balanceador de carga do Compute para usar o bucket de back-end no projeto de serviço

Se você quiser que os balanceadores de carga façam referência a buckets de back-end em outros projetos de serviço, o administrador do balanceador de carga precisará ter a permissão compute.backendBuckets.use. Para conceder essa permissão, use o papel predefinido do IAM chamado Usuário de serviços do balanceador de carga do Compute (roles/compute.loadBalancerServiceUser). Esse papel precisa ser concedido pelo Administrador do projeto de serviço e pode ser aplicado no nível do projeto de serviço ou no nível do bucket de back-end individual.

Neste exemplo, um administrador de projeto de serviço do projeto B precisa executar um dos comandos a seguir para conceder a permissão compute.backendBuckets.use a um administrador do balanceador de carga do projeto de serviço A. Isso pode ser feito no nível do projeto (para todos os buckets de back-end no projeto) ou por bucket de back-end.

Console

Permissões de nível de projeto

Use as etapas a seguir para conceder permissões a todos os buckets de back-end no projeto.

Você precisa das permissões compute.regionBackendBuckets.setIamPolicy e resourcemanager.projects.setIamPolicy para concluir esta etapa.

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

    Acessar IAM

  2. Selecione o projeto.

  3. Clique em Conceder acesso.

  4. No campo Novos principais, insira o endereço de e-mail do principal ou outro identificador.

  5. Na seção Atribuir funções, clique em Adicionar funções.

  6. Na caixa de diálogo Selecionar papéis, no campo Pesquisar papéis, insira Compute Load Balancer Services User.

  7. Marque a caixa de seleção Usuário de serviços do balanceador de carga do Compute.

  8. Clique em Aplicar.

  9. Opcional: adicione uma condição ao papel.

  10. Clique em Salvar.

Permissões no nível do recurso para buckets de back-end individuais

Use as etapas a seguir para conceder permissões a buckets de back-end individuais no projeto.

A permissão compute.regionBackendBuckets.setIamPolicy é necessária para concluir esta etapa.

  1. No console do Google Cloud , acesse a página Back-ends.

    Acessar back-ends

  2. Na lista de back-ends, selecione o bucket de back-end a que você quer conceder acesso e clique em Permissões.

  3. Clique em Adicionar principal.

  4. No campo Novos principais, insira o endereço de e-mail do principal ou outro identificador.

  5. Na lista Selecionar um papel, escolha Usuário de serviços do balanceador de carga do Compute.

  6. Clique em Salvar.

gcloud

Permissões de nível de projeto

Use as etapas a seguir para conceder permissões a todos os buckets de back-end no projeto.

Você precisa das permissões compute.regionBackendBuckets.setIamPolicy e resourcemanager.projects.setIamPolicy para concluir esta etapa.

  gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser"

Substitua:

  • SERVICE_PROJECT_B_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço B
  • LOAD_BALANCER_ADMIN: o principal para quem a vinculação deve ser adicionada.

Permissões no nível do recurso para buckets de back-end individuais

No nível do bucket de back-end, os administradores do projeto de serviço podem usar um dos comandos a seguir para conceder o papel de usuário de serviços do balanceador de carga do Compute (roles/compute.loadBalancerServiceUser):

Use o comando gcloud projects add-iam-policy-binding para conceder o papel de usuário de serviços do balanceador de carga do Compute.

Você precisa da permissão compute.regionBackendBuckets.setIamPolicy para concluir esta etapa.

  gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser" \
      --condition='expression=resource.name=="projects/SERVICE_PROJECT_B_ID/regions/REGION/backendBuckets/BACKEND_BUCKET_NAME",title=Shared VPC condition'
Substitua:
  • SERVICE_PROJECT_B_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço B
  • LOAD_BALANCER_ADMIN: o principal para quem a vinculação deve ser adicionada.
  • REGION: a Google Cloud região em que o bucket de back-end está localizado
  • BACKEND_BUCKET_NAME: o nome do bucket de back-end
Como alternativa, use o comando gcloud compute backend-buckets add-iam-policy-binding para conceder o papel de usuário de serviços do balanceador de carga do Compute.
  gcloud compute backend-buckets add-iam-policy-binding BACKEND_BUCKET_NAME \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser" \
      --project=SERVICE_PROJECT_B_ID \
      --region=REGION

Enviar uma solicitação HTTP ao balanceador de carga

Agora que o serviço de balanceamento de carga está em execução, é possível enviar tráfego para a regra de encaminhamento do balanceador de carga.

  1. Anote o endereço IP da regra de encaminhamento do balanceador de carga, que está na região us-east1.

     gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
         --region=us-east1 \
         --project=SERVICE_PROJECT_A_ID
    

    Substitua:

    • FORWARDING_RULE_NAME: o nome da regra de encaminhamento
    • SERVICE_PROJECT_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço

    Copie o endereço IP retornado para usar como FORWARDING_RULE_IP_ADDRESS na próxima etapa.

  2. Faça uma solicitação HTTP para o VIP da regra de encaminhamento usando curl.

    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
    
    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
    

    Substitua FORWARDING_RULE_IP_ADDRESS pelo endereço IP da regra de encaminhamento do balanceador de carga.

A seguir