Provisionar VPC compartilhada

A VPC compartilhada permite exportar sub-redes de uma rede de nuvem privada virtual (VPC) em um projeto host para outros projetos de serviço na mesma organização. As instâncias nos projetos de serviço podem ter conexões de rede nas sub-redes compartilhadas do projeto host. Nesta página, você vai ver como configurar e usar a VPC compartilhada, incluindo alguma preparação administrativa necessária para sua organização.

A VPC compartilhada é compatível com a exportação tanto de sub-redes somente IPv4 (pilha única) quanto de redes IPv4 e IPv6 (pilha dupla).

Para informações sobre como remover projetos de serviço ou a configuração da VPC compartilhada, veja Como desprovisionar a VPC compartilhada.

A VPC compartilhada também é chamada de "XPN" na API e na interface de linha de comando.

Cotas, limites e recursos qualificados

Antes de começar, conheça a VPC compartilhada e o IAM, especificamente:

Preparar a organização

Tenha as seguintes informações em mente ao preparar sua organização.

Administradores e IAM

A preparação da organização, configuração de projetos host da VPC compartilhada e uso de redes VPC compartilhadas envolve no mínimo três papéis administrativos diferentes do gerenciamento de identidade e acesso (IAM). Para mais detalhes sobre cada papel e informações sobre os papéis opcionais, veja a seção sobre administradores e IAM da visão geral da VPC compartilhada.

Restrições da política da organização

As restrições da política da organização podem proteger os recursos da VPC compartilhada no nível do projeto, da pasta ou da organização. As seções a seguir descrevem cada política.

Evitar a exclusão acidental de projetos host

A exclusão acidental de um projeto host levaria a interrupções em todos os projetos de serviço anexados a ele. Quando um projeto é configurado para ser um projeto host da VPC compartilhada, um bloqueio especial, chamado de garantia, é colocado nele. Enquanto a garantia está presente, ela impede que o projeto seja excluído acidentalmente. A garantia é removida automaticamente do projeto host quando não está mais configurada para a VPC compartilhada.

Um usuário com o papel orgpolicy.policyAdmin pode definir uma restrição de política no nível da organização (constraints/compute.restrictXpnProjectLienRemoval) que limita a remoção de garantias apenas aos seguintes papéis:

  • Usuários com roles/owner ou roles/resourcemanager.lienModifier no nível da organização
  • Usuário com papéis personalizados que incluem as permissões resourcemanager.projects.get e resourcemanager.projects.updateLiens no nível da organização

Com isso, impede-se um proprietário de projeto que não tenha os papéis roles/owner ou resourcemanager.lienModifier no nível da organização de excluir acidentalmente um projeto host da VPC compartilhada. Para mais informações sobre as permissões associadas ao papel resourcemanager.lienModifier, consulte Como aplicar uma garantia a um projeto na documentação do Resource Manager.

Como uma política da organização se aplica a todos os projetos da organização, basta seguir estas etapas uma vez para restringir a remoção de garantia.

  1. Autentique-se no gcloud como Administrador da organização ou principal do IAM com o papel orgpolicy.policyAdmin. Substitua ORG_ADMIN pelo nome de um administrador da organização:

    gcloud auth login ORG_ADMIN
    
  2. Consulte a resposta ao comando para determinar o ID da organização.

    gcloud organizations list
    
  3. Para aplicar a política compute.restrictXpnProjectLienRemoval à sua organização, execute este comando. Substitua ORG_ID pelo número determinado na etapa anterior.

    gcloud resource-manager org-policies enable-enforce \
        --organization ORG_ID compute.restrictXpnProjectLienRemoval
    
  4. Saia de gcloud quando concluir a execução de tarefas como Administrador da organização para proteger sua conta.

    gcloud auth revoke ORG_ADMIN
    

Restringir anexos do projeto host

Por padrão, um Administrador da VPC compartilhada pode anexar um não host a qualquer projeto host na mesma organização. O administrador da política da organização pode limitar o conjunto de projetos hosts a que um ou mais projeto não host em uma pasta ou organização podem ser anexados. Para mais informações, consulte a restrição constraints/compute.restrictSharedVpcHostProjects.

Restringir as sub-redes do projeto host que um projeto de serviço pode usar

Por padrão, depois de configurar a VPC compartilhada, os principais do IAM em projetos de serviço podem usar qualquer sub-rede do projeto host se tiverem as permissões do IAM adequadas. Além de gerenciar permissões de usuários individuais, o administrador de política da organização pode definir uma política para definir o conjunto de sub-redes que podem ser acessadas por um projeto específico ou por projetos em uma pasta ou organização. Para mais informações, consulte a restrição constraints/compute.restrictSharedVpcSubnetworks.

Evitar o encerramento acidental de projetos host

Desconectar o faturamento em uma rede VPC compartilhada pode levar a um encerramento completo de todos os recursos dependentes, incluindo projetos de serviço. Para evitar uma possível ocorrência de um desligamento acidental de VPC compartilhada devido a faturamento inativo ou desativado, proteja o vínculo entre o projeto host e a conta de faturamento dele.

Nomear administradores de VPC compartilhada

O Administrador da organização pode conceder os papéis de Administrador da VPC compartilhada e Administrador de IAM do projeto a um ou mais principais do IAM.

O papel de administrador do IAM do projeto concede permissão aos Administradores de VPC compartilhada para compartilhar todas as sub-redes atuais e futuras, não apenas sub-redes individuais. Essa concessão cria um vínculo no nível da organização ou pasta, não no nível do projeto. Portanto, os principais do IAM precisam ser definidos na organização e não apenas em um projeto.

Console

Para conceder o papel de Administrador de VPC compartilhada no nível da organização

  1. Faça login no Console do Google Cloud como um Administrador da organização e acesse a página "IAM".

    Acessar a página do IAM

  2. No menu do projeto, selecione sua organização.

    Se você selecionar um projeto, o menu Papéis mostrará entradas incorretas.

  3. Clique em Adicionar.

  4. Insira os endereços de e-mail dos Novos principais.

  5. No menu Papéis, selecione Compute Engine > Administrador de VPC compartilhada do Compute

  6. Clique em Adicionar outro papel.

  7. Na lista suspensa Papéis, selecione Resource Manager > Administrador de IAM do projeto.

  8. Clique em Salvar.

Para conceder o papel de Administrador de VPC compartilhada no nível da pasta

  1. Faça login no Console do Google Cloud como um Administrador da organização e acesse a página "IAM".

    Acessar a página do IAM

  2. No menu do projeto, selecione sua pasta.

    Se você selecionar um projeto ou uma organização, as opções exibidas estarão incorretas.

  3. Clique em Adicionar.

  4. Insira os endereços de e-mail dos Novos principais.

  5. Em Selecionar um papel, selecione Compute Engine > Administrador de VPC compartilhada do Compute.

  6. Clique em Adicionar outro papel.

  7. No menu Papéis, selecione Resource Manager >. Administrador de IAM do projeto.

  8. Clique em Adicionar outro papel.

  9. No menu Papéis, selecione Resource Manager > Leitor de redes do Compute

  10. Clique em Salvar.

gcloud

  1. Autentique-se no gcloud como Administrador da organização. Substitua ORG_ADMIN pelo nome de um administrador da organização:

    gcloud auth login ORG_ADMIN
    
  2. Consulte a resposta ao comando para determinar o ID da organização.

    gcloud organizations list
    
  3. Para atribuir o papel de Administrador de VPC compartilhada na organização faça o seguinte:

    1. Atribua o papel de Administrador de VPC compartilhada a um principal do IAM atual. Substitua ORG_ID pelo ID da organização da etapa anterior e EMAIL_ADDRESS pelo endereço de e-mail do usuário a quem você está concedendo o papel de Administrador de VPC compartilhada.

      gcloud organizations add-iam-policy-binding ORG_ID \
        --member='user:EMAIL_ADDRESS' \
        --role="roles/compute.xpnAdmin"
      
      gcloud organizations add-iam-policy-binding ORG_ID \
        --member='user:EMAIL_ADDRESS' \
        --role="roles/resourcemanager.projectIamAdmin"
      
  4. Para atribuir o papel de Administrador de VPC compartilhada na pasta, faça o seguinte:

    1. Determine seu código da pasta observando a saída deste comando.

      gcloud resource-manager folders list --organization=ORG_ID
      
    2. Atribua o papel de Administrador de VPC compartilhada a um principal do IAM atual. Substitua ORG_ID pelo ID da organização da etapa anterior e EMAIL_ADDRESS pelo endereço de e-mail do usuário a quem você está concedendo o papel de Administrador de VPC compartilhada.

      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/compute.xpnAdmin"
      
      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/resourcemanager.projectIamAdmin"
      
      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/compute.networkViewer"
      
  5. Revogue o token da conta de administrador da organização na ferramenta de linha de comando gcloud ao final das tarefas para proteger sua conta.

    gcloud auth revoke ORG_ADMIN
    

