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 Google Cloud's a borda da Internet ou uma conexão local.

O VMware Engine oferece os seguintes métodos para configurar o acesso à Internet para VMs de carga de trabalho:

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 privado 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é 100 regras de acesso externo por política de rede
  • Capacidade de até 2 Gbps para cada região
  • Protocolos TCP, UDP e ICMP

O serviço de rede de acesso à Internet não oferece suporte à capacidade 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 se sobrepor a outros intervalos de endereços do VMware Engine, como o intervalo de endereços usado para appliances de gerenciamento ou segmentos NSX.
  • 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 em Google Cloud:

    gcloud auth login
    
  2. Gere o token de acesso e exporte 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. Configure as informações do ADC executando esses 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 exemplos de código no GitHub.

Configurar o serviço de acesso à Internet

Para dar acesso à Internet às VMs de carga de trabalho, crie ou atualize 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 Google Cloud console do, acesse a página Políticas de rede.

    Acessar políticas de rede

  2. Clique em Selecionar um projeto e selecione a organização, pasta ou projeto que contém a rede do VMware Engine para a qual 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)

Diretrizes para o HCX Mobility Optimized Networking (MON)

Se você migrar VMs usando o HCX com o Mobility Optimized Networking (MON), será necessária uma configuração de roteamento específica para garantir a conectividade com a Internet.

Se você ativou o MON para segmentos de extensão de camada 2 (L2E), o VMware Engine não anuncia automaticamente rotas para VMs migradas para o serviço de Internet. Para garantir que essas VMs possam acessar a Internet, é necessário ativar a redistribuição de rotas estáticas para o BGP no roteador de camada 1.

Essa etapa é necessária para anunciar as rotas dos segmentos ativados pelo MON, o que permite que eles encaminhem o tráfego da Internet pelo ambiente do VMware Engine. Sem essa configuração, as VMs nesses segmentos não podem acessar a Internet pública.

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

    Acessar políticas de rede

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

  3. Na linha correspondente à política de rede relevante, clique no Mais ícone.

  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 VPC no projeto 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 VPC no projeto. Essa opção está disponível apenas para redes padrão do VMware Engine que têm peering com a rede VPC.

Para acessar a Internet a partir das VMs de carga de trabalho por meio de uma VPC no projeto, siga estas etapas:

  1. Configure o acesso à Internet na VPC.
    • Se você usar o Cloud NAT:verifique se o Cloud NAT está configurado para fornecer acesso à Internet aos recursos na rede VPC. Nenhuma rota específica para 0.0.0.0/0 é necessária, já que o Cloud NAT fornece conectividade com a Internet diretamente.
    • Se você não usar o Cloud NAT: verifique se há uma rota na VPC para o destino 0.0.0.0/0 que direciona o tráfego para um próximo salto que fornece acesso à Internet, como um firewall ou proxy baseado em instâncias. Além disso, é necessário configurar o peering de rede VPC para trocar rotas personalizadas. Atualize a conexão de peering para exportar rotas personalizadas da VPC e importar rotas personalizadas para ela.
  2. Desative o acesso à Internet e o serviço de IP público para a rede do VMware Engine seguindo as etapas em Desativar o serviço de acesso à Internet em uma região.

Depois de concluir essas etapas, o tráfego vinculado à Internet das VMs de carga de trabalho será roteado pela conexão de peering para a rede VPC e usará a solução de acesso à Internet configurada.

Para mais detalhes, consulte Configurar o acesso à Internet para VMs de carga de trabalho usando a VPC.

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. A maneira como o VMware Engine direciona o tráfego depende do estado do seguinte:

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

    Acessar políticas de rede

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

  3. Na linha correspondente à política de rede relevante, clique no Mais ícone.

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

Se você estiver usando uma rede legada do Google Cloud VMware Engine, será necessário ativar o VPC Service Controls para rotear o acesso à Internet da VEN legada por uma conexão local ou VPC no projeto. Esse requisito se aplica apenas a redes legadas do Google Cloud VMware Engine, e não a VENs padrão.

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

  • Remove a rota padrão IPv4 (destino 0.0.0.0/0, próximo salto no gateway de Internet padrão).
  • 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 para uma conexão que faz peering de uma rede chamada "my-network" no projeto atual, use o gcloud services vpc-peerings enable-vpc-service-controls comando:

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 sua rede VPC e o VMware Engine. Use o gcloud services vpc-peerings disable-vpc-service-controls comando:

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

A seguir