Configurar o acesso à Internet para VMs de carga de trabalho

Você configura o serviço de rede de acesso à Internet para cargas de trabalho da VMware no Google Cloud VMware Engine por região. Direcione o tráfego vinculado à Internet das cargas de trabalho de VMs usando a borda da Internet do Google Cloud ou uma conexão local.

As VMs de carga de trabalho que podem acessar a Internet também podem acessar os serviços do Google Cloud usando o Acesso privado do Google. O acesso aos serviços do Google Cloud usando o Acesso privado do Google permanece nas redes do Google Cloud e não sai para a Internet.

O serviço de rede de acesso à Internet é compatível com o seguinte:

  • Até 100 endereços IP públicos para cada região
  • Até 300 regras de firewall por tabela de firewall
  • Capacidade de até 2 Gbps em 128 mil conexões simultâneas para cada região
  • Protocolos TCP, UDP e ICMP

O serviço de rede de acesso à Internet não é compatível com a funcionalidade de gateway de nível de aplicativo (ALG, na sigla em inglês).

Antes de começar

Para alterar as configurações de acesso à Internet da nuvem privada, é preciso ter acesso de administrador ao VMware Engine.

Para ativar o acesso à Internet, você precisa de um intervalo de endereços CIDR de serviços Edge. Ao ativar os serviços de acesso à Internet ou de rede IP público, os gateways são implantados no contexto do locatário de serviço.

Use o intervalo de endereços CIDR dos serviços de borda para se direcionar aos gateways de IP público e da Internet do VMware Engine. O intervalo de endereços precisa atender aos seguintes requisitos:

  • Estar em conformidade com o RFC 1918 como um intervalo particular.
  • Não ter sobreposição com outros intervalos de endereços do VMware Engine, como o intervalo de endereço usado para dispositivos de gerenciamento ou segmentos NSX-T.
  • Não se sobrepor a intervalos de endereços anunciados no VMware Engine, como aqueles usados para sub-redes de rede de nuvem privada virtual (VPC) ou redes locais;
  • Dedique um intervalo de endereços IP com 26 bits de máscara de sub-rede (/26).

Google Cloud CLI e requisitos da API

Para usar a ferramenta de linha de comando gcloud ou a API para gerenciar os recursos do VMware Engine, recomendamos configurar as ferramentas conforme descrito abaixo.

gcloud

  1. Defina o ID do projeto padrão:

    gcloud config set project PROJECT_ID
    
  2. Defina uma região e uma zona padrão.

    gcloud config set compute/region REGION
    
    gcloud config set compute/zone ZONE
    

Para mais informações sobre a ferramenta gcloud vmware, consulte os documentos de referência do SDK Cloud.

API

Os exemplos de API neste conjunto de documentação usam a ferramenta de linha de comando cURL para consultar a API. Um token de acesso válido é necessário como parte da solicitação cURL. Há muitas maneiras de conseguir um token de acesso válido. As etapas a seguir usam a ferramenta gcloud para gerar um token de acesso:

  1. Faça login no Google Cloud:

    gcloud auth login
    
  2. Gere o token de acesso e exporte para o TOKEN:

    export TOKEN=`gcloud auth print-access-token`
    
  3. Verifique se o TOKEN está definido corretamente:

    echo $TOKEN
    

Use agora o token de autorização nas solicitações para a API. Exemplo:

curl -X GET -H "Authorization: Bearer \"$TOKEN\"" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations

Python

Os exemplos de código Python nesta documentação usam a biblioteca do VMware Engine para se comunicar com a API. Para usar essa abordagem, a biblioteca precisa estar instalada e o Application Default Credentials precisa estar configurado.

  1. Faça o download e instale a biblioteca Python:

    pip install google-cloud-vmwareengine
    
  2. Configure as informações do ADC executando estes comandos no shell:

    gcloud auth application-default login
    

    Ou use um arquivo de chave da conta de serviço:

    export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

Para mais informações sobre a biblioteca, acesse a página de referência ou veja os exemplos de código no GitHub.

Configurar o serviço de acesso à Internet

É possível permitir que suas VMs de carga de trabalho tenham acesso à Internet criando ou atualizando uma política de rede.

Por padrão, o serviço de rede de acesso à Internet está desativado.

Desativar o serviço de acesso à Internet em uma região

Console

