Configurer l'accès Internet pour les VM de charge de travail

Vous configurez le service réseau d'accès à Internet pour les charges de travail VMware dans Google Cloud VMware Engine pour chaque région. Vous pouvez diriger le trafic Internet en provenance de vos VM de charge de travail à l'aide de la périphérie Internet de Google Cloud's ou d'une connexion sur site.

VMware Engine propose les méthodes suivantes pour configurer l'accès à Internet pour les VM de charge de travail :

Les VM de charge de travail pouvant accéder à Internet peuvent également accéder aux Google Cloud services à l'aide de l'accès privé à Google. L'accès aux Google Cloud services à l'aide de l'accès privé à Google reste confiné aux seuls Google Cloud réseaux et n'est jamais exposé à l'Internet public.

Le service réseau d'accès Internet est compatible avec les éléments suivants :

  • Jusqu'à 100 adresses IP publiques pour chaque région
  • Jusqu'à 100 règles d'accès externe par règle de réseau
  • Débit pouvant atteindre 2 Gbit/s pour chaque région
  • Protocoles TCP, UDP et ICMP

Le service réseau d'accès Internet n'est pas compatible avec la fonctionnalité ALG (Application Level Gateway).

Avant de commencer

Pour modifier les paramètres d'accès à Internet de votre cloud privé, vous devez disposer d'un accès administrateur à VMware Engine.

Pour activer l'accès à Internet, vous avez besoin d'une plage d'adresses CIDR des services Edge. Lorsque vous activez l'accès à Internet ou les services réseau d'adresse IP publique, les passerelles se déploient dans le contexte du locataire de services.

Utilisez la plage d'adresses CIDR des services Edge pour adresser les passerelles IP Internet et publiques de VMware Engine. La plage d'adresses doit répondre aux exigences suivantes :

  • Respecter la RFC 1918 en tant que plage privée.
  • Ne chevaucher aucune autre plage d'adresses VMware Engine, telle que la plage d'adresses utilisée pour les dispositifs de gestion ou les segments NSX.
  • Ne chevaucher aucune plage d'adresses annoncée sur VMware Engine, comme celles utilisées pour les sous-réseaux de cloud privé virtuel (VPC) ou les réseaux sur site.
  • Dédiez une plage d'adresses IP avec un masque de sous-réseau de 26 bits (/26).

Exigences concernant Google Cloud CLI et l'API

Pour gérer vos ressources VMware Engine à l'aide de l'outil de ligne de commande gcloud ou de l'API, nous vous recommandons de configurer les outils comme décrit ci-dessous.

gcloud

  1. Définissez votre ID de projet par défaut :

    gcloud config set project PROJECT_ID
    
  2. Définissez une région et une zone par défaut :

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

Pour en savoir plus sur l'outil gcloud vmware, consultez la documentation de référence de Cloud SDK Cloud.

API

Les exemples d'API de cet ensemble de documentation utilisent l'outil de ligne de commande cURL pour interroger l'API. Un jeton d'accès valide est requis dans la requête cURL. Il existe de nombreuses façons d'obtenir un jeton d'accès valide. Les étapes suivantes utilisent l'outil gcloud pour générer un jeton d'accès :

  1. Connectez-vous à Google Cloud:

    gcloud auth login
    
  2. Générez un jeton d'accès et exportez-le vers TOKEN :

    export TOKEN=`gcloud auth print-access-token`
    
  3. Vérifiez que TOKEN est correctement défini :

    echo $TOKEN
    

Utilisez maintenant le jeton d'autorisation dans vos requêtes à l'API. Exemple :

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

Les exemples de code Python de cette documentation utilisent la bibliothèque VMware Engine pour communiquer avec l'API. Pour pouvoir utiliser cette approche, la bibliothèque doit être installée et les identifiants par défaut de l'application doivent être configurés.

  1. Téléchargez et installez la bibliothèque Python :

    pip install google-cloud-vmwareengine
    
  2. Configurez les informations ADC en exécutant ces commandes dans votre shell :

    gcloud auth application-default login
    

    Vous pouvez également utiliser un fichier de clé de compte de service :

    export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

