Configure o acesso à Internet para VMs de cargas de trabalho

Configura o serviço de rede de acesso à Internet para cargas de trabalho do VMware no Google Cloud VMware Engine por região. Pode direcionar o tráfego ligado à Internet das VMs de carga de trabalho através do limite da Internet do Google Cloudou de uma ligação no local.

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

O serviço de rede de acesso à Internet suporta o seguinte:

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

O serviço de rede de acesso à Internet não suporta a capacidade de gateway ao nível da aplicação (ALG).

Antes de começar

Para fazer alterações às definições de acesso à Internet da sua nuvem privada, tem de ter acesso de administrador ao VMware Engine.

Para ativar o acesso à Internet, precisa de um intervalo de endereços CIDR de serviços periféricos. Quando ativa o acesso à Internet ou os serviços de rede IP pública, as gateways são implementadas no contexto do inquilino do serviço.

Use o intervalo de endereços CIDR dos serviços periféricos para resolver gateways de IP público e da Internet do VMware Engine. O intervalo de endereços tem de cumprir os seguintes requisitos:

  • Estar em conformidade com a RFC 1918 como intervalo privado.
  • Não se sobrepõem a outros intervalos de endereços do VMware Engine, como o intervalo de endereços usado para dispositivos de gestão ou segmentos NSX.
  • Não ter sobreposição com nenhum intervalo de endereços anunciado ao VMware Engine, como os usados para sub-redes da rede da nuvem virtual privada (VPC) ou redes no local.
  • Dedique um intervalo de endereços IP com 26 bits de máscara de sub-rede (/26).

Requisitos da API e da CLI Google Cloud

Para usar a ferramenta de linha de comandos gcloud ou a API para gerir os recursos do VMware Engine, recomendamos que configure as ferramentas conforme descrito abaixo.

gcloud

  1. Defina o ID do projeto predefinido:

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

    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 Cloud SDK.

API

Os exemplos de API neste conjunto de documentação usam a ferramenta de linha de comandos cURL para consultar a API. É necessária uma chave de acesso válida como parte do pedido.cURL Existem várias formas de obter um token de acesso válido. Os passos seguintes usam a ferramenta gcloud para gerar um token de acesso:

  1. Inicie sessão em Google Cloud:

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

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

    echo $TOKEN
    

Agora, use o token de autorização nos seus pedidos à API. Por 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 VMware Engine para comunicar com a API. Para poder usar esta abordagem, a biblioteca tem de estar instalada e as credenciais predefinidas da aplicação devem estar configuradas.

  1. Transfira e instale a biblioteca Python:

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

    gcloud auth application-default login
    

    Em alternativa, use um ficheiro de chave da conta de serviço:

    export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

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

Configure o serviço de acesso à Internet

Pode permitir que as VMs de carga de trabalho tenham acesso à Internet criando ou atualizando uma política de rede.

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

Ative o serviço de acesso à Internet numa região

Consola

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

  1. Na Google Cloud consola, aceda à página Políticas de rede.

    Aceda a Políticas de rede

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

  3. Clique em Criar para criar uma nova política. Se quiser editar uma política de rede existente, clique no ícone Mais no final de uma linha e selecione Editar.

  4. Preencha os detalhes da sua política de rede, incluindo a escolha da rede e da região às quais a política se aplica.

  5. Ative o Acesso à Internet e, opcionalmente, ative o Serviço de endereço IP externo.

  6. No campo CIDR dos serviços de limite, introduza o intervalo de endereços a usar quando se dirigir ao gateway de Internet do VMware Engine (intervalo de endereços /26).

  7. Clique em Criar.

O estado do serviço muda para Ativado quando a operação estiver concluída, normalmente após alguns minutos.

gcloud

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

  • NETWORK_POLICY_NAME: o nome desta política de rede.
  • NETWORK_ID: a rede à qual esta política de rede se aplica
  • IP_RANGE: o intervalo CIDR a usar para acesso à Internet e gateways de acesso IP externo, na notação CIDR. É necessário um bloco CIDR RFC 1918 com um prefixo "/26".
  • LOCATION: global para redes antigas 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 o seguinte:

  • NETWORK_POLICY_NAME: o nome desta política de rede. Tem de estar no formato REGION-default.
  • PROJECT_ID: o ID do projeto para este pedido
  • LOCATION: global para redes antigas ou a região de uma rede padrão
  • IP_RANGE: o intervalo CIDR a usar para acesso à Internet e gateways de acesso IP externo, na notação CIDR. É necessário um bloco CIDR RFC 1918 com um prefixo "/26".
  • NETWORK_ID: a rede para esta 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 a rede otimizada para mobilidade (MON) do HCX

Quando configurar o acesso à Internet para VMs migradas através do HCX com a funcionalidade Mobility Optimized Networking (MON), é necessária uma configuração de encaminhamento específica para garantir a conetividade.

