Aprovisione a VPC partilhada

A VPC partilhada permite-lhe exportar sub-redes de uma rede da nuvem virtual privada (VPC) num projeto anfitrião para outros projetos de serviço na mesma organização. As instâncias nos projetos de serviço podem ter ligações de rede nas sub-redes partilhadas do projeto anfitrião. Esta página descreve como configurar e usar a VPC partilhada, incluindo alguma preparação administrativa necessária para a sua organização.

A VPC partilhada suporta a exportação de sub-redes de qualquer tipo de pilha.

Para obter informações sobre como desassociar projetos de serviço ou remover completamente a configuração da VPC partilhada, consulte o artigo Desaprovisione a VPC partilhada.

A VPC partilhada também é referida como "XPN" na API e na interface de linha de comandos.

Quotas, limites e recursos elegíveis

Antes de começar, certifique-se de que conhece a VPC partilhada e o IAM, especificamente:

Prepare a sua organização

Tenha em atenção as seguintes informações quando preparar a sua organização.

Administradores e IAM

A preparação da sua organização, a configuração de projetos anfitriões da VPC partilhada e a utilização de redes VPC partilhadas envolvem, no mínimo, três funções de gestão de identidade e de acesso (IAM) administrativas diferentes. Para mais detalhes sobre cada função e informações sobre as funções opcionais, consulte a secção Administradores e IAM da vista geral da VPC partilhada.

Restrições de políticas da organização

As restrições da política da organização podem proteger os recursos da VPC partilhada ao nível do projeto, da pasta ou da organização. As secções seguintes descrevem cada política.

Impeça a eliminação acidental de projetos anfitriões

A eliminação acidental de um projeto anfitrião provocaria interrupções em todos os projetos de serviço anexados. Quando um projeto é configurado para ser um projeto anfitrião da VPC partilhada, é colocado um bloqueio especial, denominado lien, no mesmo. Enquanto o bloqueio estiver presente, impede a eliminação acidental do projeto. A restrição é removida automaticamente do projeto anfitrião quando deixa de estar configurada para a VPC partilhada.

Um utilizador com a função orgpolicy.policyAdmin pode definir uma restrição de política ao nível da organização (constraints/compute.restrictXpnProjectLienRemoval) que limita a remoção de ónus apenas às seguintes funções:

  • Utilizadores com roles/owner ou roles/resourcemanager.lienModifier ao nível da organização
  • Utilizador com funções personalizadas que incluem as autorizações resourcemanager.projects.get e resourcemanager.projects.updateLiens ao nível da organização

Isto impede eficazmente que um proprietário do projeto que não tenha a função roles/owner ao nível da organização ou a função resourcemanager.lienModifier ao nível da organização elimine acidentalmente um projeto anfitrião da VPC partilhada. Para mais informações sobre as autorizações associadas à função resourcemanager.lienModifier, consulte o artigo Colocar um ónus num projeto na documentação do Resource Manager.

Uma vez que uma política da organização se aplica a todos os projetos na organização, só tem de seguir estes passos uma vez para restringir a remoção de ónus.

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

    gcloud auth login ORG_ADMIN
    
  2. Determine o número de ID da sua organização consultando o resultado deste comando.

    gcloud organizations list
    
  3. Aplique a política de compute.restrictXpnProjectLienRemoval à sua organização executando este comando. Substitua ORG_ID pelo número que determinou no passo anterior.

    gcloud resource-manager org-policies enable-enforce \
        --organization ORG_ID compute.restrictXpnProjectLienRemoval
    
  4. Termine sessão no gcloud se tiver terminado de realizar tarefas como administrador da organização para proteger a sua conta.

    gcloud auth revoke ORG_ADMIN
    

Restrinja os anexos do projeto anfitrião

Por predefinição, um administrador da VPC partilhada pode associar um projeto não anfitrião a qualquer projeto anfitrião na mesma organização. Um administrador de políticas organizacionais pode limitar o conjunto de projetos anfitriões aos quais um projeto não anfitrião ou projetos não anfitriões numa pasta ou organização podem ser anexados. Para mais informações, consulte a restrição constraints/compute.restrictSharedVpcHostProjects.

Restrinja as sub-redes no projeto anfitrião que um projeto de serviço pode usar

Por predefinição, depois de configurar a VPC partilhada, os principais do IAM nos projetos de serviço podem usar qualquer sub-rede no projeto anfitrião se tiverem as autorizações do IAM adequadas. Além de gerir as autorizações de utilizadores individuais, um administrador da política organizacional pode definir uma política para definir o conjunto de sub-redes que podem ser acedidas por um projeto específico ou por projetos numa pasta ou organização. Para mais informações, consulte a restrição de constraints/compute.restrictSharedVpcSubnetworks.

Evite o encerramento acidental de projetos anfitriões

A desassociação da faturação numa rede VPC partilhada pode levar a um encerramento completo de todos os recursos dependentes, incluindo projetos de serviços. Para evitar a ocorrência possível de um encerramento acidental da VPC partilhada devido à faturação inativa ou desativada, proteja a associação entre o projeto anfitrião e a respetiva conta de faturação.

Indique administradores da VPC partilhada

Um administrador da organização pode conceder a um ou mais principais da IAM as funções de administrador da VPC partilhada e administrador da IAM do projeto.

A função de administrador da IAM do projeto concede aos administradores da VPC partilhada autorização para partilhar todas as sub-redes existentes e futuras, e não apenas sub-redes individuais. Esta concessão cria uma associação ao nível da organização ou da pasta, e não ao nível do projeto. Assim, os principais da IAM têm de ser definidos na organização e não apenas num projeto da mesma.

Consola

Para conceder a função de administrador da VPC partilhada ao nível da organização

  1. Inicie sessão na consola do Google Cloud como administrador da organização e, de seguida, aceda à página do IAM.

    Aceda à página IAM

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

    Se selecionar um projeto, o menu Funções apresenta entradas incorretas.

  3. Clique em Adicionar.

  4. Introduza os endereços de email dos Novos membros.

  5. No menu Funções, selecione Compute Engine > Administrador da VPC partilhada do Compute.

  6. Clique em Adicionar outra função.

  7. No menu pendente Funções, selecione Resource Manager > Project IAM Admin.

  8. Clique em Guardar.