Pour en savoir plus sur la bibliothèque, consultez la page de référence ou les exemples de code sur GitHub.

Configurer le service d'accès à Internet

Pour permettre à vos VM de charge de travail d'accéder à Internet, créez ou mettez à jour une règle de réseau.

Par défaut, le service réseau d'accès Internet est désactivé.

Activer le service d'accès à Internet dans une région

Console

Pour activer le service d'accès à Internet dans une région, procédez comme suit :

  1. Dans la Google Cloud console, accédez à la page Règles de réseau.

    Accéder aux règles de réseau

  2. Cliquez sur Sélectionner un projet, puis sélectionnez l'organisation, le dossier ou le projet contenant le réseau VMware Engine pour lequel vous souhaitez activer le service d'accès à Internet.

  3. Cliquez sur Créer pour créer une règle. Si vous souhaitez modifier une règle de réseau existante, cliquez sur l'icône Plus à la fin d'une ligne, puis sélectionnez Modifier.

  4. Renseignez les détails de votre règle de réseau, y compris le réseau et la région auxquels elle s'applique.

  5. Basculez le bouton Accès à Internet sur Activé et, si vous le souhaitez, activez le Service d'adresse IP externe.

  6. Dans le champ Plage CIDR des services périphériques, saisissez la plage d'adresses à utiliser lors de l'adressage de la passerelle Internet de VMware Engine (plage d'adresses /26).

  7. Cliquez sur Créer.

L'état du service passe à Activé lorsque l'opération est terminée, généralement après quelques minutes.

gcloud

À l'aide de l'outil gcloud, exécutez la commande suivante pour créer une règle de réseau :

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

Remplacez les éléments suivants :

  • NETWORK_POLICY_NAME: nom de cette règle de réseau.
  • NETWORK_ID: réseau auquel s'applique cette règle de réseau.
  • IP_RANGE: plage CIDR à utiliser pour les passerelles d'accès à Internet et d'accès à l'adresse IP externe, au format CIDR. Un bloc CIDR RFC 1918 avec un préfixe "/26" est requis.
  • LOCATION: global pour les réseaux hérités ou la région d'un réseau 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
   }
}'

Remplacez les éléments suivants :

  • NETWORK_POLICY_NAME: nom de cette règle de réseau. Il doit être au format REGION-default.
  • PROJECT_ID : ID du projet pour cette requête.
  • LOCATION: global pour les réseaux hérités ou la région d'un réseau standard.
  • IP_RANGE: plage CIDR à utiliser pour les passerelles d'accès à Internet et d'accès à l'adresse IP externe, au format CIDR. Un bloc CIDR RFC 1918 avec un préfixe "/26" est requis.
  • NETWORK_ID : réseau auquel s'applique cette règle de réseau .

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)

Consignes concernant HCX Mobility Optimized Networking (MON)

Si vous migrez des VM à l'aide de HCX avec Mobility Optimized Networking (MON), vous avez besoin d'une configuration de routage spécifique pour garantir la connectivité à Internet.

Si vous avez activé MON pour les segments d'extension de couche 2 (L2E), VMware Engine n'annonce pas automatiquement les routes des VM migrées à son service Internet. Pour vous assurer que ces VM peuvent accéder à Internet, vous devez activer la redistribution des routes statiques vers BGP au niveau du routeur de niveau 1.

Cette étape est nécessaire pour annoncer les routes de vos segments compatibles avec MON, ce qui leur permet d'acheminer le trafic Internet via l'environnement VMware Engine. Sans cette configuration, les VM de ces segments ne peuvent pas accéder à l'Internet public.

Désactiver le service d'accès à Internet dans une région

Pour désactiver le service d'accès à Internet dans une région, procédez comme suit :