Para segmentos de extensão da camada 2 (L2E) que foram ativados com MON, as VMs migradas não têm automaticamente as respetivas rotas anunciadas ao serviço de Internet do VMware Engine. Para garantir que estas VMs podem aceder à Internet, tem de realizar a seguinte ação:

  • Ative a redistribuição de rotas estáticas para BGP no router de nível 1.

Este passo manual é fundamental para anunciar as rotas dos seus segmentos com MON ativado, o que lhes permite encaminhar o tráfego da Internet através do ambiente do VMware Engine. Sem esta configuração, as VMs nestes segmentos não podem aceder à Internet pública.

Desative o serviço de acesso à Internet numa região

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

Consola

  1. Na Google Cloud consola, aceda à página Políticas de rede.

    Aceda a Políticas de rede

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

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

  4. Ative/desative o Acesso à Internet para Desativado.

    • Tem de desativar o serviço de IP público antes de poder desativar o acesso à Internet.
    • Tem de eliminar todos os endereços IP públicos atribuídos e gateways de VPN ponto a site antes de poder desativar o serviço de IP público.
  5. Clique em Guardar.

O estado do serviço muda para Desativado quando a operação estiver concluída, normalmente após vários minutos.

gcloud

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

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

Substitua o seguinte:

  • NETWORK_POLICY_NAME: o nome desta política de rede
  • LOCATION: global para redes antigas 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 o seguinte:

  • PROJECT_ID: o ID do projeto para este pedido
  • LOCATION: global para redes antigas ou a região de uma rede padrão
  • NETWORK_POLICY_NAME: o nome desta 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)

Use uma ligação no local para o acesso à Internet da carga de trabalho

Opcionalmente, pode direcionar o tráfego ligado à Internet das VMs de carga de trabalho no VMware Engine através de uma ligação nas instalações. O tráfego é direcionado com base no estado do seguinte:

  • Anúncio de trajeto predefinido (0.0.0.0/0) a partir de local
  • Serviço de IP público do VMware Engine
  • Serviço de acesso à Internet do VMware Engine
  • VPC Service Controls na ligação de intercâmbio da VPC entre a sua rede da VPC e o VMware Engine

Ative o encaminhamento do tráfego da Internet através de uma ligação no local

Para aceder à Internet a partir das VMs da carga de trabalho através de uma ligação no local, tem de concluir dois passos:

  1. Anuncie o encaminhamento predefinido (0.0.0.0/0) a partir das instalações através de uma ligação nas instalações (Cloud VPN ou Cloud Interconnect). Verifique o gateway da Cloud VPN ou o Cloud Router onde a ligação no local à sua VPN termina.
  2. Desative o acesso à Internet e o serviço de IP público para a rede do VMware Engine.

Consola

  1. Na Google Cloud consola, aceda à página Políticas de rede.

    Aceda a Políticas de rede

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

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

  4. Ative/desative o IP público para Desativado.

  5. Ative/desative o Acesso à Internet para Desativado.

  6. Clique em Guardar.

  7. Se usar uma rede do VMware Engine antiga: ative os VPC Service Controls na ligação de peering de VPC entre a sua rede de VPC e o VMware Engine através do 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

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

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

Substitua o seguinte:

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

Se usar uma rede do VMware Engine antiga: ative os VPC Service Controls na ligação de peering de VPC entre a sua rede de VPC e o VMware Engine através do 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 usar uma rede do VMware Engine antiga: ative os VPC Service Controls na ligação de peering de VPC entre a sua rede de VPC e o VMware Engine através do 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 usar uma rede do VMware Engine antiga: ative os VPC Service Controls na ligação de peering de VPC entre a sua rede de VPC e o VMware Engine através do comando gcloud services vpc-peerings enable-vpc-service-controls:

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

A ativação dos VPC Service Controls é essencial para encaminhar o tráfego de Internet através de uma ligação no local ou de uma VPC no seu projeto.

Quando os VPC Service Controls estão ativados, Google Cloud faz as seguintes alterações de encaminhamento na rede VPC do produtor de serviços (neste caso, o projeto de inquilino de serviço com intercâmbio com o VMware Engine):

  • Remove o encaminhamento predefinido IPv4 (destino 0.0.0.0/0, gateway de Internet predefinido do próximo salto).
  • Começa a encaminhar o tráfego da Internet através da rota predefinida da interligação de VPCs.

Exemplo:

Para ativar os VPC Service Controls para um intercâmbio de rede com o nome "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

Desative o encaminhamento do tráfego da Internet através de uma ligação no local

Para desativar o encaminhamento do tráfego de Internet das VMs da carga de trabalho através de uma ligação nas instalações, pare de anunciar o encaminhamento predefinido (0.0.0.0/0) e desative os VPC Service Controls na ligação de peering de VPC.

Se usar uma rede do VMware Engine antiga: desative os VPC Service Controls na ligação de peering de VPC entre a sua rede de 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

O que se segue?