Para conceder a função de administrador da VPC partilhada ao nível da pasta

  1. Inicie sessão na consola do Google Cloud como administrador da organização e, de seguida, aceda à página do IAM.

    Aceda à página IAM

  2. No menu do projeto, selecione a pasta.

    Se selecionar um projeto ou uma organização, as opções apresentadas estão incorretas.

  3. Clique em Adicionar.

  4. Introduza os endereços de email dos Novos membros.

  5. Em Selecionar uma função, selecione Compute Engine > Administrador da VPC partilhada do Compute.

  6. Clique em Adicionar outra função.

  7. No menu Funções, selecione Resource Manager > Administrador de IAM do projeto.

  8. Clique em Adicionar outra função.

  9. No menu Funções, selecione Resource Manager > Visualizador da rede de computação.

  10. Clique em Guardar.

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. Determine o número de ID da sua organização consultando o resultado deste comando.

    gcloud organizations list
    
  3. Para atribuir a função de administrador da VPC partilhada ao nível da organização, faça o seguinte:

    1. Aplique a função de administrador da VPC partilhada a um principal do IAM existente. Substitua ORG_ID pelo número de ID da organização do passo anterior e EMAIL_ADDRESS pelo endereço de email do utilizador ao qual está a conceder a função de administrador da VPC partilhada.

      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 a função de administrador da VPC partilhada ao nível da pasta, faça o seguinte:

    1. Determine o ID da pasta consultando o resultado deste comando.

      gcloud resource-manager folders list --organization=ORG_ID
      
    2. Aplique a função de administrador da VPC partilhada a um principal do IAM existente. Substitua ORG_ID pelo número de ID da organização do passo anterior e EMAIL_ADDRESS pelo endereço de email do utilizador ao qual está a conceder a função de administrador da VPC partilhada.

      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 comandos quando terminar de realizar tarefas para proteger a sua conta.gcloud

    gcloud auth revoke ORG_ADMIN
    

API

  • Para atribuir a função de administrador da VPC partilhada ao nível da organização, use o seguinte procedimento:

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

      POST https://cloudresourcemanager.googleapis.com/v1/organizations
      
    2. Descreva e, em seguida, registe os detalhes da política da sua organização existente.

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

      Substitua ORG_ID pelo ID da sua organização.

    3. Atribua a função de administrador da VPC partilhada.

      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 o seguinte:

      • ORG_ID: o ID da organização que contém o utilizador ao qual está a conceder a função de administrador da VPC partilhada.
      • EMAIL_ADDRESS: o endereço de email do utilizador.
      • ETAG: um identificador exclusivo que recebeu quando descreveu a política existente. Impede colisões se forem enviados vários pedidos de atualização em simultâneo.

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

  • Para atribuir a função de administrador da VPC partilhada ao nível da pasta, use o seguinte pedido:

    1. Determine o número de ID da sua 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 sua organização.

    3. Descreva e, em seguida, registe os detalhes da política de pastas existente.

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

      Substitua FOLDER_ID pelo ID da sua pasta.

    4. Atribua a função de administrador da VPC partilhada.

      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 o seguinte:

      • FOLDER_ID: o ID da organização que contém o utilizador ao qual está a conceder a função de administrador da VPC partilhada.
      • EMAIL_ADDRESS: o endereço de email do utilizador.
      • ETAG: um identificador exclusivo que recebeu quando descreveu a política existente. Impede colisões se forem enviados vários pedidos de atualização ao mesmo tempo.

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

Configure a VPC partilhada

Todas as tarefas nesta secção têm de ser realizadas por um administrador da VPC partilhada.

Ative um projeto anfitrião

Numa organização, os administradores da VPC partilhada podem designar projetos como projetos anfitriões da VPC partilhada, sujeitos a quotas e limites, seguindo este procedimento. Os administradores da VPC partilhada também podem criar e eliminar projetos se tiverem a função de criador de projetos e a função de eliminador de projetos (roles/resourcemanager.projectCreator e roles/resourcemanager.projectDeleter) para a sua organização.

Quando ativa um projeto anfitrião, os recursos de rede do projeto não são partilhados automaticamente com os projetos de serviço. Tem de anexar projetos de serviço ao projeto anfitrião para partilhar redes e sub-redes selecionadas com os projetos de serviço.

Consola

Se ainda não tiver a função de administrador da VPC partilhada do Compute (roles/compute.xpnAdmin), não pode ver esta página na consola Google Cloud .

  1. Na Google Cloud consola, aceda à página VPC partilhada.

    Aceda à VPC partilhada

  2. Inicie sessão como administrador da VPC partilhada.

  3. Selecione o projeto que quer ativar como projeto anfitrião da VPC partilhada no seletor de projetos.

  4. Clique em Configurar VPC partilhada.

  5. Na página seguinte, clique em Guardar e continuar em Ativar projeto anfitrião.

  6. Em Selecionar sub-redes, faça uma das seguintes ações:

    1. Clique em Partilhar todas as sub-redes (autorizações ao nível do projeto) se precisar de partilhar todas as sub-redes atuais e futuras nas redes VPC do projeto anfitrião com os projetos de serviço e os administradores do projeto de serviço especificados nos passos seguintes.
    2. Clique em Sub-redes individuais (autorizações ao nível da sub-rede) se precisar de partilhar seletivamente sub-redes das redes VPC do projeto anfitrião com projetos de serviço e administradores de projetos de serviço. Em seguida, selecione Sub-redes a partilhar.
  7. Clique em Continuar.
    É apresentado o ecrã seguinte.

  8. Em Nomes dos projetos, especifique os projetos de serviço a anexar ao projeto anfitrião. Tenha em atenção que a associação de projetos de serviço não define administradores de projetos de serviço. Isto é feito no passo seguinte.

  9. Na secção Selecionar utilizadores por função, adicione administradores do projeto de serviço. Estes utilizadores vão receber a função do IAM de compute.networkUser para as sub-redes partilhadas. Apenas os administradores do projeto de serviço podem criar recursos nas sub-redes do projeto anfitrião da VPC partilhada.

  10. Clique em Guardar.

gcloud

  1. Autentique-se no gcloud como administrador da VPC partilhada. Substitua SHARED_VPC_ADMIN pelo nome do administrador da VPC partilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Ative a VPC partilhada para o projeto que tem de se tornar um projeto anfitrião. Substitua HOST_PROJECT_ID pelo ID do projeto.

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

    gcloud compute shared-vpc organizations list-host-projects ORG_ID
    
  4. Se só precisou de ativar um projeto anfitrião, pode terminar sessão no gcloud para proteger as credenciais da sua conta de administrador da VPC partilhada. Caso contrário, ignore este passo e continue com os passos para anexar projetos de serviço.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Ative a VPC partilhada para o projeto através de credenciais com autorizações de administrador da VPC partilhada.

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

    Substitua HOST_PROJECT_ID pelo ID do projeto que vai ser um projeto anfitrião da VPC partilhada.

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

  2. Confirme que o projeto está listado como um projeto anfitrião.

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

    Substitua HOST_PROJECT_ID pelo ID do projeto anfitrião da VPC partilhada.

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

