Configura l'accesso a internet per le VM dei carichi di lavoro

Configura il servizio di rete di accesso a internet per i carichi di lavoro VMware in Google Cloud VMware Engine in base alla regione. Puoi indirizzare il traffico diretto a internet dalle VM dei carichi di lavoro utilizzando Google Cloud's internet edge o una connessione on-premise.

VMware Engine offre i seguenti metodi per configurare l'accesso a internet per le VM dei carichi di lavoro:

Le VM dei carichi di lavoro che possono accedere a internet possono anche accedere Google Cloud ai servizi utilizzando l'accesso privato Google. L'accesso ai Google Cloud servizi tramite l'accesso privato Google rimane all'interno delle Google Cloud reti e non esce su internet.

Il servizio di rete di accesso a internet supporta quanto segue:

  • Fino a 100 indirizzi IP pubblici per ogni regione
  • Fino a 100 regole di accesso esterno per policy di rete
  • Throughput fino a 2 Gbps per ogni regione
  • Protocolli TCP, UDP e ICMP

Il servizio di rete di accesso a internet non supporta la funzionalità ALG (Application Level Gateway).

Prima di iniziare

Per apportare modifiche alle impostazioni di accesso a internet del cloud privato, devi disporre dell'accesso amministratore a VMware Engine.

Per abilitare l'accesso a internet, è necessario un intervallo di indirizzi CIDR dei servizi edge. Quando abiliti i servizi di rete di accesso a internet o IP pubblico, i gateway vengono sottoposti a deployment nel contesto del tenant di servizio.

Utilizza l'intervallo di indirizzi CIDR dei servizi edge per indirizzare i gateway internet e IP pubblici di VMware Engine. L'intervallo di indirizzi deve soddisfare i seguenti requisiti:

  • Rispettare la RFC 1918 come intervallo privato.
  • Non sovrapporsi ad altri intervalli di indirizzi di VMware Engine, ad esempio l'intervallo di indirizzi utilizzato per le appliance di gestione o i segmenti NSX.
  • Non sovrapporsi a intervalli di indirizzi pubblicizzati su VMware Engine, ad esempio quelli utilizzati per le subnet di rete Virtual Private Cloud (VPC) o le reti on-premise.
  • Dedica un intervallo di indirizzi IP con 26 bit di maschera di subnet (/26).

Requisiti di Google Cloud CLI e API

Per utilizzare lo strumento a riga di comando gcloud o l'API per gestire le risorse VMware Engine, ti consigliamo di configurare gli strumenti come descritto di seguito.

gcloud

  1. Imposta l'ID progetto predefinito:

    gcloud config set project PROJECT_ID
    
  2. Imposta una regione e una zona predefinite:

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

Per saperne di più sullo strumento gcloud vmware, consulta la documentazione di riferimento di Cloud SDK.

API

Gli esempi di API in questo set di documentazione utilizzano lo strumento a riga di comando cURL per eseguire query sull'API. È necessario un token di accesso valido come parte della richiesta cURL. Esistono molti modi per ottenere un token di accesso valido; i seguenti passaggi utilizzano lo strumento gcloud per generare un token di accesso:

  1. Accedi a Google Cloud:

    gcloud auth login
    
  2. Genera il token di accesso ed esportalo in TOKEN:

    export TOKEN=`gcloud auth print-access-token`
    
  3. Verifica che TOKEN sia impostato correttamente:

    echo $TOKEN
    

Ora utilizza il token di autorizzazione nelle richieste all'API. Ad esempio:

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

Gli esempi di codice Python in questa documentazione utilizzano la libreria VMware Engine per comunicare con l'API. Per poter utilizzare questo approccio, la libreria deve essere installata e le credenziali predefinite dell'applicazione devono essere configurate.

  1. Scarica e installa la libreria Python:

    pip install google-cloud-vmwareengine
    
  2. Configura le informazioni ADC eseguendo questi comandi nella shell:

    gcloud auth application-default login
    

    In alternativa, utilizza un file di chiavi dell'account di servizio:

    export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

Per saperne di più sulla libreria, visita la pagina di riferimento o visualizza gli esempi di codice su GitHub.

Configurare il servizio di accesso a internet

Per consentire alle VM dei carichi di lavoro di accedere a internet, crea o aggiorna una policy di rete.

Per impostazione predefinita, il servizio di rete di accesso a internet è disabilitato.

Abilitare il servizio di accesso a internet in una regione

Console

Per abilitare il servizio di accesso a internet in una regione:

  1. Nella Google Cloud console, vai alla pagina Policy di rete.

    Vai a Policy di rete

  2. Fai clic su Seleziona un progetto e seleziona l'organizzazione, la cartella o il progetto che contiene la rete VMware Engine per cui vuoi abilitare il servizio di accesso a internet.

  3. Fai clic su Crea per creare una nuova policy. Se vuoi modificare un policy di rete esistente, fai clic sull'icona Altro alla fine di una riga e seleziona Modifica.

  4. Compila i dettagli della policy di rete, inclusa la scelta della rete e della regione a cui si applica la policy.

  5. Imposta l'opzione Accesso a internet su Attivato e, facoltativamente, abilita il Servizio di indirizzi IP esterni.

  6. Nel campo CIDR dei servizi edge, inserisci l'intervallo di indirizzi da utilizzare per indirizzare il gateway internet di VMware Engine (intervallo di indirizzi /26).

  7. Fai clic su Crea.