API

  • Para atribuir o papel de Administrador de VPC compartilhada no nível da organização, use o seguinte procedimento:

    1. Determine o número de ID da organização.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations
      
    2. Descreva e registre os detalhes da política da organização atual.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORG_ID:getIamPolicy
      

      Substitua ORG_ID pelo ID da organização.

    3. Atribua o papel Administrador de VPC compartilhada.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORG_ID:setIamPolicy
      {
        "bindings": [
          ...copy existing bindings
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.xpnAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/resourcemanager.projectIamAdmin"
          }
        ],
        "etag": "ETAG",
        "version": 1,
        ...other existing policy details
      }
      

      Substitua:

      • ORG_ID: o ID da organização que contém o usuário a quem você está concedendo o papel de Administrador de VPC compartilhada.
      • EMAIL_ADDRESS: o endereço de e-mail do usuário.
      • ETAG: um identificador exclusivo que você recebeu quando descreveu a política atual. Isso evita colisões quando várias solicitações de atualização são enviadas ao mesmo tempo.

      Para mais informações, consulte o método organizations.setIamPolicy.

  • Para atribuir o papel de Administrador de VPC compartilhada no nível da pasta, use a seguinte solicitação:

    1. Determine o número de ID da organização.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations
      
    2. Encontre o ID da pasta.

      GET https://cloudresourcemanager.googleapis.com/v2/folders?parent=organizations/ORG_ID
      

      Substitua ORG_ID pelo ID da organização.

    3. Descreva e registre os detalhes da política de pastas atual.

      POST https://cloudresourcemanager.googleapis.com/v2/folders/FOLDER_ID:getIamPolicy
      

      Substitua FOLDER_ID pelo ID da pasta.

    4. Atribua o papel Administrador de VPC compartilhada.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/FOLDER_ID:setIamPolicy
      {
        "bindings": [
          ...copy existing bindings
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.xpnAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/resourcemanager.projectIamAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.networkViewer"
          }
        ],
        "etag": "ETAG",
        "version": 1,
        ...other existing policy details
      }
      

      Substitua:

      • FOLDER_ID: o ID da organização que contém o usuário a quem você está concedendo o papel de Administrador de VPC compartilhada.
      • EMAIL_ADDRESS: o endereço de e-mail do usuário.
      • ETAG: um identificador exclusivo que você recebeu quando descreveu a política atual. Isso evita colisões se várias solicitações de atualizações forem enviadas ao mesmo tempo.

      Para mais informações, consulte o método folders.setIamPolicy.

Configurar VPC compartilhada

Todas as tarefas nesta seção precisam ser executadas por um administrador de VPC compartilhada.

Ativar um projeto host

Dentro de uma organização, os Administradores da VPC compartilhada podem seguir o procedimento abaixo para designar projetos como projetos host de VPC compartilhada, sujeitos a cotas e limites. Os administradores de VPC compartilhada também podem criar e excluir projetos se tiverem o papel Criador de projetos e Excluidor de projetos (roles/resourcemanager.projectCreator e roles/resourcemanager.projectDeleter) na sua organização.

Quando você ativa um projeto host, os recursos de rede do projeto não são compartilhados automaticamente com projetos de serviço. Você precisa anexar projetos de serviço ao projeto host para compartilhar redes e sub-redes selecionadas com os projetos de serviço.

Console

Se você ainda não tem o papel de Administrador de VPC compartilhada do Compute (roles/compute.xpnAdmin), não é possível ver esta página no console do Google Cloud.

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

    Acessar VPC compartilhada

  2. Faça login como administrador de VPC compartilhada.

  3. Selecione o projeto que você quer ativar como projeto host da VPC compartilhada no seletor de projetos.

  4. Clique em Configurar VPC compartilhada.

  5. Na página seguinte, clique em Salvar e continuar abaixo de Ativar projeto host.

  6. Em Selecionar sub-redes, faça isto:

    1. Clique em Compartilhar todas as sub-redes (permissões no nível do projeto) se precisar compartilhar todas as sub-redes atuais e futuras nas redes VPC do projeto host com os projetos de serviço e os Administradores de projetos de serviço especificados nas próximas etapas.
    2. Clique em Sub-redes individuais (permissões no nível da sub-rede) se você precisar compartilhar seletivamente sub-redes das redes VPC do projeto host com projetos de serviço e Administradores do projeto de serviço. Em seguida, selecione Sub-redes a serem compartilhadas.
  7. Clique em Continuar.
    A próxima tela será exibida.

  8. Em Nomes de projeto, especifique os projetos de serviço a serem anexados ao projeto host. Observe que anexar projetos de serviço não define nenhum Administrador de projetos de serviço. Essa definição é feita na próxima etapa.

  9. Na seção Selecionar usuários por papel, adicione Administradores de projeto de serviço. Esses usuários receberão o papel do IAM de compute.networkUser para as sub-redes compartilhadas. Somente os Administradores de projetos de serviço podem criar recursos nas sub-redes do projeto host da VPC compartilhada.

  10. Clique em Salvar.

gcloud

  1. Autentique-se no gcloud como Administrador de VPC compartilhada. Substitua SHARED_VPC_ADMIN pelo nome do Administrador de VPC compartilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Ative a VPC compartilhada no projeto que se tornará o projeto host. Substitua HOST_PROJECT_ID pelo ID do projeto.

    gcloud compute shared-vpc enable HOST_PROJECT_ID
    
  3. Confirme se o projeto está listado como um projeto host para a organização. Substitua ORG_ID pelo ID da organização (determinado por gcloud organizations list).

    gcloud compute shared-vpc organizations list-host-projects ORG_ID
    
  4. Se bastava ativar um projeto host, saia de gcloud para proteger as credenciais da conta de Administrador da VPC compartilhada. Caso contrário, pule esta etapa e continue com as etapas para anexar projetos de serviço.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Ative a VPC compartilhada para o projeto usando credenciais com permissões de Administrador de VPC compartilhada.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/enableXpnHost
    

    Substitua HOST_PROJECT_ID pelo ID do projeto que será um projeto host da VPC compartilhada.

    Para mais informações, consulte o método projects.enableXpnHost.

  2. Confirme se o projeto está listado como host.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/listXpnHosts
    

    Substitua HOST_PROJECT_ID pelo ID do projeto host da VPC compartilhada.

    Para mais informações, consulte o método projects.listXpnHosts.

Terraform

É possível usar um recurso do Terraform para ativar um projeto host.