Terraform

Pode usar um recurso do Terraform para ativar um projeto anfitrião.

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 os comandos básicos do Terraform.

Anexe projetos de serviço

Um projeto de serviço tem de ser anexado a um projeto anfitrião antes de os administradores do projeto de serviço poderem usar a VPC partilhada. Um administrador da VPC partilhada tem de executar os seguintes passos para concluir a associação.

Um projeto de serviço só pode ser anexado a um projeto anfitrião, mas um projeto anfitrião suporta vários anexos de projetos de serviço. Consulte os limites específicos da VPC partilhada na página de quotas da VPC para ver detalhes.

Consola

  1. Inicie sessão na Google Cloud consola como administrador da VPC partilhada.
  2. Na Google Cloud consola, aceda à página VPC partilhada.
    Aceda à página VPC partilhada
  3. Clique no separador Projetos anexados.
  4. No separador Projetos anexados, clique no botão Anexar projetos.
  5. Selecione as caixas dos projetos de serviço a anexar na secção Nomes dos projetos. Tenha em atenção que a associação de projetos de serviço não define administradores de projetos de serviço. Isto é feito no passo seguinte.
  6. Na secção Autorizações de rede VPC, selecione as funções cujos diretores vão receber a função compute.networkUser. Os principais da IAM recebem a função de utilizador da rede para todo o projeto anfitrião ou determinadas sub-redes no projeto anfitrião, com base no modo de partilha de rede da VPC. Estes principais são conhecidos como administradores de projetos de serviço nos respetivos projetos de serviço.
  7. Na secção Modo de partilha da rede de VPC, selecione uma das seguintes opções:
    1. Clique em Partilhar todas as sub-redes (autorizações ao nível do projeto) para partilhar todas as sub-redes atuais e futuras nas redes VPC do projeto anfitrião com todos os projetos de serviço e administradores do projeto de serviço.
    2. Clique em Sub-redes individuais (autorizações ao nível da sub-rede) se precisar de partilhar seletivamente sub-redes de redes VPC do projeto anfitrião com projetos de serviço e administradores de projetos de serviço. Em seguida, selecione Sub-redes a partilhar.
  8. Clique em Guardar.

gcloud

  1. Se ainda não o fez, autentique-se no gcloud como administrador da VPC partilhada. Substitua SHARED_VPC_ADMIN pelo nome do administrador da VPC partilhada:

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

    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, pode listar os projetos de serviço anexados ao projeto anfitrião:

    gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
    
  5. Se só precisava de anexar um projeto de serviço, pode terminar sessão no gcloud para proteger as credenciais da sua conta de administrador da VPC partilhada. Caso contrário, ignore este passo e defina os administradores do projeto 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 anfitrião de VPC partilhada.

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

    Substitua o seguinte:

    • HOST_PROJECT_ID: o ID do projeto anfitrião da VPC partilhada.
    • SERVICE_PROJECT: o ID do projeto de serviço a anexar.

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

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

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

    Substitua o seguinte:

    • HOST_PROJECT_ID: o ID do projeto anfitrião da VPC partilhada.

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

Terraform

Pode usar 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 os comandos básicos do Terraform.

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

Um administrador da VPC partilhada pode atribuir um principal da IAM de um projeto de serviço para ser um administrador do projeto de serviço com acesso a todas as sub-redes no projeto anfitrião. Os administradores do projeto de serviço deste tipo recebem a função de compute.networkUser para todo o projeto anfitrião. Isto significa que têm acesso a todas as sub-redes definidas e futuras no projeto anfitrião.

Um utilizador que tenha a função compute.networkUser no projeto anfitrião pode ver todas as sub-redes nos projetos de serviço anexados.

Consola

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 num projeto anfitrião através daGoogle Cloud consola, consulte a secção Anexe projetos de serviço.

gcloud

Estes passos abrangem a definição de um principal da IAM a partir de um projeto de serviço como administrador do projeto de serviço com acesso a todas as sub-redes num projeto anfitrião. Antes de poder realizar estes passos, tem de ter ativado um projeto anfitrião e anexado o projeto de serviço ao projeto anfitrião.

  1. Se ainda não o fez, autentique-se no gcloud como administrador da VPC partilhada. Substitua SHARED_VPC_ADMIN pelo nome do administrador da VPC partilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Crie uma associação de políticas para tornar um principal do IAM do projeto de serviço num administrador do projeto de serviço. Substitua HOST_PROJECT_ID pelo ID do projeto do projeto anfitrião e SERVICE_PROJECT_ADMIN pelo endereço de email do utilizador administrador do projeto de serviço.

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

    Pode especificar diferentes tipos de responsáveis alterando o formato do argumento --member:

    • Use group: para especificar um grupo Google (por endereço de email) como um principal.
    • Use domain: para especificar um domínio Google como principal.
    • Use serviceAccount: para especificar uma conta de serviço. Consulte o artigo Contas de serviço como administradores do projeto de serviço para mais informações sobre este exemplo de utilização.
  3. Repita o passo anterior para cada administrador do projeto de serviço adicional que precisa de definir.

  4. Se tiver terminado de definir os administradores do projeto de serviço, pode terminar sessão no gcloud para proteger as credenciais da sua conta de administrador da VPC partilhada.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Descreva e, em seguida, registe os detalhes da sua política de projetos existente. Precisa da política existente e do valor etag.

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

    Substitua HOST_PROJECT_ID pelo ID do projeto anfitrião da VPC partilhada.

  2. Crie uma associação de políticas para designar os principais da IAM no projeto de serviço como administradores do projeto 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 o seguinte:

    • HOST_PROJECT_ID: o ID do projeto anfitrião que contém a rede VPC partilhada.
    • PRINCIPAL: uma identidade à qual a função está associada, como um utilizador, um grupo, um domínio ou uma conta de serviço. Para mais informações, consulte o campo members na documentação do Resource Manager.
    • ETAG: um identificador exclusivo que recebeu quando descreveu a política existente. Impede colisões se forem enviados vários pedidos de atualização ao mesmo tempo.

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

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