Console

  1. Dans la Google Cloud console, accédez à la page Règles de réseau.

    Accéder aux règles de réseau

  2. Cliquez sur Sélectionner un projet, puis sélectionnez l'organisation, le dossier ou le projet contenant le réseau VMware Engine pour lequel vous souhaitez désactiver le service d'accès à Internet.

  3. Sur la ligne correspondant à la règle de réseau appropriée, cliquez sur l' icône Plus.

  4. Basculez le bouton Accès à Internet sur Désactivé.

    • Vous devez désactiver le service d'adresse IP publique avant de pouvoir désactiver l'accès à Internet.
    • Vous devez supprimer toutes les adresses IP publiques allouées et les passerelles VPN point à site pour pouvoir désactiver le service d'adresse IP publique.
  5. Cliquez sur Enregistrer.

L'état du service passe à Désactivé lorsque l'opération est terminée, généralement après quelques minutes.

gcloud

À l'aide de l'outil gcloud, exécutez la commande suivante pour mettre à jour la règle de réseau :

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

Remplacez les éléments suivants :

  • NETWORK_POLICY_NAME: nom de cette règle de réseau.
  • LOCATION: global pour les réseaux hérités ou la région d'un réseau 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
   }
}"

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet pour cette requête.
  • LOCATION: global pour les réseaux hérités ou la région d'un réseau standard.
  • NETWORK_POLICY_NAME: nom de cette règle de réseau.

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)

Utiliser un VPC dans votre projet pour accéder aux charges de travail depuis Internet

Vous pouvez éventuellement diriger le trafic Internet en provenance de vos VM de charge de travail dans VMware Engine via un VPC de votre projet. Cette option n'est disponible que pour les réseaux VMware Engine standards appairés à votre réseau VPC.

Pour accéder à Internet depuis vos VM de charge de travail via un VPC de votre projet, procédez comme suit :

  1. Configurez l'accès à Internet dans votre VPC.
    • Si vous utilisez Cloud NAT : assurez-vous que Cloud NAT est configuré pour fournir un accès à Internet aux ressources de votre réseau VPC. Aucune route spécifique pour 0.0.0.0/0 n'est requise, car Cloud NAT fournit directement une connectivité à Internet.
    • Si vous n'utilisez pas Cloud NAT : assurez-vous d'avoir une route dans votre VPC pour la destination 0.0.0.0/0 qui dirige le trafic vers un saut suivant fournissant un accès à Internet, tel qu'un pare-feu ou un proxy basé sur une instance. Vous devez également configurer l'appairage de réseaux VPC pour échanger des routes personnalisées. Mettez à jour la connexion d'appairage pour exporter les routes personnalisées de votre VPC et les importer.
  2. Désactivez le service d'accès à Internet et d'adresse IP publique pour le réseau VMware Engine en suivant les étapes décrites dans la section Désactiver le service d'accès à Internet dans une région.

Une fois ces étapes terminées, le trafic Internet en provenance de vos VM de charge de travail est acheminé via la connexion d'appairage vers votre réseau VPC et utilise la solution d'accès à Internet qui y est configurée.

Pour en savoir plus, consultez la section Configurer l'accès à Internet pour les VM de charge de travail à l'aide d'un VPC.

Utiliser une connexion sur site pour accéder aux charges de travail depuis Internet

Vous pouvez éventuellement diriger le trafic Internet en provenance de vos VM de charge de travail dans VMware Engine via une connexion sur site. La façon dont VMware Engine achemine le trafic dépend de l'état des éléments suivants :

  • Annonce de routage par défaut (0.0.0.0/0) à partir de l'environnement sur site
  • Service d'adresse IP publique de VMware Engine
  • Service d'accès Internet de VMware Engine
  • VPC Service Controls sur la connexion d'appairage VPC entre votre réseau VPC et VMware Engine (réseaux VMware Engine hérités uniquement)

Activer le routage du trafic Internet via une connexion sur site

