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 VMs de carga de trabalho usando a borda da Internet do Google Cloudou uma conexão local.

As VMs de carga de trabalho que podem acessar a Internet também podem acessar Google Cloud serviços usando o Acesso privado do Google. O acesso aos Google Cloud serviços usando o Acesso particular do Google permanece nas Google Cloud redes 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 oferece suporte ao recurso 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 do 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. Gerar token de acesso e exportar para 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. Execute os comandos no shell para configurar as informações do ADC:

    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. No console do Google Cloud, acesse a página Políticas de rede.

    Acessar as políticas de rede

  2. Clique em Selecionar um projeto e escolha a organização, a pasta ou o projeto que contém a rede do VMware Engine em que você quer ativar o serviço de acesso à Internet.

  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. No console do Google Cloud, acesse a página Políticas de rede.

    Acessar as políticas de rede

  2. Clique em Selecionar um projeto e escolha a organização, a pasta ou o projeto que contém a rede do VMware Engine para desativar o serviço de acesso à Internet.

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

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. No console do Google Cloud, acesse a página Políticas de rede.

    Acessar as políticas de rede

  2. Clique em Selecionar um projeto e escolha a organização, a pasta ou o projeto que contém a rede do VMware Engine em que você quer ativar o serviço de acesso à Internet.

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

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

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 de VPC entre a rede VPC e o VMware Engine usando gcloud services vpc-peerings enable-vpc-service-controls comando:

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 de VPC entre a rede VPC e o VMware Engine usando gcloud services vpc-peerings enable-vpc-service-controls comando:

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 seu projeto.

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

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

Exemplo:

Para ativar os VPC Service Controls em uma conexão de peering com 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 você estiver usando uma rede legada do VMware Engine: desative o VPC Service Controls na conexão de peering 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