Um administrador da VPC partilhada pode atribuir um principal do IAM de um projeto de serviço para ser um administrador do projeto de serviço com acesso apenas a algumas das sub-redes no projeto anfitrião. Esta opção oferece um meio mais detalhado de definir administradores do projeto de serviço, concedendo-lhes a função compute.networkUser apenas para algumas sub-redes no projeto anfitrião.

Um utilizador que tenha a função compute.networkUser no projeto anfitrião pode ver todas as sub-redes nos projetos de serviço anexados.

Consola

Para definir um principal do IAM de um projeto de serviço como administrador do projeto de serviço com acesso apenas a algumas sub-redes num projeto anfitrião através daGoogle Cloud consola, consulte a secção Anexe projetos de serviço.

gcloud

Estes passos abrangem a definição de principais do IAM a partir de um projeto de serviço como administradores do projeto de serviço com acesso apenas a algumas sub-redes num projeto anfitrião. Antes de poder defini-los, tem de ter ativado um projeto anfitrião e anexado o projeto de serviço ao projeto anfitrião.

  1. Se ainda não o fez, autentique-se no gcloud como administrador da VPC partilhada. Substitua SHARED_VPC_ADMIN pelo nome do administrador da VPC partilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Escolha a sub-rede no projeto anfitrião à qual os administradores do projeto de serviço devem ter acesso. Obter a respetiva Política IAM atual no formato JSON. Substitua SUBNET_NAME pelo nome da sub-rede no projeto anfitrião e HOST_PROJECT_ID pelo ID do projeto anfitrião.

    gcloud compute networks subnets get-iam-policy SUBNET_NAME \
        --region SUBNET_REGION \
        --project HOST_PROJECT_ID \
        --format json
    
  3. Copie o resultado JSON do passo anterior e guarde-o num ficheiro. Para facilitar a compreensão, estes passos guardam o ficheiro com o nome subnet-policy.json.

  4. Modifique o ficheiro subnet-policy.json, adicionando os principais da IAM que se tornarão administradores do projeto de serviço com acesso à sub-rede. Substitua cada SERVICE_PROJECT_ADMIN pelo endereço de email de um utilizador do IAM do projeto de serviço.

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

    Tenha em atenção que pode especificar diferentes tipos de principais do IAM (exceto utilizadores) na política:

    • Substitua user: por group: para especificar um Grupo Google (por endereço de email) como um principal.
    • Troque user: por domain: para especificar um domínio Google como principal.
    • Use serviceAccount: para especificar uma conta de serviço. Consulte o artigo Contas de serviço como administradores do projeto de serviço para mais informações sobre este exemplo de utilização.
  5. Atualize a associação da política para a sub-rede através do conteúdo do ficheiro subnet-policy.json.

    gcloud compute networks subnets set-iam-policy SUBNET_NAME subnet-policy.json \
        --region SUBNET_REGION \
        --project HOST_PROJECT_ID
    
  6. Se tiver terminado de definir os administradores do projeto de serviço, pode terminar sessão no gcloud para proteger as credenciais da sua conta de administrador da VPC partilhada.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Descreva e, em seguida, registe os detalhes da sua política de sub-rede existente. Precisa da política existente e do valor etag.

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

    Substitua o seguinte:

    • HOST_PROJECT_ID: o ID do projeto anfitrião que contém a rede VPC partilhada.
    • SUBNET_NAME: o nome da sub-rede a partilhar.
    • SUBNET_REGION: a região em que a sub-rede está localizada.
  2. Conceda aos administradores do projeto de serviço acesso às sub-redes no projeto anfitrião através da atualização da política de sub-rede.

    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 o seguinte:

    • ETAG: um identificador exclusivo que recebeu quando descreveu a política existente. Impede colisões se forem enviados vários pedidos de atualização ao mesmo tempo.
    • HOST_PROJECT_ID: o ID do projeto anfitrião que contém a rede VPC partilhada.
    • PRINCIPAL: uma identidade à qual a função está associada, como um utilizador, um grupo, um domínio ou uma 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 partilhar.
    • SUBNET_REGION: a região em que a sub-rede está localizada.

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

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

Um administrador da VPC partilhada também pode definir contas de serviço de projetos de serviço como administradores de projetos de serviço. Esta secção ilustra como definir dois tipos diferentes de contas de serviço como administradores do projeto de serviço:

A função de administrador do projeto de serviço (compute.networkUser) pode ser concedida para todas as sub-redes ou apenas algumas sub-redes do projeto anfitrião. No entanto, para simplificar as instruções, esta secção apenas ilustra como definir cada um dos dois tipos de contas de serviço como administradores do projeto de serviço para todas as sub-redes do projeto anfitrião.

Contas de serviço geridas pelo utilizador como administradores do projeto de serviço

Estas instruções descrevem como definir uma conta de serviço gerida pelo utilizador como administrador do projeto de serviço para todas as sub-redes do projeto anfitrião de VPC partilhada.

Consola

  1. Inicie sessão na Google Cloud consola como administrador da VPC partilhada.
  2. Na Google Cloud consola, aceda à página Definições.
    Aceda à página Definições
  3. Altere o projeto para o projeto de serviço que contém a conta de serviço que tem de ser definida como administrador do projeto de serviço.
  4. Copie o ID do projeto do projeto de serviço. Para maior clareza, este procedimento refere-se ao ID do projeto de serviço como SERVICE_PROJECT_ID.
  5. Altere o projeto para o projeto anfitrião da VPC partilhada.
  6. Aceda à página IAM na Google Cloud consola.
    Aceda à página IAM
  7. Clique em Adicionar.
  8. Adicione SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com ao campo Membros, substituindo SERVICE_ACCOUNT_NAME pelo nome da conta de serviço.
  9. Selecione Compute Engine > Utilizador da rede de computação no menu Funções.
  10. Clique em Adicionar.

gcloud

  1. Se ainda não o fez, autentique-se no gcloud como administrador da VPC partilhada. Substitua SHARED_VPC_ADMIN pelo nome do administrador da VPC partilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Se não souber o ID do projeto de serviço, pode listar todos os projetos na sua organização. Esta lista mostra o ID do projeto de cada um.

    gcloud projects list
    
  3. Crie uma associação de políticas para tornar a conta de serviço um administrador do projeto de serviço. Substitua HOST_PROJECT_ID pelo ID do projeto do projeto anfitrião, 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, em seguida, registe os detalhes da sua política de projetos existente. Precisa da política existente e do valor etag.

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

    Substitua HOST_PROJECT_ID pelo ID do projeto anfitrião da VPC partilhada.

  2. Crie uma associação de políticas para designar contas de serviço como administradores do projeto 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 o seguinte:

    • HOST_PROJECT_ID: o ID do projeto anfitrião que contém a rede VPC partilhada.
    • 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 recebeu quando descreveu a política existente. Impede colisões se forem enviados vários pedidos de atualização ao mesmo tempo.

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

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