resource "google_compute_shared_vpc_host_project" "host" {
  project = var.project # Replace this with your host project ID in quotes
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Anexar projetos de serviço

É necessário anexar um projeto de serviço a um projeto host antes que os respectivos Administradores de projeto de serviço usem a VPC compartilhada. O Administrador de VPC compartilhada precisa realizar as etapas a seguir para concluir a anexação.

Um projeto de serviço só pode ser anexado a um projeto host, mas um projeto host oferece suporte a vários anexos de projeto de serviço. Para detalhes, veja os limites específicos da VPC compartilhada na página de cotas da VPC.

Console

  1. Faça login no Console do Google Cloud como administrador de VPC compartilhada.
  2. No console do Google Cloud, acesse a página VPC compartilhada.
    Acessar a página "VPC compartilhada"
  3. Clique na guia Projetos anexados.
  4. Na guia Projetos anexados, clique no botão Anexar projetos.
  5. Marque as caixas dos projetos de serviço a serem anexados na seção Nomes de projeto. Observe que anexar projetos de serviço não define nenhum Administrador de projetos de serviço. Essa definição é feita na próxima etapa.
  6. Na seção Permissões de rede VPC, selecione os papéis que já foram concedidos aos principais que receberão o papel compute.networkUser. Os principais do IAM recebem o papel de usuário da rede para todo o projeto host ou para determinadas sub-redes no projeto host, com base no modo de compartilhamento da rede VPC. Esses principais são conhecidos como Administradores de projeto de serviço nos respectivos projetos de serviço.
  7. Na seção Modo de compartilhamento da rede VPC, selecione uma destas opções:
    1. Clique em Compartilhar todas as sub-redes (permissões no nível do projeto) para compartilhar todas as sub-redes atuais e futuras nas redes VPC do projeto host com todos os projetos de serviço e os Administradores de projetos de serviço.
    2. Clique em Sub-redes individuais (permissões no nível da sub-rede) se você precisar compartilhar seletivamente sub-redes das redes VPC do projeto host com projetos de serviço e Administradores do projeto de serviço. Em seguida, selecione Sub-redes a serem compartilhadas.
  8. Clique em Salvar.

gcloud

  1. Se ainda não tiver feito isso, autentique-se em gcloud como Administrador de VPC compartilhada. Substitua SHARED_VPC_ADMIN pelo nome do Administrador de VPC compartilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Anexe um projeto de serviço a um projeto host ativado anteriormente. Substitua SERVICE_PROJECT_ID pelo ID do projeto de serviço e HOST_PROJECT_ID pelo ID do projeto host.

    gcloud compute shared-vpc associated-projects add SERVICE_PROJECT_ID \
        --host-project HOST_PROJECT_ID
    
  3. Confirme se o projeto de serviço foi anexado.

    gcloud compute shared-vpc get-host-project SERVICE_PROJECT_ID
    
  4. Opcionalmente, liste os projetos de serviço que estão anexados ao projeto host:

    gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
    
  5. Se bastava anexar um projeto de serviço, faça o logout de gcloud para proteger as credenciais da conta de Administrador da VPC compartilhada. Caso contrário, pule esta etapa e defina os Administradores de projetos de serviço para todas as sub-redes ou apenas para algumas sub-redes.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Anexe um projeto de serviço ao projeto host da VPC compartilhada.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/enableXpnResource
    {
      "xpnResource": {
        "id": "SERVICE_PROJECT"
      }
    }
    

    Substitua:

    • HOST_PROJECT_ID: o ID do projeto host da VPC compartilhada.
    • SERVICE_PROJECT: o ID do projeto de serviço a ser anexado.

    Para mais informações, consulte o método projects.enableXpnResource.

  2. Confirme se os projetos de serviço estão anexados ao projeto host.

    GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/getXpnResources
    

    Substitua:

    • HOST_PROJECT_ID: o ID do projeto host da VPC compartilhada.

    Para mais informações, consulte o método projects.getXpnResources.

Terraform

Use um recurso do Terraform para anexar um projeto de serviço.

resource "google_compute_shared_vpc_service_project" "service1" {
  host_project    = google_compute_shared_vpc_host_project.host.project
  service_project = var.service_project # Replace this with your service project ID in quotes
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Administradores de projeto de serviço para todas as sub-redes

O Administrador de VPC compartilhada pode atribuir um principal do IAM de um projeto de serviço como um Administrador do projeto de serviço com acesso a todas as sub-redes no projeto host. Os Administradores de projetos de serviço desse tipo recebem o papel de compute.networkUser para todo o projeto host. Isso significa que eles têm acesso a todas as sub-redes definidas e futuras no projeto host.

Um usuário que tenha o papel compute.networkUser no projeto host poderá ver todas as sub-redes em projetos de serviço anexados.

Console

Para definir um principal do IAM de um projeto de serviço como Administrador do projeto de serviço com acesso a todas as sub-redes em um projeto host usando o console do Google Cloud, consulte a seção anexar projetos de serviço.

gcloud

Essas etapas abrangem a definição de um principal do IAM de um projeto de serviço como um Administrador do projeto de serviço com acesso a todas as sub-redes em um projeto host. Antes de realizar essas etapas, ative um projeto host e anexe o projeto de serviço ao projeto host.

  1. Se ainda não tiver feito isso, autentique-se em gcloud como Administrador de VPC compartilhada. Substitua SHARED_VPC_ADMIN pelo nome do Administrador de VPC compartilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Crie uma vinculação de política para tornar o principal do IAM do projeto de serviço um Administrador do projeto de serviço. Substitua HOST_PROJECT_ID pelo ID do projeto host e SERVICE_PROJECT_ADMIN pelo endereço de e-mail do usuário Administrador do projeto de serviço.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --member "user:SERVICE_PROJECT_ADMIN" \
    --role "roles/compute.networkUser"
    

    Para especificar diferentes tipos de principais, altere o formato do argumento --member:

    • Use group: para especificar um grupo do Google (por endereço de e-mail) como principal.
    • Use domain: para especificar um domínio do Google como principal.
    • Use serviceAccount: para especificar uma conta de serviço. Para mais informações sobre este caso de uso, veja Contas de serviço como administradores de projeto de serviço.
  3. Repita a etapa anterior para cada Administrador do projeto de serviço que você precisar definir.

  4. Ao concluir a definição dos Administradores de projetos de serviço, saia da gcloud para proteger as credenciais da conta de Administrador de VPC compartilhada.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Descreva e registre os detalhes da política de projetos existente. Você precisará da política atual e valor de etag.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Substitua HOST_PROJECT_ID pelo ID do projeto host em que está a rede VPC compartilhada.

  2. Crie uma vinculação de política para atribuir principais do IAM no projeto de serviço como Administradores de projetos de serviço.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            PRINCIPAL,
            ...additional principals
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Substitua:

    • HOST_PROJECT_ID: o ID do projeto host que contém a rede VPC compartilhada.
    • PRINCIPAL: uma identidade a que o papel está associado, como um usuário, grupo, domínio ou conta de serviço. Para mais informações, consulte o campo members na documentação do Resource Manager.
    • ETAG: um identificador exclusivo que você recebeu quando descreveu a política atual. Isso evita colisões se várias solicitações de atualizações forem enviadas ao mesmo tempo.

    Para mais informações, consulte o método projects.setIamPolicy.

Administradores de projeto de serviço para algumas sub-redes

O Administrador da VPC compartilhada pode atribuir o papel de Administrador de projeto de serviço a um principal do IAM de um projeto de serviço, com acesso apenas a algumas das sub-redes do projeto host. Essa opção fornece um meio mais granular para definir os Administradores de projetos de serviços, concedendo a eles o papel compute.networkUser para apenas algumas sub-redes no projeto host.

Um usuário que tenha o papel compute.networkUser no projeto host poderá ver todas as sub-redes em projetos de serviço anexados.

Console

Para definir um principal do IAM de um projeto de serviço como Administrador do projeto de serviço com acesso a apenas algumas sub-redes em um projeto host usando o console do Google Cloud, consulte a seção anexar projetos de serviço.

gcloud

Estas etapas abrangem a definição de principais do IAM de um projeto de serviço como Administradores de projetos de serviços com acesso a apenas algumas sub-redes em um projeto host. Antes de defini-los, ative um projeto host e anexe o projeto de serviço ao projeto host.

  1. Se ainda não tiver feito isso, autentique-se em gcloud como Administrador de VPC compartilhada. Substitua SHARED_VPC_ADMIN pelo nome do Administrador de VPC compartilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Escolha a sub-rede no projeto host a que os Administradores do projeto de serviço têm acesso. A política do IAM atual está em formato JSON. Substitua SUBNET_NAME pelo nome da sub-rede no projeto host e HOST_PROJECT_ID pelo ID do projeto host.

    gcloud compute networks subnets get-iam-policy SUBNET_NAME \
        --region SUBNET_REGION \
        --project HOST_PROJECT_ID \
        --format json
    
  3. Copie a saída JSON da etapa anterior e salve-a em um arquivo. Para que as instruções fiquem claras, essas etapas salvam a saída em um arquivo denominado subnet-policy.json.

  4. Modifique o arquivo subnet-policy.json adicionando os principais do IAM que vão se tornar Administradores de projetos de serviço com acesso à sub-rede. Substitua cada SERVICE_PROJECT_ADMIN pelo endereço de e-mail de um usuário do IAM do projeto de serviço.

    {
      "bindings": [
      {
         "members": [
               "user:[SERVICE_PROJECT_ADMIN]",
               "user:[SERVICE_PROJECT_ADMIN]"
            ],
            "role": "roles/compute.networkUser"
      }
      ],
      "etag": "[ETAG_STRING]"
    }
    

    Na política, é possível especificar diferentes tipos de membros do IAM (que não sejam usuários):

    • Alterne user: com group: para especificar um grupo do Google (por endereço de e-mail) como principal.
    • Alterne user: com domain: para especificar um domínio do Google como principal.
    • Use serviceAccount: para especificar uma conta de serviço. Consulte Contas de serviço como Administradores de projetos de serviços para ver mais informações sobre este caso de uso.
  5. Atualize a vinculação da política da sub-rede usando o conteúdo do arquivo subnet-policy.json.

    gcloud compute networks subnets set-iam-policy SUBNET_NAME subnet-policy.json \
        --region SUBNET_REGION \
        --project HOST_PROJECT_ID
    
  6. Ao concluir a definição dos Administradores de projetos de serviço, saia da gcloud para proteger as credenciais da conta de Administrador de VPC compartilhada.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Descreva e registre os detalhes da sua política de sub-rede existente. Você precisará da política atual e valor de etag.

    GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/getIamPolicy
    

    Substitua:

    • HOST_PROJECT_ID: o ID do projeto host que contém a rede VPC compartilhada.
    • SUBNET_NAME: o nome da sub-rede a ser compartilhada.
    • SUBNET_REGION: a região onde a sub-rede está localizada.
  2. Atualize as políticas de rede para conceder aos Administradores de projetos de serviço acesso às sub-redes no projeto host.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            PRINCIPAL,
            ...additional principals
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Substitua:

    • ETAG: um identificador exclusivo que você recebeu quando descreveu a política atual. Isso evita colisões se várias solicitações de atualizações forem enviadas ao mesmo tempo.
    • HOST_PROJECT_ID: o ID do projeto host que contém a rede VPC compartilhada.
    • PRINCIPAL: uma identidade a que o papel está associado, como um usuário, grupo, domínio ou conta de serviço. Para mais informações, consulte o campo members na documentação do Resource Manager.
    • SUBNET_NAME: o nome da sub-rede a ser compartilhada.
    • SUBNET_REGION: a região onde a sub-rede está localizada.

    Para mais informações, consulte o método subnetworks.setIamPolicy.

Contas de serviço como administradores de projeto de serviço

Um Administrador da VPC compartilhada também pode definir contas de serviços a partir de projetos de serviço como Administradores de projetos de serviço. Nesta seção, mostraremos como definir dois tipos diferentes de contas de serviço como Administradores de projetos de serviço:

O papel de Administrador do projeto de serviço (compute.networkUser) pode ser concedido para todas as sub-redes ou apenas algumas sub-redes do projeto host. No entanto, para que as instruções fiquem claras, nesta seção mostraremos apenas como definir cada um dos dois tipos de conta de serviço como Administradores de projetos de serviço para todas as sub-redes do projeto host.

Contas de serviço gerenciadas pelo usuário como administradores de projeto de serviço

Essas instruções descrevem como definir uma conta de serviço gerenciada pelo usuário como um Administrador do projeto de serviço para todas as sub-redes do projeto host da VPC compartilhada.

Console

  1. Faça login no Console do Google Cloud como administrador de VPC compartilhada.
  2. No console do Google Cloud, abra a página Configurações.
    Acessar a página "Configurações"
  3. Mude o projeto para o projeto de serviço que contém a conta de serviço que precisa ser definida como um Administrador do projeto de serviço.
  4. Copie o ID do projeto de serviço. Para que as instruções fiquem claras, este procedimento refere-se ao ID do projeto de serviço como SERVICE_PROJECT_ID.
  5. Altere o projeto para o host da VPC compartilhada.
  6. Acesse a página "IAM" no Console do Google Cloud.
    Acessar a página "IAM"
  7. Clique em Adicionar.
  8. Adicione SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.comao campo Principais, substituindo SERVICE_ACCOUNT_NAME pelo nome da conta de serviço.
  9. Selecione Compute Engine > Usuário da rede do Compute no menu Papéis.
  10. Clique em Adicionar.

gcloud

  1. Se ainda não tiver feito isso, autentique-se em gcloud como Administrador de VPC compartilhada. Substitua SHARED_VPC_ADMIN pelo nome do Administrador de VPC compartilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Se você não souber o ID do projeto de serviço, liste todos os projetos na organização. Esta lista mostra o código do projeto para cada um.

    gcloud projects list
    
  3. Crie uma vinculação de política para tornar a conta de serviço um Administrador do projeto de serviço. Substitua HOST_PROJECT_ID pelo ID do projeto host, SERVICE_ACCOUNT_NAME pelo nome da conta de serviço e SERVICE_PROJECT_ID pelo ID do projeto de serviço.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com" \
        --role "roles/compute.networkUser"
    

API

  1. Descreva e registre os detalhes da política de projetos existente. Você precisará da política atual e valor de etag.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Substitua HOST_PROJECT_ID pelo ID do projeto host em que está a rede VPC compartilhada.

  2. Crie uma vinculação de política para atribuir contas de serviço como Administradores de projetos de serviço.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com",
            ...include additional service accounts
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Substitua:

    • HOST_PROJECT_ID: o ID do projeto host que contém a rede VPC compartilhada.
    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço que contém a conta de serviço.
    • ETAG: um identificador exclusivo que você recebeu quando descreveu a política atual. Isso evita colisões se várias solicitações de atualizações forem enviadas ao mesmo tempo.

    Para mais informações, consulte o método projects.setIamPolicy.

Conta de serviço das APIs do Google como administrador de projeto de serviço

Estas instruções descrevem como definir a conta de serviço das APIs do Google como o Administrador do projeto de serviço para todas as sub-redes do projeto host da VPC compartilhada. Tornar a conta de serviço das APIs do Google um Administrador do projeto de serviço é um requisito para grupos gerenciado de instâncias usados com a VPC compartilhada, porque tarefas como a criação de instâncias são realizadas por esse tipo de conta de serviço. Para mais informações sobre esse relacionamento, consulte Grupos de instâncias gerenciadas e IAM.

Console

  1. Faça login no Console do Google Cloud como administrador de VPC compartilhada.
  2. No console do Google Cloud, abra a página Configurações.
    Acessar a página "Configurações"
  3. Mude o projeto para o projeto de serviço que contém a conta de serviço que precisa ser definida como um Administrador do projeto de serviço.
  4. Copie o Número do projeto de serviço. Para que as instruções fiquem claras, este procedimento refere-se ao número do projeto de serviço como SERVICE_PROJECT_NUMBER.
  5. Altere o projeto para o host da VPC compartilhada.
  6. Acesse a página "IAM" no Console do Google Cloud.
    Acessar a página "IAM"
  7. Clique em Adicionar.
  8. Adicione SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.comao campo Membros.
  9. Selecione Compute Engine > Usuário da rede do Compute no menu Papéis.
  10. Clique em Adicionar.

gcloud

  1. Se ainda não tiver feito isso, autentique-se em gcloud como Administrador de VPC compartilhada. Substitua SHARED_VPC_ADMIN pelo nome do Administrador de VPC compartilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Determine o número do projeto de serviço. Para que as instruções sejam claras, este procedimento se refere ao número do projeto de serviço como SERVICE_PROJECT_NUMBER. Substitua SERVICE_PROJECT_ID pelo ID do projeto de serviço.

    gcloud projects describe SERVICE_PROJECT_ID --format='get(projectNumber)'
    
    • Se você não souber o ID do projeto de serviço, liste todos os projetos na organização. Esta lista mostra o número do projeto para cada um.

      gcloud projects list
      
  3. Crie uma vinculação de política para tornar a conta de serviço um Administrador do projeto de serviço. Substitua HOST_PROJECT_ID pelo ID do projeto host e SERVICE_PROJECT_NUMBER pelo número do projeto de serviço.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com" \
        --role "roles/compute.networkUser"
    

API

  1. Descreva e registre os detalhes da política de projetos existente. Você precisará da política atual e valor de etag.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Substitua HOST_PROJECT_ID pelo ID do projeto host em que está a rede VPC compartilhada.

  2. Liste seu projeto para encontrar o número dele.

    GET https://cloudresourcemanager.googleapis.com/v1/projects?filter=projectId="SERVICE_PROJECT_ID"
    

    Substitua SERVICE_PROJECT_ID pelo ID do projeto de serviço em que a conta de serviço está localizada.

  3. Crie uma vinculação de política para atribuir contas de serviço como Administradores de projetos de serviço.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com"
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Substitua:

    • HOST_PROJECT_ID: o ID do projeto host que contém a rede VPC compartilhada.
    • SERVICE_PROJECT_NUMBER: o número do projeto de serviço em que está a conta de serviço.
    • ETAG: um identificador exclusivo que você recebeu quando descreveu a política atual. Isso evita colisões se várias solicitações de atualizações forem enviadas ao mesmo tempo.

    Para mais informações, consulte o método projects.setIamPolicy.

Usar VPC compartilhada

Depois que um Administrador de VPC compartilhada conclui as tarefas de ativar um projeto host, anexar os projetos de serviço necessários a ele e definir Administradores de projetos de serviço para todas ou algumas sub-redes do projeto host, os Administradores de projetos de serviço podem criar instâncias, modelos e balanceadores de carga internos nos projetos de serviço usando as sub-redes do projeto host.

Todas as tarefas nesta seção são executadas por um administrador de projeto de serviço.

É importante observar que um administrador de VPC compartilhada somente concede aos Administradores de projetos de serviço o papel de Usuário da rede do Compute (roles/compute.networkUser) para todo o projeto host ou apenas alguns das suas sub-redes. Outros papéis também são necessários aos Administradores de projetos de serviço para que administrem seus respectivos projetos de serviço. Por exemplo, um Administrador do projeto de serviço também pode ser Proprietário do projeto ou pelo menos ter o papel de Administrador da instância do Compute (roles/compute.instanceAdmin).

Liste as sub-redes disponíveis

Os Administradores de projetos de serviço podem listar as sub-redes para as quais receberam permissão seguindo estas etapas.

Console

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

Acessar VPC compartilhada

gcloud

  1. Autentique-se no gcloud como um Administrador de projetos de serviço, se ainda não tiver feito isso. Substitua SERVICE_PROJECT_ADMIN pelo nome do Administrador do projeto de serviço:

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Execute o comando abaixo, substituindo HOST_PROJECT_ID pelo ID do projeto host da VPC compartilhada:

    gcloud compute networks subnets list-usable --project HOST_PROJECT_ID
    

    O exemplo a seguir lista as sub-redes disponíveis no projeto host project-1:

    $ gcloud compute networks subnets list-usable --project project-1
    
    PROJECT    REGION       NETWORK  SUBNET    RANGE          SECONDARY_RANGES
    project-1  us-west1     net-1    subnet-1  10.138.0.0/20
    project-1  us-central1  net-1    subnet-2  10.128.0.0/20  r-1 192.168.2.0/24
                                                              r-2 192.168.3.0/24
    project-1  us-east1     net-1    subnet-3  10.142.0.0/20
    

Para mais informações, consulte o comando list-usable na documentação do SDK.

API

Liste as sub-redes disponíveis no projeto host. Faça a solicitação como um Administrador de projeto de serviço.

GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/aggregated/subnetworks/listUsable

Substitua HOST_PROJECT_ID pelo ID do projeto host que contém a rede VPC compartilhada.

Para mais informações, consulte o método subnetworks.listUsable.

Reservar um endereço IPv4 interno ou IPv6 estático

Os administradores de projetos de serviço podem reservar um endereço IPv4 ou IPv6 interno em uma sub-rede de uma rede VPC compartilhada. O objeto de configuração de endereço IP é criado no projeto de serviço, mas o valor dele vem do intervalo de endereços IPv4 disponíveis na sub-rede compartilhada escolhida.

Para reservar um endereço IP interno autônomo no projeto de serviço, conclua as etapas a seguir.

Console

  1. Configurar VPC compartilhada.
  2. No console do Google Cloud, acesse a página VPC compartilhada.

    Acessar VPC compartilhada

  3. Faça login como administrador de VPC compartilhada.

  4. Selecione o projeto de serviço no seletor de projetos.

  5. Acesse a página Endereços IP selecionando Rede VPC > Endereços IP.

  6. Clique em Reservar endereço IP estático interno.

  7. No campo Nome, digite um nome de endereço IP.

  8. Na lista Versão do IP, selecione a versão do IP necessária:

    • Para reservar um endereço IPv4 interno estático, selecione IPv4.
    • Para reservar um endereço IPv6 interno estático, selecione IPv6.
  9. Clique no botão de opção Redes compartilhadas comigo.

  10. Nas listas Rede e Sub-rede, selecione uma rede VPC e uma sub-rede, respectivamente.

  11. Especifique como você quer reservar o endereço IP:

    • Para endereços IPv4, para especificar um endereço IPv4 interno estático a ser reservado, em Endereço IP estático, selecione Deixe-me escolher e insira um IP personalizado. Caso contrário, o sistema atribuirá automaticamente um endereço IPv4 interno estático na sub-rede para você.
    • Para endereços IPv6, o sistema atribui automaticamente um endereço IPv6 interno estático do intervalo de endereços IPv6 interno da sub-rede.
  12. Opcional: se quiser compartilhar o endereço IPv4 interno estático em diferentes front-ends, em Objetivo, escolha Compartilhado. A seleção padrão é Não compartilhado.

  13. Clique em Reservar.

gcloud

  1. Autentique-se na Google Cloud CLI como Administrador de projeto de serviço, caso ainda não tenha feito isso. Substitua SERVICE_PROJECT_ADMIN pelo nome do Administrador do projeto de serviço:

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Use o comando compute addresses create.

    • Reservar endereços IPv4:

      gcloud compute addresses create IP_ADDR_NAME \
          --project SERVICE_PROJECT_ID \
          --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
          --region=REGION
          --ip-version=IPV4
      
    • Reservar endereços IPv6:

      gcloud compute addresses create IP_ADDR_NAME \
          --project SERVICE_PROJECT_ID \
          --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
          --region=REGION
          --ip-version=IPV6
      

    Substitua:

    • IP_ADDR_NAME por um nome para o objeto de endereço IPv4
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • HOST_PROJECT_ID: o ID do projeto host da VPC compartilhada.
    • REGION: a região que contém a sub-rede compartilhada.
    • SUBNET: o nome da sub-rede compartilhada.

Outros detalhes sobre a criação de endereços IP estão publicados na documentação do SDK.

API

Use o método addresses.insert.

  • Reserve um endereço IPv4 interno estático como Administrador de projeto de serviço:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/addresses
    {
    "name": "ADDRESS_NAME",
    "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
    "addressType": "INTERNAL"
    }
    

Substitua:

  • ADDRESS_NAME: um nome para o endereço IP interno reservado.
  • HOST_PROJECT_ID é o ID do projeto que contém a rede VPC compartilhada.
  • REGION: a região onde o endereço IPv4 reservado será localizado e onde a sub-rede compartilhada está localizada.
  • SERVICE_PROJECT_ID: o ID do projeto de serviço em que você está reservando o endereço IPv4.
  • SUBNET_NAME: o nome da sub-rede compartilhada.

Para mais informações, consulte o método addresses.insert.

Terraform

É possível usar um bloco de dados do Terraform para especificar as informações da sub-rede do host. Em seguida, use um recurso do Terraform para reservar um endereço IPv4 interno estático. Se você omitir o argumento address opcional, um endereço IPv4 disponível será selecionado e reservado.

Especifique a sub-rede do host:

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

Reserve um endereço IPv4 da sub-rede do projeto host para usar no projeto de serviço:

resource "google_compute_address" "internal" {
  project      = var.service_project
  region       = "us-central1"
  name         = "int-ip"
  address_type = "INTERNAL"
  address      = "10.0.0.8"
  subnetwork   = data.google_compute_subnetwork.subnet.self_link
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Reservar endereço IPv4 externo estático

Um recurso em um projeto de serviço pode usar um endereço IPv4 externo estático regional definido no projeto de serviço ou no projeto host. Portanto, um recurso nos projetos de serviço anexados pode usar um endereço IPv4 externo estático reservado no projeto host.

Reservar endereço IPv6 externo estático

Os administradores do projeto de serviço podem reservar um endereço IPv6 externo estático em um projeto de serviço. O objeto de configuração de endereço IPv6 é criado no projeto de serviço, mas o valor dele vem do intervalo de endereços disponíveis na sub-rede compartilhada escolhida.

Console

É possível reservar um endereço IPv6 externo autônomo no projeto de serviço usando o Console do Google Cloud:

  1. Configurar VPC compartilhada.
  2. No console do Google Cloud, acesse a página VPC compartilhada.
    Acessar a página "VPC compartilhada"
  3. Faça login como administrador de VPC compartilhada.
  4. Selecione o projeto de serviço no seletor de projetos.
  5. Para acessar a página Endereços IP, selecione Rede VPC > Endereços IP.
  6. Selecione Reservar endereço IP estático externo.
  7. Escolha um nome para o novo endereço.
  8. Especifique se o nível de serviço da rede é Premium ou Standard. A reserva de endereços estáticos IPv6 é suportada apenas no nível Premium.
  9. Em Versão IP, selecione IPv6.
  10. Especifique se esse endereço IP é regional ou global.
    • Se estiver reservando um endereço IP estático para um balanceador de carga global, escolha Global.
    • Se você estiver reservando um endereço IP estático para uma instância ou para um balanceador de carga regional, escolha Regional e selecione a região para criar o endereço.
  11. Escolha o seguinte:
    • Redes neste projeto: escolha esta opção se quiser reservar um endereço IPv6 externo em uma sub-rede da mesma rede da nuvem privada virtual (VPC) em que está reservando o endereço IPv6. do Google Analytics.
    • Redes compartilhadas comigo: escolha essa opção para reservar um endereço IPv6 externo em uma sub-rede de uma rede VPC compartilhada.
  12. Com base na sua escolha, selecione o seguinte:

    • Rede: a rede VPC.
    • Sub-rede: a sub-rede da qual o endereço IPv6 regional será atribuído.
    • Tipo de endpoint: escolha VM instance ou Network Load Balancer
  13. Opcional: se você tiver escolhido Instância de VM como o tipo de endpoint, selecione uma instância de VM para anexar o endereço IPv6.

  14. Clique em Reservar.

gcloud

  1. Autentique-se no gcloud como um Administrador de projetos de serviço, se ainda não tiver feito isso. Substitua SERVICE_PROJECT_ADMIN pelo nome do Administrador do projeto de serviço:

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Use o comando gcloud compute addresses create:

    gcloud compute addresses create IP_ADDR_NAME \
        --project SERVICE_PROJECT_ID \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --region=REGION \
        --ip-version=IPV6 \
        --endpoint-type=[VM | NETLB]
    

    Substitua:

    • IP_ADDR_NAME: um nome para o objeto de endereço IPv6.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • HOST_PROJECT_ID: o ID do projeto host da VPC compartilhada.
    • SUBNET: o nome da sub-rede compartilhada.
    • REGION: a região que contém a sub-rede compartilhada.

API

Para reservar um endereço IPv6 interno estático como administrador de projeto de serviço, use o método addresses.insert:

POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/addresses
{
  "name": "ADDRESS_NAME",
  "ipVersion": "IPV6",
  "ipv6EndpointType": "VM|LB",
  "networkTier": "PREMIUM",
  "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
  "addressType": "EXTERNAL"
}

Substitua:

  • SERVICE_PROJECT_ID: o ID do projeto de serviço em que você está reservando o endereço IPv6.
  • REGION: a região em que o endereço IPv6 reservado e a sub-rede compartilhada estão localizados.
  • ADDRESS_NAME: um nome para o endereço IPv6 externo estático reservado.
  • HOST_PROJECT_ID é o ID do projeto que contém a rede VPC compartilhada.
  • SUBNET_NAME: o nome da sub-rede compartilhada.

Criar uma instância

Lembre-se do seguinte ao usar a VPC compartilhada para criar uma instância:

  • O processo padrão de criação de uma instância envolve a seleção de uma zona, uma rede e uma sub-rede. A sub-rede e a zona selecionadas precisam estar na mesma região. Quando o Administrador de projeto de serviço cria uma instância usando uma sub-rede de uma rede VPC compartilhada, a zona selecionada para essa instância precisa estar na mesma região da sub-rede selecionada.

    Quando você cria uma instância com um endereço IPv4 interno estático reservado, a sub-rede e a região já estão selecionadas quando o endereço IPv4 estático é criado. Um exemplo do gcloud para criar uma instância com um endereço IPv4 interno estático é fornecido nesta seção.

  • Os Administradores do projeto de serviço só podem criar instâncias usando sub-redes para as quais receberam permissão. Para determinar quais sub-redes estão disponíveis, consulte Listar as sub-redes disponíveis.

  • Quando o Google Cloud recebe uma solicitação para criar uma instância em uma sub-rede de uma rede VPC compartilhada, ele verifica se o principal do IAM que fez a solicitação tem permissão para usar essa sub-rede compartilhada. Se a verificação falhar, a instância não será criada e o Google Cloud retornará um erro de permissão. Para receber ajuda, entre em contato com o administrador de VPC compartilhada.

  • É possível criar uma instância de pilha dupla se você criá-la em uma sub-rede de pilha dupla. As sub-redes de pilha dupla são compatíveis apenas com redes VPC de modo personalizado. O tipo de acesso IPv6 da sub-rede determina se o endereço IPv6 atribuído à VM é um endereço IPv6 interno ou externo.

Console

  1. Configurar VPC compartilhada.
  2. No console do Google Cloud, acesse a página VPC compartilhada.

    Acessar VPC compartilhada

  3. Faça login como administrador de VPC compartilhada.

  4. Selecione o projeto de serviço no seletor de projetos.

  5. Para acessar a página Criar uma instância, selecione Compute Engine > Instâncias de VM > Criar instância.

  6. Especifique um Nome para a instância.

  7. Em Região, selecione uma região que contenha uma sub-rede compartilhada.

  8. Clique em Rede em Opções avançadas.

  9. Em Interfaces de rede, clique no botão de opção Redes compartilhadas comigo.

  10. Na lista Sub-rede compartilhada, selecione a sub-rede necessária em que você quer criar a instância:

    • Para endereços IPv4, selecione qualquer sub-rede de pilha única.
    • Para endereços IPv6, selecione uma sub-rede de pilha dupla com o tipo de acesso IPv6 necessário.
  11. Selecione o tipo de pilha de IP:

    • Para endereços IPv4, selecione IPv4 (pilha única).
    • Para endereços IPv6, selecione IPv4 e IPv6 (pilha dupla).
  12. Especifique todos os outros parâmetros necessários para a instância.

  13. Clique em Criar.

gcloud

  • Crie uma instância com um endereço IPv4 interno temporário em uma sub-rede compartilhada de uma rede VPC compartilhada:

    gcloud compute instances create INSTANCE_NAME \
        --project SERVICE_PROJECT_ID \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --zone ZONE
    

    Substitua:

    • INSTANCE_NAME: o nome da instância.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • HOST_PROJECT_ID: o ID do projeto host da VPC compartilhada.
    • REGION: a região que contém a sub-rede compartilhada.
    • SUBNET: o nome da sub-rede compartilhada.
    • ZONE: uma zona na região especificada. .
  • Crie uma instância com um endereço IPv4 interno estático reservado em uma rede VPC compartilhada:

    1. Reserve um endereço IPv4 interno estático no projeto de serviço a partir do intervalo de endereços disponíveis do projeto host.
    2. Crie a instância:

      gcloud compute instances create INSTANCE_NAME \
          --project SERVICE_PROJECT_ID \
          --private-network-ip IP_ADDR_NAME \
          --zone ZONE \
          --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
      

      Substitua:

      • INSTANCE_NAME: o nome da instância.
      • SERVICE_PROJECT_ID: o ID do projeto de serviço.
      • IP_ADDR_NAME: o nome do endereço IP estático.
      • ZONE: uma zona na mesma região que IP_ADDR_NAME
      • HOST_PROJECT_ID: o ID do projeto host da VPC compartilhada.
      • REGION: a região que contém a sub-rede compartilhada.
      • SUBNET: o nome da sub-rede compartilhada associada ao endereço IPv4 interno estático.
  • Crie uma instância com um endereço IPv4 interno temporário e um endereço IPv6 temporário:

    gcloud compute instances create INSTANCE_NAME \
        --project SERVICE_PROJECT_ID \
        --stack-type IPV4_IPV6 \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --zone ZONE
    

    Substitua:

    • INSTANCE_NAME: o nome da instância.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • HOST_PROJECT_ID: o ID do projeto host da VPC compartilhada.
    • REGION: a região que contém a sub-rede compartilhada.
    • SUBNET: o nome da sub-rede compartilhada.
    • ZONE: uma zona na região especificada.
  • Crie uma instância com um endereço IPv6 externo estático reservado:

    gcloud compute instances create INSTANCE_NAME \
        --project SERVICE_PROJECT_ID \
        --stack-type IPV4_IPV6 \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --ipv6-address IPV6_ADDRESS \
        --ipv6-prefix-length=96 \
        --ipv6-network-tier PREMIUM \
        --zone ZONE
    

    Substitua:

    • INSTANCE_NAME: o nome da instância.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • HOST_PROJECT_ID: o ID do projeto host da VPC compartilhada.
    • REGION: a região que contém a sub-rede compartilhada.
    • SUBNET: o nome da sub-rede compartilhada.
    • IPV6_ADDRESS: o endereço IPv6 que será atribuído à VM.
    • ZONE: uma zona na região especificada.

API

  • Para criar uma instância com um endereço IPv4 interno temporário, especifique apenas a sub-rede:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    Substitua:

    • INSTANCE_NAME: um nome para a instância.
    • HOST_PROJECT_ID é o ID do projeto que contém a rede VPC compartilhada.
    • MACHINE_TYPE: um tipo de máquina para a instância.
    • REGION: a região que contém a sub-rede compartilhada.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • SOURCE_IMAGE: uma imagem para a instância.
    • SUBNET: o nome da sub-rede compartilhada.
    • ZONE: uma zona na região especificada.

    Para mais informações, consulte o método instances.insert.

  • Para criar uma instância com um endereço IPv4 interno reservado, especifique a sub-rede e o nome do endereço IPv4 reservado:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "networkIP": "projects/SERVICE_PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    Substitua:

    • ADDRESS_NAME: o nome do endereço IPv4 interno reservado.
    • INSTANCE_NAME: um nome para a instância.
    • HOST_PROJECT_ID é o ID do projeto que contém a rede VPC compartilhada.
    • MACHINE_TYPE: um tipo de máquina para a instância.
    • REGION: a região que contém a sub-rede compartilhada.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • SOURCE_IMAGE: uma imagem para a instância.
    • SUBNET: o nome da sub-rede compartilhada.
    • ZONE: uma zona na região especificada.

    Para mais informações, consulte o método instances.insert.

  • Para criar uma instância com um endereço IPv4 interno temporário e um endereço IPv6 temporário, especifique a sub-rede e o tipo de pilha:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "stackType": "IPv4_IPv6"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    Substitua:

    • INSTANCE_NAME: um nome para a instância.
    • HOST_PROJECT_ID é o ID do projeto que contém a rede VPC compartilhada.
    • MACHINE_TYPE: um tipo de máquina para a instância.
    • REGION: a região que contém a sub-rede compartilhada.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • SOURCE_IMAGE: uma imagem para a instância.
    • SUBNET: o nome da sub-rede compartilhada.
    • ZONE: uma zona na região especificada.

    Para mais informações, consulte o método instances.insert.

Terraform

É possível usar um bloco de dados do Terraform para especificar as informações da sub-rede do host. Em seguida, use um recurso do Terraform para criar uma instância de VM em um projeto de serviço.

Especifique a sub-rede do host:

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

Crie uma instância de VM em um projeto de serviço com um endereço IPv4 temporário da sub-rede compartilhada do projeto host:

resource "google_compute_instance" "ephemeral_ip" {
  project      = var.service_project
  zone         = "us-central1-a"
  name         = "my-vm"
  machine_type = "e2-medium"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    subnetwork = data.google_compute_subnetwork.subnet.self_link
  }
}

Crie uma instância de VM em um projeto de serviço com um endereço IPv4 estático reservado da sub-rede compartilhada do projeto host:

resource "google_compute_instance" "reserved_ip" {
  project      = var.service_project
  zone         = "us-central1-a"
  name         = "reserved-ip-instance"
  machine_type = "e2-medium"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    subnetwork = data.google_compute_subnetwork.subnet.self_link
    network_ip = google_compute_address.internal.address
  }
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Criar um modelo de instância

Lembre-se do seguinte ao usar a VPC compartilhada para criar um modelo de instância:

  • O processo para criar um modelo de instância envolve selecionar uma rede e uma sub-rede.

    • Os modelos criados para uso em uma rede VPC compartilhada em modo personalizado precisam especificar a rede e uma sub-rede.

    • Os modelos criados para uso em uma rede VPC compartilhada em modo automático podem opcionalmente adiar a seleção de uma sub-rede. Nesses casos, uma sub-rede é selecionada na mesma região de qualquer grupo gerenciado de instâncias que use o modelo. Por definição, as redes de modo automático têm uma sub-rede em cada região.

  • Quando o principal do IAM cria um modelo de instância, o Google Cloud não realiza uma verificação de permissões para ver se o principal pode usar a sub-rede especificada. Essa verificação de permissões é sempre adiada quando é solicitado um grupo gerenciado de instâncias que usa o modelo.

  • É possível criar um modelo de instância de pilha dupla se criar o modelo em uma sub-rede de pilha dupla. As sub-redes de pilha dupla são compatíveis apenas com redes VPC de modo personalizado. O tipo de acesso IPv6 da sub-rede determina se o endereço IPv6 atribuído à VM é um endereço IPv6 interno ou externo.

Console

  1. Configurar VPC compartilhada.
  2. No console do Google Cloud, acesse a página VPC compartilhada.
    Acessar a página "VPC compartilhada"
  3. Faça login como administrador de VPC compartilhada.
  4. Selecione o projeto de serviço no seletor de projetos.
  5. Para acessar a página Criar um modelo de instância, selecione Compute Engine > Modelos de instância > Criar modelos de instância.
  6. Especifique um Nome para o modelo de instância.
  7. Na seção Opções avançadas, clique em Rede.
  8. Na seção Interfaces de rede, clique no botão de opção Redes compartilhadas comigo.
  9. Na lista Sub-rede compartilhada, selecione a sub-rede necessária em que você quer criar o modelo de instância:
    • Para endereços IPv4, selecione qualquer sub-rede de pilha única.
    • Para endereços IPv6, selecione uma sub-rede de pilha dupla com o tipo de acesso IPv6 necessário.
  10. Selecione o tipo de pilha de IP:
    • Para endereços IPv4, selecione IPv4 (pilha única).
    • Para endereços IPv6, selecione IPv4 e IPv6 (pilha dupla).
  11. Especifique todos os outros parâmetros necessários para o modelo de instância.
  12. Clique em Criar.

gcloud

  • Crie um modelo de instância somente IPv4 para uso em qualquer sub-rede criada automaticamente de uma rede VPC compartilhada em modo automático:

    gcloud compute instance-templates create TEMPLATE_NAME \
        --project SERVICE_PROJECT_ID \
        --network projects/HOST_PROJECT_ID/global/networks/NETWORK
    

    Substitua:

    • TEMPLATE_NAME: o nome do modelo.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • HOST_PROJECT_ID: o ID do projeto host da VPC compartilhada.
    • NETWORK: o nome da rede VPC compartilhada.
  • Para criar um modelo de instância somente IPv4 para uma sub-rede criada manualmente em uma rede VPC compartilhada (em modo automático ou personalizado):

    gcloud compute instance-templates create TEMPLATE_NAME \
        --project SERVICE_PROJECT_ID \
        --region REGION \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    Substitua:

    • TEMPLATE_NAME: o nome do modelo.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • HOST_PROJECT_ID: o ID do projeto host da VPC compartilhada.
    • REGION: a região que contém a sub-rede compartilhada.
    • SUBNET: o nome da sub-rede compartilhada.
  • Crie um modelo de instância de pilha dupla que usa uma sub-rede em uma rede VPC compartilhada em modo personalizado:

    gcloud compute instance-templates create TEMPLATE_NAME \
        --project SERVICE_PROJECT_ID \
        --stack-type IPV4_IPV6 \
        --region REGION \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    Substitua:

    • TEMPLATE_NAME: o nome do modelo.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • HOST_PROJECT_ID: o ID do projeto host da VPC compartilhada.
    • REGION: a região que contém a sub-rede compartilhada.
    • SUBNET: o nome da sub-rede compartilhada.

API

  • Para criar um modelo de instância somente IPv4 que use qualquer sub-rede criada automaticamente de uma rede VPC compartilhada de modo automático, especifique a rede VPC:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK"
        }
      ]
    ...
    }
    

    Substitua:

    • HOST_PROJECT_ID é o ID do projeto que contém a rede VPC compartilhada.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • NETWORK: o nome da rede VPC compartilhada.

    Para mais informações, consulte o método instanceTemplates.insert.

  • Para criar um modelo de instância somente IPv4 que use uma sub-rede criada manualmente em uma rede VPC compartilhada (modo automático ou personalizado), especifique a sub-rede:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
        }
      ]
    ...
    }
    

    Substitua:

    • HOST_PROJECT_ID é o ID do projeto que contém a rede VPC compartilhada.
    • REGION: a região que contém a sub-rede compartilhada.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • SUBNET_NAME: o nome da sub-rede compartilhada.

    Para mais informações, consulte o método instanceTemplates.insert.

  • Para criar um modelo de instância de pilha dupla que use uma sub-rede em uma rede VPC compartilhada em modo personalizado, especifique a sub-rede e o tipo de pilha:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "stackType": "IPV4_IPV6"
        }
      ]
    ...
    }
    

    Substitua:

    • HOST_PROJECT_ID é o ID do projeto que contém a rede VPC compartilhada.
    • REGION: a região que contém a sub-rede compartilhada.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • SUBNET_NAME: o nome da sub-rede compartilhada.

    Para mais informações, consulte o método instanceTemplates.insert.