Lo stato del servizio diventa Attivato al termine dell'operazione, in genere dopo alcuni minuti.

gcloud

Utilizzando lo strumento gcloud, esegui il comando seguente per creare una policy di rete:

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

Sostituisci quanto segue:

  • NETWORK_POLICY_NAME: il nome di questa policy di rete.
  • NETWORK_ID: la rete a cui si applica questa policy di rete
  • IP_RANGE: l'intervallo CIDR da utilizzare per i gateway di accesso a internet e IP esterni, in notazione CIDR. È richiesto un blocco CIDR RFC 1918 con un prefisso "/26".
  • LOCATION: global per le reti legacy o la regione di una rete standard

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

Sostituisci quanto segue:

  • NETWORK_POLICY_NAME: il nome di questa policy di rete. Deve essere nel formato REGION-default.
  • PROJECT_ID: l'ID progetto per questa richiesta
  • LOCATION: global per le reti legacy o la regione di una rete standard
  • IP_RANGE: l'intervallo CIDR da utilizzare per i gateway di accesso a internet e IP esterni, in notazione CIDR. È richiesto un blocco CIDR RFC 1918 con un prefisso "/26".
  • NETWORK_ID: la rete per questa policy di rete

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)

Linee guida per HCX Mobility Optimized Networking (MON)

Se esegui la migrazione delle VM utilizzando HCX con Mobility Optimized Networking (MON), è necessaria una configurazione di routing specifica per garantire la connettività a internet.

Se hai abilitato MON per i segmenti di estensione di livello 2 (L2E), VMware Engine non pubblicizza automaticamente le route per le VM di cui è stata eseguita la migrazione al suo servizio internet. Per assicurarti che queste VM possano accedere a internet, devi abilitare la ridistribuzione delle route statiche a BGP sul router di livello 1.

Questo passaggio è necessario per pubblicizzare le route dei segmenti abilitati per MON, che consentono di instradare il traffico internet attraverso l'ambiente VMware Engine. Senza questa configurazione, le VM su questi segmenti non possono accedere alla rete internet pubblica.

Disabilitare il servizio di accesso a internet in una regione

Per disabilitare il servizio di accesso a internet in una regione:

Console

  1. Nella Google Cloud console, vai alla pagina Policy di rete.

    Vai a Policy di rete

  2. Fai clic su Seleziona un progetto e seleziona l'organizzazione, la cartella o il progetto che contiene la rete VMware Engine per cui vuoi disabilitare il servizio di accesso a internet.

  3. Nella riga corrispondente alla policy di rete pertinente, fai clic sull' icona Altro.

  4. Imposta l'opzione Accesso a internet su Disattivato.

    • Prima di poter disabilitare l'accesso a internet, devi disabilitare il servizio IP pubblico.
    • Prima di poter disabilitare il servizio IP pubblico, devi eliminare tutti gli indirizzi IP pubblici allocati e i gateway VPN da punto a sito.
  5. Fai clic su Salva.

Lo stato del servizio diventa Disattivato al termine dell'operazione, in genere dopo alcuni minuti.

gcloud

Utilizzando lo strumento gcloud, esegui il comando seguente per aggiornare la policy di rete:

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

Sostituisci quanto segue:

  • NETWORK_POLICY_NAME: il nome di questa policy di rete
  • LOCATION: global per le reti legacy o la regione di una rete standard

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto per questa richiesta
  • LOCATION: global per le reti legacy o la regione di una rete standard
  • NETWORK_POLICY_NAME: il nome di questa policy di rete

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)

Utilizzare un VPC nel progetto per l'accesso a internet dei carichi di lavoro

Facoltativamente, puoi indirizzare il traffico diretto a internet dalle VM dei carichi di lavoro in VMware Engine tramite un VPC nel tuo progetto. Questa opzione è disponibile solo per le reti VMware Engine standard che sono in peering con la rete VPC.

Per accedere a internet dalle VM dei carichi di lavoro tramite un VPC nel tuo progetto, devi completare i seguenti passaggi:

  1. Configura l'accesso a internet nel VPC.
    • Se utilizzi Cloud NAT:assicurati che Cloud NAT sia configurato per fornire l'accesso a internet alle risorse nella rete VPC. Non è richiesta una route specifica per 0.0.0.0/0, poiché Cloud NAT fornisce la connettività a internet direttamente.
    • Se non utilizzi Cloud NAT: assicurati di avere una route nel VPC per la destinazione 0.0.0.0/0 che indirizzi il traffico a un hop successivo che fornisce l'accesso a internet, ad esempio un firewall o un proxy basato su istanza. Inoltre, devi configurare il peering di rete VPC per scambiare le route personalizzate. Aggiorna la connessione in peering per esportare le route personalizzate dal VPC e importarle.
  2. Disabilita il servizio di accesso a internet e IP pubblico per la rete VMware Engine seguendo i passaggi descritti in Disabilitare il servizio di accesso a internet in una regione.