Estas instruções descrevem como definir a conta de serviço das APIs Google como administrador do projeto de serviço para todas as sub-redes do projeto anfitrião da VPC partilhada. Tornar a conta de serviço das APIs Google um administrador do projeto de serviço é um requisito para os grupos de instâncias geridas usados com a VPC partilhada, porque tarefas como a criação de instâncias são realizadas por este tipo de conta de serviço. Para mais informações sobre esta relação, consulte os artigos Grupos de instâncias geridos e IAM.

Consola

  1. Inicie sessão na Google Cloud consola como administrador da VPC partilhada.
  2. Na Google Cloud consola, aceda à página Definições.
    Aceda à página Definições
  3. Altere o projeto para o projeto de serviço que contém a conta de serviço que tem de ser definida como administrador do projeto de serviço.
  4. Copie o Número do projeto do projeto de serviço. Para maior clareza, este procedimento refere-se ao número do projeto de serviço como SERVICE_PROJECT_NUMBER.
  5. Altere o projeto para o projeto anfitrião da VPC partilhada.
  6. Aceda à página IAM na Google Cloud consola.
    Aceda à página IAM
  7. Clique em Adicionar.
  8. Adicione SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com ao campo Membros.
  9. Selecione Compute Engine > Utilizador da rede de computação no menu Funções.
  10. Clique em Adicionar.

gcloud

  1. Se ainda não o fez, autentique-se no gcloud como administrador da VPC partilhada. Substitua SHARED_VPC_ADMIN pelo nome do administrador da VPC partilhada:

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

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

      gcloud projects list
      
  3. Crie uma associação de políticas para tornar a conta de serviço um administrador do projeto de serviço. Substitua HOST_PROJECT_ID pelo ID do projeto do projeto anfitrião 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, em seguida, registe os detalhes da sua política de projetos existente. Precisa da política existente e do valor etag.

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

    Substitua HOST_PROJECT_ID pelo ID do projeto anfitrião da VPC partilhada.

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

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

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

  3. Crie uma associação de políticas para designar contas de serviço como administradores do projeto 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 o seguinte:

    • HOST_PROJECT_ID: o ID do projeto anfitrião que contém a rede VPC partilhada.
    • SERVICE_PROJECT_NUMBER: o número do projeto de serviço que contém a conta de serviço.
    • ETAG: um identificador exclusivo que recebeu quando descreveu a política existente. Impede colisões se forem enviados vários pedidos de atualização ao mesmo tempo.

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

Use a VPC partilhada

Depois de um administrador da VPC partilhada concluir as tarefas de ativação de um projeto anfitrião, associação dos projetos de serviço necessários ao mesmo e definição dos administradores do projeto de serviço para todos ou alguns das sub-redes do projeto anfitrião, os administradores do projeto de serviço podem criar instâncias, modelos e equilibradores de carga internos nos projetos de serviço através das sub-redes do projeto anfitrião.

Todas as tarefas nesta secção têm de ser realizadas por um administrador do projeto de serviço.

É importante ter em atenção que um administrador de VPC partilhada só concede aos administradores do projeto de serviço a função de utilizador da rede de computação (roles/compute.networkUser) a todo o projeto anfitrião ou apenas a algumas das respetivas sub-redes. Os administradores do projeto de serviço também devem ter as outras funções necessárias para administrar os respetivos projetos de serviço. Por exemplo, um administrador do projeto de serviço também pode ser um proprietário do projeto ou, pelo menos, ter a função de administrador da instância de computação (roles/compute.instanceAdmin) para o projeto.

Liste as sub-redes disponíveis

Os administradores do projeto de serviço podem listar as sub-redes às quais lhes foi concedida autorização seguindo estes passos.

Consola

Na Google Cloud consola, aceda à página VPC partilhada.

Aceda à VPC partilhada

gcloud

  1. Se ainda não o fez, autentique-se no gcloud como administrador do projeto de serviço. Substitua SERVICE_PROJECT_ADMIN pelo nome do administrador do projeto de serviço:

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Execute o seguinte comando, substituindo HOST_PROJECT_ID pelo ID do projeto do projeto anfitrião da VPC partilhada:

    gcloud compute networks subnets list-usable --project HOST_PROJECT_ID
    

    O exemplo seguinte apresenta as sub-redes disponíveis no project-1host project:

    $ 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

Apresente as sub-redes disponíveis no projeto anfitrião. Faça o pedido como administrador do 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 anfitrião da VPC partilhada.

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

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

Os administradores do projeto de serviço podem reservar um endereço IPv4 ou IPv6 interno numa sub-rede de uma rede de VPC partilhada. O objeto de configuração do endereço IP é criado no projeto de serviço, enquanto o respetivo valor provém do intervalo de endereços IPv4 disponíveis na sub-rede partilhada escolhida.

Para reservar um endereço IP interno autónomo no projeto de serviço, conclua os seguintes passos.

Consola

  1. Configure a VPC partilhada.
  2. Na Google Cloud consola, aceda à página VPC partilhada.

    Aceda à VPC partilhada

  3. Inicie sessão como administrador da VPC partilhada.

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

  5. Aceda à 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, introduza um nome de endereço IP.

  8. Na lista Versão de IP, selecione a versão de 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 Redes partilhadas comigo.

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

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

    • Para endereços IPv4, para especificar um endereço IPv4 interno estático a reservar, em Endereço IP estático, selecione Permitir-me escolher e, de seguida, introduza um endereço IP personalizado. Caso contrário, o sistema atribui automaticamente um endereço IPv4 interno estático na sub-rede.
    • Para endereços IPv6, o sistema atribui automaticamente um endereço IPv6 interno estático a partir do intervalo de endereços IPv6 internos da sub-rede.
  12. Opcional: se quiser partilhar o endereço IPv4 interno estático em diferentes front-ends, em Finalidade, escolha Partilhado. A seleção predefinida é Não partilhado.

  13. Clique em Reservar.