Para ativar o serviço de acesso à Internet em uma região, faça o seguinte:

  1. Vá para o Console do Google Cloud.
  2. Na navegação principal, acesse Políticas de rede.
  3. Clique em Criar para criar uma nova função. Para editar uma política de rede atual, clique no ícone Mais no final de uma linha e selecione Editar.
  4. Preencha os detalhes da política de rede, incluindo a escolha da rede e da região a que ela se aplica.
  5. Alterne o Acesso à Internet para Ativado e, opcionalmente, ative o Serviço de endereço IP externo.

  6. No campo CIDR dos serviços de borda, insira o intervalo de endereços a ser usado quando se direcionar ao gateway de Internet do VMware Engine (intervalo de endereços /26).

  7. Clique em Criar.

O status do serviço muda para Ativado quando a operação é concluída, geralmente após alguns minutos.

gcloud

Usando a ferramenta gcloud, execute o seguinte comando para criar uma política de rede:

gcloud vmware network-policies create NETWORK_POLICY_NAME \
    --vmware-engine-network projects/PROJECT_ID/locations/LOCATIONS/vmwareEngineNetworks/NETWORK_ID \
    --edge-services-cidr=IP_RANGE \
    --location=LOCATION \
    --internet-access

Substitua:

  • NETWORK_POLICY_NAME: o nome da política de rede.
  • NETWORK_ID: a rede em que essa política de rede é aplicável.
  • IP_RANGE: o intervalo CIDR a ser usado para gateways de acesso à Internet e de IP externo, em notação CIDR. É necessário um bloco CIDR RFC 1918 com um prefixo "/26".
  • LOCATION: global para redes legadas ou a região de uma rede padrão

API

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/networkPolicies?networkPolicyId=NETWORK_POLICY_NAME

'{
  "vmwareEngineNetwork":"projects/PROJECT_ID/locations/LOCATION/vmwareEngineNetworks/NETWORK_ID",
  "edgeServiceCidr":IP_RANGE,
  "internetAccess: {
    "enabled": true
   },
   "externalIp": {
     "enabled": true
   }
}"

Substitua:

  • NETWORK_POLICY_NAME: o nome da política de rede. Precisa estar no formato REGION-default.
  • PROJECT_ID: o ID do projeto desta solicitação
  • LOCATION: global para redes legadas ou a região de uma rede padrão
  • IP_RANGE: o intervalo CIDR a ser usado para gateways de acesso à Internet e de IP externo, em notação CIDR. É necessário um bloco CIDR RFC 1918 com um prefixo "/26".
  • NETWORK_ID: a rede desta política de rede.

Python

from google.api_core import operation
from google.cloud import vmwareengine_v1

def create_network_policy(
    project_id: str,
    region: str,
    ip_range: str,
    internet_access: bool,
    external_ip: bool,
) -> operation.Operation:
    """
    Creates a new network policy in a given network.

    Args:
        project_id: name of the project you want to use.
        region: name of the region you want to use. I.e. "us-central1"
        ip_range: the CIDR range to use for internet access and external IP access gateways,
            in CIDR notation. An RFC 1918 CIDR block with a "/26" suffix is required.
        internet_access: should internet access be allowed.
        external_ip: should external IP addresses be assigned.

    Returns:
        An operation object representing the started operation. You can call its .result() method to wait for
        it to finish.

    Raises:
        ValueError if the provided ip_range doesn't end with /26.
    """
    if not ip_range.endswith("/26"):
        raise ValueError(
            "The ip_range needs to be an RFC 1918 CIDR block with a '/26' suffix"
        )

    network_policy = vmwareengine_v1.NetworkPolicy()
    network_policy.vmware_engine_network = f"projects/{project_id}/locations/{region}/vmwareEngineNetworks/{region}-default"
    network_policy.edge_services_cidr = ip_range
    network_policy.internet_access.enabled = internet_access
    network_policy.external_ip.enabled = external_ip

    request = vmwareengine_v1.CreateNetworkPolicyRequest()
    request.network_policy = network_policy
    request.parent = f"projects/{project_id}/locations/{region}"
    request.network_policy_id = f"{region}-default"

    client = vmwareengine_v1.VmwareEngineClient()
    return client.create_network_policy(request)

Desativar o serviço de acesso à Internet em uma região

Para desativar o serviço de acesso à Internet em uma região, faça o seguinte:

Console

  1. Vá para o Console do Google Cloud.
  2. Na navegação principal, acesse Políticas de rede.
  3. Na linha correspondente à política de rede relevante, clique no ícone Mais.
  4. Alterne o Acesso à Internet para Desativado.

    • É necessário desativar o serviço de IP público antes de desativar o acesso à Internet.
    • Exclua todos os endereços IP públicos alocados e gateways da VPN de ponto a site antes de desativar o serviço IP público.
  5. Clique em Salvar.

O status do serviço muda para Desativado quando a operação é concluída, geralmente após alguns minutos.

gcloud

Usando a ferramenta gcloud, execute o seguinte comando para atualizar uma política de rede:

gcloud vmware network-policies update NETWORK_POLICY_NAME \
  --no-internet-access \
  --location LOCATION

Substitua:

  • NETWORK_POLICY_NAME: o nome da política de rede.
  • LOCATION: global para redes legadas ou a região de uma rede padrão

API

curl -X PATCH -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/networkPolicies/NETWORK_POLICY_NAME?updateMask=internetAccess.enabled,externalIp.enabled -d "{
  "internetAccess: {
    "enabled": false
 },
  "externalIp": {
    "enabled": false
   }
}"

Substitua:

  • PROJECT_ID: o ID do projeto desta solicitação
  • LOCATION: global para redes legadas ou a região de uma rede padrão
  • NETWORK_POLICY_NAME: o nome da política de rede.

Python

from google.api_core import operation
from google.cloud import vmwareengine_v1

def update_network_policy(
    project_id: str, region: str, internet_access: bool, external_ip: bool
) -> operation.Operation:
    """
    Updates a network policy in a given network.

    Args:
        project_id: name of the project you want to use.
        region: name of the region you want to use. I.e. "us-central1".
        internet_access: should internet access be allowed.
        external_ip: should external IP addresses be assigned.

    Returns:
        An operation object representing the started operation. You can call its .result() method to wait for
        it to finish.
    """

    client = vmwareengine_v1.VmwareEngineClient()
    request = vmwareengine_v1.UpdateNetworkPolicyRequest()
    request.update_mask = "internetAccess.enabled,externalIp.enabled"
    network_policy = vmwareengine_v1.NetworkPolicy()
    network_policy.name = (
        f"projects/{project_id}/locations/{region}/networkPolicies/{region}-default"
    )
    network_policy.vmware_engine_network = f"projects/{project_id}/locations/{region}/vmwareEngineNetworks/{region}-default"
    network_policy.internet_access.enabled = internet_access
    network_policy.external_ip.enabled = external_ip

    request.network_policy = network_policy

    return client.update_network_policy(request)

Usar uma conexão no local para acesso da carga de trabalho à Internet

Como opção, é possível direcionar o tráfego vinculado à Internet das VMs de carga de trabalho no VMware Engine por meio de uma conexão local. O tráfego é direcionado com base no estado a seguir:

  • Divulgação de rota padrão (0.0.0.0/0) do local
  • Serviço de IP público do VMware Engine
  • Serviço de acesso à Internet no VMware Engine
  • VPC Service Controls na conexão de peering de VPC entre sua rede VPC e o VMware Engine

Ativar o roteamento do tráfego da Internet por uma conexão local

Para acessar a Internet a partir das VMs da carga de trabalho por meio de uma conexão local, siga estas duas etapas:

  1. Divulgar a rota padrão (0.0.0.0/0) do local por meio de uma conexão local (Cloud VPN ou Cloud Interconnect). Verifique o gateway do Cloud VPN ou o Cloud Router em que a conexão local com a VPN é encerrada.
  2. Desative o acesso à Internet e o serviço de IP público para a rede do VMware Engine.

Console

  1. Vá para o Console do Google Cloud.
  2. Na navegação principal, acesse Políticas de rede.
  3. Na linha correspondente à política de rede relevante, clique no ícone Mais.
  4. Alterne o IP público para Desativado.

  5. Alterne o Acesso à Internet para Desativado.

  6. Clique em Salvar.

  7. Se estiver usando uma rede legada do VMware Engine:ative o VPC Service Controls na conexão de peering da VPC entre a rede VPC e o VMware Engine usando o comando gcloud services vpc-peerings enable-vpc-service-controls:

    gcloud services vpc-peerings enable-vpc-service-controls \
       --network=VPC_NETWORK \
       --service=servicenetworking.googleapis.com

gcloud

Usando a ferramenta gcloud, execute o seguinte comando para atualizar uma política de rede:

gcloud vmware network-policies update NETWORK_POLICY_NAME \
  --no-internet-access \
  --no-external-ip-address \
  --location LOCATION