Terraform

É possível usar um bloco de dados do Terraform para especificar as informações da sub-rede do host. Em seguida, use um recurso do Terraform para criar um modelo de instância de VM. Os endereços IPv4 das VMs vêm da sub-rede compartilhada do projeto host.

A sub-rede precisa estar na mesma região em que as instâncias de VM serão criadas.

Especifique a sub-rede do host:

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

Crie um modelo de instância de VM no projeto de serviço:

resource "google_compute_instance_template" "default" {
  project      = var.service_project
  name         = "appserver-template"
  description  = "This template is used to create app server instances."
  machine_type = "n1-standard-1"
  disk {
    source_image = "debian-cloud/debian-9"
  }
  network_interface {
    subnetwork = data.google_compute_subnetwork.subnet.self_link
  }
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Criar um grupo gerenciado de instâncias

Considere isto ao criar um grupo de instâncias gerenciadas usando a VPC compartilhada:

  • Os grupos de instâncias gerenciadas usados com a VPC compartilhada exigem que a conta de serviço das APIs do Google seja um Administrador do projeto de serviço, uma vez que tarefas como a criação automática de instâncias via escalonamento automático são realizadas por essa conta de serviço.

  • O processo padrão de criação de um grupo de instâncias gerenciadas envolve a seleção de uma zona ou região, dependendo do tipo de grupo e de um modelo de instância. Os detalhes de rede e sub-rede estão vinculados ao modelo de instância. Os modelos de instância qualificados são restritos àqueles que fazem referência a sub-redes na mesma região usada pelo grupo de instâncias gerenciadas.

  • Os Administradores do projeto de serviço só podem criar grupos de instâncias gerenciadas com instâncias de membro que usam sub-redes para as quais receberam permissão. Como os detalhes da rede e da sub-rede estão vinculados ao modelo da instância, os Administradores do projeto de serviço só podem usar modelos que se referem às sub-redes que estão autorizados a usar.

  • Quando o Google Cloud recebe uma solicitação para criar um grupo gerenciado de instâncias, ele verifica se o principal do IAM que fez a solicitação tem permissão para usar a sub-rede (na mesma região que o grupo) especificada no modelo. Se a verificação falhar, o grupo gerenciado de instâncias não será criado, e o Google Cloud retornará um erro: Required 'compute.subnetworks.use' permission for 'projects/SUBNET_NAME.

    Liste as sub-redes disponíveis para determinar quais podem ser usadas. Entre em contato com o Administrador da VPC compartilhada se a conta de serviço precisar de acesso adicional. Saiba mais em Contas de serviço como Administradores de projetos de serviço.

Para mais informações, consulte a seção Como criar grupos de instâncias gerenciadas na documentação do Compute Engine.

Criar um balanceador de carga HTTP(S)

Há muitas maneiras de configurar balanceadores de carga de aplicativo externos em uma rede VPC compartilhada. Independentemente do tipo de implantação, todos os componentes do balanceador de carga precisam estar na mesma organização e na mesma rede VPC compartilhada.

Para saber mais sobre arquiteturas de VPC compartilhada compatíveis, consulte:

Criar um balanceador de carga de rede de passagem interno

O exemplo a seguir ilustra o que você precisa considerar ao criar um balanceador de carga de rede de passagem interno em uma rede VPC compartilhada. Os administradores de projetos de serviço podem criar um balanceador de carga de rede de passagem interno que use uma sub-rede (no projeto host) a que eles tenham acesso. A regra de encaminhamento interno do balanceador de carga é definida no projeto de serviço, mas a respectiva referência de sub-rede aponta para uma sub-rede em uma rede VPC compartilhada do projeto host.

Antes de criar um balanceador de carga de rede de passagem interno em um ambiente de VPC compartilhada, consulte a arquitetura de VPC compartilhada.

Console

  1. Acesse a página Balanceamento de carga no Console do Google Cloud.
    Acessar a página "Balanceamento de carga"

  2. Crie seu balanceador de carga TCP/UDP interno, fazendo o seguinte ajuste: na seção Configurar serviços de front-end, selecione a sub-rede da VPC compartilhada da seção Redes compartilhadas por outros projetos do menu Sub-rede.

  3. Conclua a criação do balanceador de carga.

gcloud

Ao criar a regra de encaminhamento interno, especifique uma sub-rede no projeto host com a sinalização --subnet:

gcloud compute forwarding-rules create FR_NAME \
    --project SERVICE_PROJECT_ID \
    --load-balancing-scheme internal \
    --region REGION \
    --ip-protocol IP_PROTOCOL \
    --ports PORT,PORT,... \
    --backend-service BACKEND_SERVICE_NAME \
    --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
    --address INTERNAL_IP

Substitua:

  • FR_NAME: o nome da regra de encaminhamento.
  • SERVICE_PROJECT_ID: o ID do projeto de serviço.
  • REGION: a região que contém a sub-rede compartilhada.
  • IP_PROTOCOL: TCP ou UDP, correspondentes ao protocolo do serviço de back-end do balanceador de carga.
  • PORT: a porta numérica ou a lista de portas do balanceador de carga.
  • BACKEND_SERVICE_NAME: o nome do serviço de back-end, criado como parte do procedimento geral para criar um balanceador de carga de rede de passagem interno.
  • HOST_PROJECT_ID: o ID do projeto host da VPC compartilhada.
  • SUBNET: o nome da sub-rede compartilhada.
  • INTERNAL_IP: um endereço IP interno na sub-rede compartilhada. Se não for especificado, será selecionado um que esteja disponível

Para mais opções, consulte o comando gcloud compute forwarding-rules create.

API

Crie a regra de encaminhamento interno e especifique uma sub-rede no projeto host.

POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/forwardingRules
{
  "name": "FR_NAME",
  "IPAddress": "IP_ADDRESS",
  "IPProtocol": "PROTOCOL",
  "ports": [ "PORT", ... ],
  "loadBalancingScheme": "INTERNAL",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET",
  "network": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME",
  "backendService": "https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/us-west1/backendServices/BE_NAME",
  "networkTier": "PREMIUM"
}

Substitua:

  • BE_NAME: o nome do serviço de back-end, já criado como parte do procedimento geral para criar um balanceador de carga de rede de passagem interno.
  • FR_NAME: um nome para a regra de encaminhamento.
  • HOST_PROJECT_ID: o ID do projeto host da VPC compartilhada.
  • IP_ADDRESS: um endereço IP interno na sub-rede compartilhada.
  • IP_PROTOCOL: TCP ou UDP, correspondentes ao protocolo do serviço de back-end do balanceador de carga.
  • PORT: a porta numérica ou a lista de portas do balanceador de carga.
  • REGION: a região que contém a sub-rede compartilhada.
  • SERVICE_PROJECT_ID: o ID do projeto de serviço.
  • SUBNET: o nome da sub-rede compartilhada.

Para mais informações, consulte o método forwardingRules.insert.

Terraform

É possível usar um bloco de dados do Terraform para especificar a sub-rede do host e a rede do host. Em seguida, use um recurso do Terraform para criar a regra de encaminhamento.

Especifique a rede do host:

data "google_compute_network" "network" {
  name    = "my-network-123"
  project = var.project
}

Especifique a sub-rede do host:

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

No projeto de serviço, crie uma regra de encaminhamento na rede e na sub-rede do projeto do host:

resource "google_compute_forwarding_rule" "default" {
  project               = var.service_project
  name                  = "l4-ilb-forwarding-rule"
  backend_service       = google_compute_region_backend_service.default.id
  region                = "europe-west1"
  ip_protocol           = "TCP"
  load_balancing_scheme = "INTERNAL"
  all_ports             = true
  allow_global_access   = true
  network               = data.google_compute_network.network.self_link
  subnetwork            = data.google_compute_subnetwork.subnet.self_link
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

A seguir