gcloud

  1. Se ainda não o fez, autentique-se na Google Cloud CLI como administrador do projeto de serviço. 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.

    • Reserve 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
      
    • Reserve 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 o seguinte:

    • IP_ADDR_NAME: 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 anfitrião da VPC partilhada.
    • REGION: a região que contém a sub-rede partilhada.
    • SUBNET: o nome da sub-rede partilhada.

Os detalhes adicionais para criar endereços IP são publicados na documentação do SDK.

API

Use o método addresses.insert.

  • Reserve um endereço IPv4 interno estático como administrador do 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 o seguinte:

  • ADDRESS_NAME: um nome para o endereço IP interno reservado.
  • HOST_PROJECT_ID: o ID do projeto anfitrião da VPC partilhada.
  • REGION: a região onde o endereço IPv4 reservado vai estar localizado e onde a sub-rede partilhada está localizada.
  • SERVICE_PROJECT_ID: o ID do projeto de serviço onde está a reservar o endereço IPv4.
  • SUBNET_NAME: o nome da sub-rede partilhada.

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

Terraform

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

Especifique a sub-rede do anfitrião:

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 anfitrião 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 os comandos básicos do Terraform.

Reserve um endereço IPv4 externo estático

Um recurso num projeto de serviço pode usar um endereço IPv4 externo estático regional que esteja definido no projeto de serviço ou no projeto anfitrião. Por conseguinte, um recurso nos projetos de serviço anexados pode usar um endereço IPv4 externo estático reservado no projeto anfitrião.

Reserve um endereço IPv6 externo estático

Os administradores do projeto de serviço podem reservar um endereço IPv6 externo estático num projeto de serviço. O objeto de configuração do endereço IPv6 é criado no projeto de serviço, enquanto o respetivo valor provém do intervalo de endereços IPv6 disponíveis na sub-rede partilhada escolhida.

Consola

Pode reservar um endereço IPv6 externo autónomo no projeto de serviço através da Google Cloud consola:

  1. Configure a VPC partilhada.
  2. Na Google Cloud consola, aceda à página VPC partilhada.
    Aceda à página VPC partilhada
  3. Inicie sessão como administrador da VPC partilhada.
  4. Selecione o projeto de serviço no seletor de projetos.
  5. Para aceder à página Endereços IP, selecione Rede VPC > Endereços IP.
  6. Clique em Reservar endereço IP estático externo.
  7. Escolha um nome para a nova morada.
  8. Especifique se o nível do serviço de rede é Premium ou Standard. A reserva de endereços estáticos IPv6 só é suportada no nível Premium.
  9. Em Versão do IP, selecione IPv6.
  10. Especifique se este endereço IP é Regional ou Global.
    • Se estiver a reservar um endereço IP estático para um balanceador de carga global, escolha Global.
    • Se estiver a reservar um endereço IP estático para uma instância ou para um balanceador de carga regional, escolha Regional e, em seguida, selecione a região na qual quer criar o endereço.
  11. Escolha uma das seguintes opções:
    • Redes neste projeto: escolha esta opção se quiser reservar um endereço IPv6 externo numa sub-rede da mesma rede de nuvem privada virtual (VPC) onde está a reservar o endereço IPv6.
    • Redes partilhadas comigo: escolha esta opção se quiser reservar um endereço IPv6 externo numa sub-rede de uma rede VPC partilhada.
  12. Com base na sua escolha, selecione o seguinte:

    • Rede: a rede da VPC
    • Sub-rede: a sub-rede a partir da qual atribuir o endereço IPv6 regional estático
    • Tipo de ponto final: escolha Instância de VM ou Balanceador de carga de rede
  13. Opcional: se tiver escolhido Instância de VM como tipo de ponto final, selecione uma instância de VM à qual anexar o endereço IPv6.

  14. Clique em Reservar.

gcloud

  1. Se ainda não o fez, autentique-se no gcloud como administrador do projeto de serviço. 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 o seguinte:

    • 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 anfitrião da VPC partilhada.
    • SUBNET: o nome da sub-rede partilhada.
    • REGION: a região que contém a sub-rede partilhada.

API

Para reservar um endereço IPv6 interno estático como administrador do 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 o seguinte:

  • SERVICE_PROJECT_ID: o ID do projeto de serviço onde está a reservar o endereço IPv6.
  • REGION: a região onde o endereço IPv6 reservado e a sub-rede partilhada estão localizados.
  • ADDRESS_NAME: um nome para o endereço IPv6 externo estático reservado.
  • HOST_PROJECT_ID: o ID do projeto anfitrião da VPC partilhada.
  • SUBNET_NAME: o nome da sub-rede partilhada.

Crie uma instância

Tenha em atenção o seguinte quando usar a VPC partilhada para criar uma instância:

  • O processo padrão para criar uma instância envolve a seleção de uma zona, uma rede e uma sub-rede. A sub-rede selecionada e a zona selecionada têm de estar na mesma região. Quando um administrador do projeto de serviço cria uma instância através de uma sub-rede de uma rede de VPC partilhada, a zona selecionada para essa instância tem de estar na mesma região que a sub-rede selecionada.

    Quando 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. Nesta secção, é apresentado um exemplo gcloud de criação de uma instância com um endereço IPv4 interno estático.

  • Os administradores do projeto de serviço só podem criar instâncias através de sub-redes às quais lhes foi concedida autorização. Para determinar que sub-redes estão disponíveis, consulte o artigo Liste as sub-redes disponíveis.

  • Quando Google Cloud recebe um pedido para criar uma instância numa sub-rede de uma rede de VPC partilhada, verifica se o principal da IAM que está a fazer o pedido tem autorização para usar essa sub-rede partilhada. Se a verificação falhar, a instância não é criada e Google Cloud é devolvido um erro de autorizações. Para receber assistência, contacte o administrador da VPC partilhada.

  • O tipo de pilha da instância que criar tem de ser suportado pela sub-rede partilhada na qual cria a instância. Para mais informações, consulte o artigo Tipos de sub-redes. Para instâncias com endereços IPv6, o tipo de acesso IPv6 da sub-rede determina se o endereço IPv6 atribuído à instância é um endereço IPv6 interno ou externo.