Dopo aver completato questi passaggi, il traffico diretto a internet dalle VM dei carichi di lavoro viene instradato tramite la connessione in peering alla rete VPC e utilizza la soluzione di accesso a internet configurata.

Per maggiori dettagli, consulta Configurare l'accesso a internet per le VM dei carichi di lavoro utilizzando il VPC.

Utilizzare una connessione on-premise per l'accesso a internet dei carichi di lavoro

Facoltativamente, puoi indirizzare il traffico diretto a internet dalle VM dei carichi di lavoro in VMware Engine tramite una connessione on-premise. Il modo in cui VMware Engine indirizza il traffico dipende dallo stato di quanto segue:

  • Pubblicità della route predefinita (0.0.0.0/0) da on-premise
  • Servizio IP pubblico di VMware Engine
  • Servizio di accesso a internet di VMware Engine
  • Controlli di servizio VPC sulla connessione in peering VPC tra la rete VPC e VMware Engine (solo reti VMware Engine legacy)

Abilitare l'instradamento del traffico internet tramite una connessione on-premise

Per accedere a internet dalle VM dei carichi di lavoro tramite una connessione on-premise, devi completare due passaggi:

  1. Pubblicizza la route predefinita (0.0.0.0/0) da on-premise tramite una connessione on-premise (Cloud VPN o Cloud Interconnect). Controlla il gateway Cloud VPN o il router Cloud in cui termina la connessione on-premise alla VPN.
  2. Disabilita il servizio di accesso a internet e IP pubblico per la rete VMware Engine.

Console

  1. Nella Google Cloud console, vai alla pagina Policy di rete.

    Vai a Policy di rete

  2. Fai clic su Seleziona un progetto e seleziona l'organizzazione, la cartella o il progetto che contiene la rete VMware Engine per cui vuoi abilitare il servizio di accesso a internet.

  3. Nella riga corrispondente alla policy di rete pertinente, fai clic sull' icona Altro.

  4. Imposta l'opzione IP pubblico su Disattivato.

  5. Imposta l'opzione Accesso a internet su Disattivato.

  6. Fai clic su Salva.

  7. Se utilizzi una rete VMware Engine legacy:abilita Controlli di servizio VPC sulla connessione in peering VPC tra la tua rete VPC e VMware Engine utilizzando il gcloud services vpc-peerings enable-vpc-service-controls comando:

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

gcloud

Utilizzando lo strumento gcloud, esegui il comando seguente per aggiornare la policy di rete:

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

Sostituisci quanto segue:

  • NETWORK_POLICY_NAME: il nome di questa policy di rete
  • LOCATION: global per le reti legacy o la regione di una rete standard

Se utilizzi una rete VMware Engine legacy:abilita Controlli di servizio VPC sulla connessione in peering VPC tra la tua rete VPC e VMware Engine utilizzando il 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 utilizzi una rete VMware Engine legacy:abilita Controlli di servizio VPC sulla connessione in peering VPC tra la tua rete VPC e VMware Engine utilizzando il 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

Imposta internet_access e external_ip su 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 utilizzi una rete VMware Engine legacy:abilita Controlli di servizio VPC sulla connessione in peering VPC tra la tua rete VPC e VMware Engine utilizzando il gcloud services vpc-peerings enable-vpc-service-controls comando:

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

Se utilizzi una rete Google Cloud VMware Engine legacy, devi abilitare i Controlli di servizio VPC per instradare l'accesso a internet VEN legacy tramite una connessione on-premise o un VPC nel tuo progetto. Questo requisito si applica solo alle reti Google Cloud VMware Engine legacy, non alle VEN standard.

Quando abiliti i Controlli di servizio VPC, Google Cloud vengono apportate le seguenti modifiche di routing nella rete VPC del producer di servizi (in questo caso, il progetto tenant di servizio in peering con VMware Engine):

  • Rimuove la route predefinita IPv4 (destinazione 0.0.0.0/0, hop successivo gateway internet predefinito).
  • Inizia a inoltrare il traffico internet utilizzando la route predefinita del peering VPC.

Esempio:

Per abilitare i Controlli di servizio VPC per una connessione in peering di una rete denominata "my-network" nel progetto attuale, utilizza il gcloud services vpc-peerings enable-vpc-service-controls comando:

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

Disabilitare l'instradamento del traffico internet tramite una connessione on-premise

Per disabilitare il routing del traffico internet dalle VM dei carichi di lavoro tramite una connessione on-premise, interrompi la pubblicità della route predefinita (0.0.0.0/0) e disabilita i Controlli di servizio VPC sulla connessione in peering VPC.

Se utilizzi una rete VMware Engine legacy:per disabilitare i Controlli di servizio VPC sulla connessione in peering VPC tra la tua rete VPC e VMware Engine, utilizza il 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

Passaggi successivi