Pour accéder à Internet depuis vos VM de charge de travail via une connexion sur site, vous devez effectuer deux étapes :

  1. Annoncez la route par défaut (0.0.0.0/0) depuis une infrastructure sur site en utilisant une connexion sur site (Cloud VPN ou Cloud Interconnect). Vérifiez la passerelle Cloud VPN ou le routeur Cloud Router où se termine la connexion à votre VPN depuis le réseau sur site.
  2. Désactivez le service d'accès à Internet et d'adresse IP publique pour le réseau VMware Engine.

Console

  1. Dans la Google Cloud console, accédez à la page Règles de réseau.

    Accéder aux règles de réseau

  2. Cliquez sur Sélectionner un projet, puis sélectionnez l'organisation, le dossier ou le projet contenant le réseau VMware Engine pour lequel vous souhaitez activer le service d'accès à Internet.

  3. Sur la ligne correspondant à la règle de réseau appropriée, cliquez sur l' icône Plus.

  4. Basculez le bouton Service d'adresse IP publique sur Désactivé.

  5. Basculez le bouton Accès à Internet sur Désactivé.

  6. Cliquez sur Enregistrer.

  7. Si vous utilisez un réseau VMware Engine hérité : activez VPC Service Controls sur la connexion d'appairage VPC entre votre réseau VPC et VMware Engine à l'aide de la gcloud services vpc-peerings enable-vpc-service-controls commande :

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

gcloud

À l'aide de l'outil gcloud, exécutez la commande suivante pour mettre à jour la règle de réseau :

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

Remplacez les éléments suivants :

  • NETWORK_POLICY_NAME: nom de cette règle de réseau.
  • LOCATION: global pour les réseaux hérités ou la région d'un réseau standard.

Si vous utilisez un réseau VMware Engine hérité : activez VPC Service Controls sur la connexion d'appairage VPC entre votre réseau VPC et VMware Engine à l'aide de la commande 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
   }
}"

Si vous utilisez un réseau VMware Engine hérité : activez VPC Service Controls sur la connexion d'appairage VPC entre votre réseau VPC et VMware Engine à l'aide de la commande 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

Définissez internet_access et external_ip sur 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)

Si vous utilisez un réseau VMware Engine hérité : activez VPC Service Controls sur la connexion d'appairage VPC entre votre réseau VPC et VMware Engine à l'aide de la commande gcloud services vpc-peerings enable-vpc-service-controls :

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

Si vous utilisez un réseau Google Cloud VMware Engine hérité, vous devez activer VPC Service Controls pour acheminer l'accès à Internet du réseau VEN hérité via une connexion sur site ou un VPC de votre projet. Cette exigence ne s'applique qu'aux réseaux Google Cloud VMware Engine hérités, et non aux réseaux VEN standards.

Lorsque vous activez VPC Service Controls, Google Cloud effectue les modifications de routage suivantes dans le réseau VPC du producteur de services (dans ce cas, le projet locataire de services appairé à VMware Engine) :

  • Supprime la route IPv4 par défaut (destination 0.0.0.0/0, saut suivant de la passerelle Internet par défaut).
  • Commence à transférer le trafic Internet à l'aide de la route par défaut de l'appairage VPC.

Exemple :

Pour activer VPC Service Controls pour une connexion appairant un réseau nommé "my-network" sur le projet actuel, utilisez la commandegcloud services vpc-peerings enable-vpc-service-controls :

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

Désactiver le routage du trafic Internet via une connexion sur site

Pour désactiver le routage du trafic Internet de vos VM de charge de travail via une connexion sur site, arrêtez d'annoncer la route par défaut (0.0.0.0/0) et désactivez VPC Service Controls sur la connexion d'appairage VPC.

Si vous utilisez un réseau VMware Engine hérité : désactivez VPC Service Controls sur la connexion d'appairage VPC entre votre réseau VPC et VMware Engine à l'aide de la gcloud services vpc-peerings disable-vpc-service-controls commande :

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

Étape suivante