Consola

  1. Configure a VPC partilhada.
  2. Na Google Cloud consola, aceda à página VPC partilhada.

    Aceda à VPC partilhada

  3. Inicie sessão como administrador da VPC partilhada.

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

  5. Para aceder à 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 partilhada.

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

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

  10. Na lista Sub-rede partilhada, selecione a sub-rede necessária onde quer criar a instância:

    • Para uma instância apenas IPv4, selecione uma sub-rede apenas IPv4 ou de pilha dupla (IPv4 e IPv6).
    • Para uma instância de pilha dupla, selecione uma sub-rede de pilha dupla com o tipo de acesso IPv6 necessário.
    • Para uma instância apenas IPv6, selecione uma sub-rede de pilha dupla ou uma sub-rede apenas IPv6 com o tipo de acesso IPv6 necessário.
  11. Selecione o tipo de pilha de IP:

    • IPv4 (pilha única)
    • IPv4 e IPv6 (dual-stack)
    • IPv6 (pilha única)
  12. Especifique outros parâmetros necessários para a instância.

  13. Clique em Criar.

gcloud

Veja os exemplos seguintes:

  • Crie uma instância com um endereço IPv4 interno efémero numa sub-rede partilhada de uma rede VPC partilhada:

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

    Substitua o seguinte:

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

    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 anfitrião.
    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 o seguinte:

      • 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 anfitrião da VPC partilhada.
      • REGION: a região que contém a sub-rede partilhada.
      • SUBNET: o nome da sub-rede partilhada 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 o seguinte:

    • INSTANCE_NAME: o nome da instância.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • HOST_PROJECT_ID: o ID do projeto anfitrião da VPC partilhada.
    • REGION: a região que contém a sub-rede partilhada.
    • SUBNET: o nome da sub-rede partilhada.
    • 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 STACK_TYPE \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --ipv6-address IPV6_ADDRESS \
        --external-ipv6-prefix-length=96 \
        --ipv6-network-tier PREMIUM \
        --zone ZONE
    

    Substitua o seguinte:

    • INSTANCE_NAME: o nome da instância.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • STACK_TYPE: IPV4_IPV6 ou IPV6_ONLY (Pré-visualização), consoante pretenda que a instância também tenha um endereço IPv4.
    • HOST_PROJECT_ID: o ID do projeto anfitrião da VPC partilhada.
    • REGION: a região que contém a sub-rede partilhada.
    • SUBNET: o nome da sub-rede partilhada.
    • IPV6_ADDRESS: o endereço IPv6 a atribuir à VM.
    • ZONE: uma zona na região especificada.

API

Veja os exemplos seguintes:

  • 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 o seguinte:

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

    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 o seguinte:

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

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

  • Para criar uma instância com um endereço IPv4 interno efémero e um endereço IPv6 efémero, 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 o seguinte:

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

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

  • Para criar uma instância com 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": "IPV6_ONLY"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    Substitua o seguinte:

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

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

Terraform

Pode usar um bloco de dados do Terraform para especificar as informações da sub-rede do anfitrião. Em seguida, use um recurso do Terraform para criar uma instância de VM num projeto de serviço.

Especifique a sub-rede do anfitrião:

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

Crie uma instância de VM num projeto de serviço com um endereço IPv4 efémero da sub-rede partilhada do projeto anfitrião:

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 num projeto de serviço com um endereço IPv4 estático reservado da sub-rede partilhada do projeto anfitrião:

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 os comandos básicos do Terraform.

Crie um modelo de instância

Tenha em atenção o seguinte quando usar a VPC partilhada para criar um modelo de instância:

  • O processo de criação de um modelo de instância envolve a seleção de uma rede e uma sub-rede.

    • Os modelos criados para utilização numa rede VPC partilhada no modo personalizado têm de especificar a rede e uma sub-rede.

    • Os modelos criados para utilização numa rede VPC partilhada de modo automático podem, opcionalmente, adiar a seleção de uma sub-rede. Nestes casos, é selecionada automaticamente uma sub-rede na mesma região que qualquer grupo de instâncias gerido que use o modelo. (As redes no modo automático têm, por definição, uma sub-rede em todas as regiões.)

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

  • O tipo de pilha do modelo de instância que criar tem de ser suportado pela sub-rede partilhada na qual cria o modelo de instância. Para mais informações, consulte o artigo Tipos de sub-redes. Para instâncias com endereços IPv6, o tipo de acesso IPv6 da sub-rede determina se o endereço IPv6 atribuído à instância é um endereço IPv6 interno ou externo.

Consola

  1. Configure a VPC partilhada.
  2. Na Google Cloud consola, aceda à página VPC partilhada.
    Aceda à página VPC partilhada
  3. Inicie sessão como administrador da VPC partilhada.
  4. Selecione o projeto de serviço no seletor de projetos.
  5. Para aceder à página Criar um modelo de instância, selecione Compute Engine > Modelos de instâncias > Criar modelos de instâncias.
  6. Especifique um Nome para o modelo de instância.
  7. Na secção Opções avançadas, clique em Rede.
  8. Na secção Interfaces de rede, clique no botão de opção Redes partilhadas comigo.
  9. Na lista Sub-rede partilhada, selecione a sub-rede necessária onde quer criar o modelo de instância:
    • Para um modelo de instância apenas IPv4, selecione uma sub-rede apenas IPv4 ou de pilha dupla (IPv4 e IPv6).
    • Para um modelo de instância de pilha dupla, selecione uma sub-rede de pilha dupla com o tipo de acesso IPv6 necessário.
    • Para um modelo de instância apenas IPv6, selecione uma sub-rede de pilha dupla ou uma sub-rede apenas IPv6 com o tipo de acesso IPv6 necessário.
  10. Selecione o tipo de pilha de IP do modelo de instância:
    • IPv4 (pilha única)
    • IPv4 e IPv6 (dual-stack)
    • IPv6 (pilha única)
  11. Especifique outros parâmetros necessários para o modelo de instância.
  12. Clique em Criar.