Substitua:

  • NETWORK_POLICY_NAME: o nome da política de rede.
  • LOCATION: global para redes legadas ou a região de uma rede padrão

Se estiver usando uma rede legada do VMware Engine:ative o VPC Service Controls na conexão de peering da VPC entre a rede VPC e o VMware Engine usando o comando gcloud services vpc-peerings enable-vpc-service-controls:

gcloud services vpc-peerings enable-vpc-service-controls \
   --network=VPC_NETWORK \
   --service=servicenetworking.googleapis.com

API

curl -X PATCH -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/networkPolicies/NETWORK_POLICY_NAME?updateMask=internetAccess.enabled,externalIp.enabled

"{
  "internetAccess: {
    "enabled": false
   },
  "externalIp: {
    "enabled": false
   }
}"

Se estiver usando uma rede legada do VMware Engine:ative o VPC Service Controls na conexão de peering da VPC entre a rede VPC e o VMware Engine usando o comando gcloud services vpc-peerings enable-vpc-service-controls:

gcloud services vpc-peerings enable-vpc-service-controls \
   --network=VPC_NETWORK_NAME \
   --service=servicenetworking.googleapis.com

Python

Defina internet_access e external_ip como False.

from google.api_core import operation
from google.cloud import vmwareengine_v1

def update_network_policy(
    project_id: str, region: str, internet_access: bool, external_ip: bool
) -> operation.Operation:
    """
    Updates a network policy in a given network.

    Args:
        project_id: name of the project you want to use.
        region: name of the region you want to use. I.e. "us-central1".
        internet_access: should internet access be allowed.
        external_ip: should external IP addresses be assigned.

    Returns:
        An operation object representing the started operation. You can call its .result() method to wait for
        it to finish.
    """

    client = vmwareengine_v1.VmwareEngineClient()
    request = vmwareengine_v1.UpdateNetworkPolicyRequest()
    request.update_mask = "internetAccess.enabled,externalIp.enabled"
    network_policy = vmwareengine_v1.NetworkPolicy()
    network_policy.name = (
        f"projects/{project_id}/locations/{region}/networkPolicies/{region}-default"
    )
    network_policy.vmware_engine_network = f"projects/{project_id}/locations/{region}/vmwareEngineNetworks/{region}-default"
    network_policy.internet_access.enabled = internet_access
    network_policy.external_ip.enabled = external_ip

    request.network_policy = network_policy

    return client.update_network_policy(request)

Se estiver usando uma rede legada do VMware Engine:ative o VPC Service Controls na conexão de peering da VPC entre a rede VPC e o VMware Engine usando o comando gcloud services vpc-peerings enable-vpc-service-controls:

gcloud services vpc-peerings enable-vpc-service-controls \
   --network=VPC_NETWORK \
   --service=servicenetworking.googleapis.com

Ativar o VPC Service Controls é essencial para rotear o tráfego da Internet por uma conexão local ou VPC no projeto.

Quando o VPC Service Controls está ativado, o Google Cloud faz as seguintes alterações de roteamento na rede VPC do produtor de serviços (neste caso, o projeto de locatário do serviço faz peering com o VMware Engine):

  • Remove a rota padrão IPv4 (destino 0.0.0.0/0, gateway de Internet padrão do próximo salto).
  • Começa a encaminhar o tráfego da Internet usando a rota padrão de peering de VPC.

Exemplo:

Para ativar o VPC Service Controls em uma conexão de peering a uma rede chamada "my-network" no projeto atual, use o comando gcloud services vpc-peerings enable-vpc-service-controls:

gcloud services vpc-peerings enable-vpc-service-controls \
    --network=my-network \
    --service=servicenetworking.googleapis.com

Desativar o roteamento do tráfego da Internet por uma conexão local

Para desativar o roteamento do tráfego da Internet das VMs de carga de trabalho por meio de uma conexão local, pare de divulgar a rota padrão (0.0.0.0/0) e desative os controles de serviço da VPC na conexão de peering da VPC.

Se estiver usando uma rede legada do VMware Engine:desative o VPC Service Controls na conexão de peering da VPC entre a rede VPC e o VMware Engine. Use o comando gcloud services vpc-peerings disable-vpc-service-controls:

gcloud services vpc-peerings disable-vpc-service-controls \
    --network=VPC_NETWORK_NAME \
    --service=servicenetworking.googleapis.com

A seguir