gcloud

  • Crie um modelo de instância apenas IPv4 para utilização em qualquer sub-rede criada automaticamente de uma rede VPC partilhada no modo automático:

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

    Substitua o seguinte:

    • TEMPLATE_NAME: o nome do modelo.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • HOST_PROJECT_ID: o ID do projeto anfitrião da VPC partilhada.
    • NETWORK: o nome da rede VPC partilhada.
  • Para criar um modelo de instância apenas IPv4 para uma sub-rede criada manualmente numa rede de VPC partilhada (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 o seguinte:

    • TEMPLATE_NAME: o nome do modelo.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • REGION: a região que contém a sub-rede partilhada.
    • HOST_PROJECT_ID: o ID do projeto anfitrião da VPC partilhada.
    • SUBNET: o nome da sub-rede partilhada.
  • Crie um modelo de instância de pilha dupla que use uma sub-rede numa rede VPC partilhada no 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 o seguinte:

    • TEMPLATE_NAME: o nome do modelo.
    • SERVICE_PROJECT_ID: o ID do projeto de serviço.
    • REGION: a região que contém a sub-rede partilhada.
    • HOST_PROJECT_ID: o ID do projeto anfitrião da VPC partilhada.
    • SUBNET: o nome da sub-rede partilhada.
  • Crie um modelo de instância apenas IPv6 que use uma sub-rede numa rede VPC partilhada em modo personalizado:

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

    Substitua o seguinte:

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

API

  • Para criar um modelo de instância apenas IPv4 que use qualquer sub-rede criada automaticamente de uma rede VPC partilhada 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 o seguinte:

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

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

  • Para criar um modelo de instância apenas IPv4 que use uma sub-rede criada manualmente numa rede VPC partilhada (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 o seguinte:

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

    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 numa rede VPC partilhada no 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 o seguinte:

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

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

  • Para criar um modelo de instância apenas IPv6 que use uma sub-rede numa rede VPC partilhada no 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": "IPV6_ONLY"
        }
      ]
    ...
    }
    

    Substitua o seguinte:

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

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

Terraform

Pode usar um bloco de dados do Terraform para especificar as informações da sub-rede do anfitrião. Em seguida, use um recurso do Terraform para criar um modelo de instância da VM. Os endereços IPv4 das VMs são provenientes da sub-rede partilhada do projeto anfitrião.

A sub-rede tem de existir na mesma região onde as instâncias de VM vão ser criadas.

Especifique a sub-rede do anfitrião:

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 os comandos básicos do Terraform.

Crie um grupo de instâncias geridas

Tenha em atenção o seguinte quando criar um grupo de instâncias gerido através de uma VPC partilhada:

  • Os grupos de instâncias geridos usados com a VPC partilhada requerem que a conta de serviço das APIs Google seja um administrador do projeto de serviço, porque tarefas como a criação automática de instâncias através do dimensionamento automático são realizadas por essa conta de serviço.

  • O processo padrão para criar um grupo de instâncias geridas envolve a seleção de uma zona ou uma região, consoante o tipo de grupo, e um modelo de instância. (Os detalhes da rede e da sub-rede estão associados ao modelo de instância.) Os modelos de instâncias elegíveis estão restritos aos que fazem referência a sub-redes na mesma região usada pelo grupo de instâncias gerido.

  • Os administradores do projeto de serviço só podem criar grupos de instâncias geridos cujas instâncias membros usam sub-redes às quais lhes foi concedida autorização. Uma vez que os detalhes da rede e da sub-rede estão associados ao modelo de instância, os administradores do projeto de serviço só podem usar modelos que façam referência a sub-redes que estão autorizados a usar.

  • Quando Google Cloud recebe um pedido para criar um grupo de instâncias geridas, verifica se o principal do IAM que faz o pedido tem autorização para usar a sub-rede (na mesma região que o grupo) especificada no modelo de instância. Se a verificação falhar, o grupo de instâncias geridas não é criado e Google Cloud devolve um erro: Required 'compute.subnetworks.use' permission for 'projects/SUBNET_NAME.

    Liste as sub-redes disponíveis para determinar quais podem ser usadas e contacte o administrador da VPC partilhada se a conta de serviço precisar de acesso adicional. Para mais informações, consulte o artigo Contas de serviço como administradores de projetos de serviço.

Para mais informações, consulte o artigo Criar grupos de instâncias geridas na documentação do Compute Engine.

Crie um balanceador de carga HTTP(S)

Existem várias formas de configurar balanceadores de carga de aplicações externos numa rede de VPC partilhada. Independentemente do tipo de implementação, todos os componentes do balanceador de carga têm de estar na mesma organização e na mesma rede de VPC partilhada.

Para saber mais sobre as arquiteturas de VPC partilhada suportadas, consulte o seguinte:

Crie um balanceador de carga de rede de passagem interno

O exemplo seguinte ilustra o que tem de considerar quando cria um balanceador de carga de rede de encaminhamento interno numa rede de VPC partilhada. Os administradores do projeto de serviço podem criar um Network Load Balancer de encaminhamento interno que use uma sub-rede (no projeto anfitrião) à qual têm acesso. A regra de encaminhamento interno do balanceador de carga está definida no projeto de serviço, mas a respetiva referência de sub-rede aponta para uma sub-rede numa rede de VPC partilhada do projeto anfitrião.

Antes de criar um balanceador de carga de rede de encaminhamento interno num ambiente de VPC partilhada, consulte a arquitetura de VPC partilhada.

Consola

  1. Aceda à página Balanceamento de carga na Google Cloud consola.
    Aceda à página Balanceamento de carga

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

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

gcloud

Quando criar a regra de encaminhamento interno, especifique uma sub-rede no projeto de anfitrião com a flag --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 o seguinte:

  • 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 partilhada.
  • IP_PROTOCOL: TCP ou UDP, correspondente 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 (já criado como parte do procedimento geral para criar um balanceador de carga de rede de encaminhamento interno).
  • HOST_PROJECT_ID: o ID do projeto anfitrião da VPC partilhada.
  • SUBNET: o nome da sub-rede partilhada.
  • INTERNAL_IP: um endereço IP interno na sub-rede partilhada (se não for especificado, é selecionado um 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 de anfitrião.

POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/forwardingRules
{
  "name": "FR_NAME",
  "IPAddress": "IP_ADDRESS",
  "IPProtocol": "IP_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 o seguinte:

  • SERVICE_PROJECT_ID: o ID do projeto de serviço.
  • REGION: a região que contém a sub-rede partilhada.
  • FR_NAME: um nome para a regra de encaminhamento.
  • IP_ADDRESS: um endereço IP interno na sub-rede partilhada.
  • IP_PROTOCOL: TCP ou UDP, correspondendo ao protocolo do serviço de back-end do balanceador de carga.
  • PORT: a porta numérica ou a lista de portas para o equilibrador de carga.
  • HOST_PROJECT_ID: o ID do projeto anfitrião da VPC partilhada.
  • SUBNET: o nome da sub-rede partilhada.
  • NETWORK_NAME: o nome da rede.
  • 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 encaminhamento interno).

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

Terraform

Pode usar um bloco de dados do Terraform para especificar a sub-rede do anfitrião e a rede do anfitrião. Em seguida, use um recurso do Terraform para criar a regra de encaminhamento.

Especifique a rede anfitriã:

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

Especifique a sub-rede do anfitrião:

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 anfitrião:

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 os comandos básicos do Terraform.

O que se segue?