Créer un cloud privé VMware Engine

Un cloud privé est une pile VMware isolée constituée d'hôtes ESXi, d'un serveur vCenter et des composants vSAN, NSX-T et HCX. Vous gérez les clouds privés via la console Google Cloud. Lorsque vous créez un cloud privé, vous obtenez un seul cluster vSphere et toutes les VM de gestion créées dans ce cluster.

VMware Engine déploie les composants de gestion sur le réseau que vous sélectionnez pour les sous-réseaux vSphere/vSAN. La plage d'adresses IP du réseau est divisée en différents sous-réseaux pendant le déploiement.

Avant de commencer

Avant d'effectuer les tâches de cette page, suivez les étapes préalables suivantes.

  • Allouez une plage d'adresses IP unique pour les sous-réseaux vSphere/vSAN du cloud privé que vous souhaitez créer.
    • Préfixe de la plage CIDR minimale : /24
    • Préfixe de la plage CIDR maximale:/20
  • Si vous souhaitez effectuer une résolution d'adresses globale à l'aide de Cloud DNS, activez l'API Cloud DNS et terminez la configuration de Cloud DNS avant de créer votre cloud privé.

L'espace d'adressage de sous-réseau vSphere/vSAN ne doit chevaucher aucun réseau qui communique avec le cloud privé, tel que des réseaux sur site et les réseaux de cloud privés virtuels (VPC) Google Cloud. Pour en savoir plus sur les sous-réseaux vSphere ou vSAN, consultez la page VLAN et sous-réseaux sur VMware Engine.

Configuration requise pour la Google Cloud CLI et les API

Pour utiliser l'outil de ligne de commande gcloud ou l'API pour gérer vos ressources VMware Engine, 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.

Créer un cloud privé standard

Console

Pour créer un cloud privé standard à l'aide de la console Google Cloud, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Clouds privés.

    Accéder à "Private Clouds" (Clouds privés)

  2. Cliquez sur Créer.

  3. Saisissez un nom pour le cloud privé.

  4. Sélectionnez Cloud privé standard comme type de cloud privé.

  5. Sélectionnez l'emplacement où vous souhaitez déployer le cloud privé.

  6. Saisissez un nom pour le cluster principal.

  7. Sélectionnez le type de nœud pour votre cluster principal.

  8. Sélectionnez le nombre de nœuds du cloud privé. Pour les charges de travail de production, créez votre cloud privé avec au moins trois nœuds. VMware Engine supprime les clouds privés qui ne contiennent qu'un seul nœud après 60 jours.

  9. Facultatif : Cliquez sur le bouton d'activation Personnaliser les cœurs si vous souhaitez réduire le nombre de cœurs disponibles pour chaque nœud du cluster de gestion. Pour en savoir plus, consultez la section Nombre de cœurs personnalisé.

  10. Saisissez une plage CIDR pour le réseau de gestion VMware. Pour en savoir plus sur les restrictions de cette plage, consultez la section Avant de commencer.

  11. Cliquez sur Review and Create (Vérifier et créer).

  12. Vérifiez les paramètres. Pour modifier les paramètres, cliquez sur Retour.

  13. Cliquez sur Créer pour commencer à provisionner le cloud privé.

La liste suivante décrit plus en détail chaque champ à renseigner lors de la création du cloud privé :

  • Name (Nom) : identifiant unique et permanent du cloud privé.
  • Description (Description) : informations supplémentaires visibles sur la page des détails du cloud privé.
  • Region (Région) : région géographique dans laquelle VMware Engine héberge votre cloud privé.
  • Zone (Zone) : sous-ensemble d'une région isolé physiquement des autres zones de la même région. Une zone est un domaine de défaillance unique au sein d'une région.
  • Primary cluster name (Nom du cluster principal) : nom donné au cluster vSphere initial de votre cloud privé. Les dispositifs de gestion VMware de votre cloud privé s'exécutent sur ce cluster.
  • Type de nœud: configuration matérielle des nœuds de votre cluster principal.
  • Nodes (Nœuds) : nombre de nœuds dans le cluster principal.

  • Management IP address range (Plage d'adresses IP de gestion) : plage d'adresses IP utilisée pour vCenter Server, NSX Manager, les hôtes ESXi et d'autres parties de l'infrastructure du cloud privé. Cette plage n'est pas utilisée pour les VM de charge de travail et ne doit chevaucher aucune partie de votre réseau VPC, ni de tout autre réseau auquel vous prévoyez de connecter votre cloud privé.
  • Réseau VMware Engine: ressource réseau qui gère les connexions cloud privées conformément à une règle de réseau. Vous et les ressources connectées à ce réseau VMware Engine pouvez accéder au cloud privé depuis Google Cloud.

gcloud

Pour créer un cloud privé étendu à l'aide de Google Cloud CLI, procédez comme suit:

  1. Facultatif: listez les régions et zones disponibles pour votre projet en exécutant la commande gcloud vmware locations list:

    gcloud vmware locations list \
        --project=PROJECT_ID
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet pour cette requête
  2. Créez un réseau pour votre cloud privé en exécutant la commande gcloud vmware networks create:

    gcloud vmware networks create NETWORK_NAME \
        --type=LEGACY \
        --location=REGION \
        --description="DESCRIPTION"

    Remplacez les éléments suivants :

    • NETWORK_NAME: nom du réseau du cloud privé
    • REGION: région du cloud privé
    • DESCRIPTION: description du cloud privé

    La requête renvoie un ID d'opération.

  3. Vérifiez l'état de l'opération en exécutant la commande gcloud vmware operations describe : Lorsque l'opération renvoie DONE, vérifiez la réponse pour voir si l'opération a réussi:

    gcloud vmware operations describe OPERATION_ID \
        --location REGION

    Remplacez les éléments suivants :

    • OPERATION_ID: ID de l'étape précédente
    • REGION: région du cloud privé
  4. Créez un cloud privé à trois nœuds en exécutant la commande gcloud vmware private-clouds create:

    gcloud vmware private-clouds create PRIVATE_CLOUD_ID \
      --location=ZONE \
      --cluster=CLUSTER_ID \
      --node-type-config=type=NODE_TYPE,count=NODE_COUNT \
      --management-range=`IP_ADDRESS` \
      --vmware-engine-network=NETWORK_NAME
    

    Remplacez les éléments suivants :

    • PRIVATE_CLOUD_ID: nom du cloud privé.
    • ZONE: zone du cloud privé.
    • CLUSTER_ID: nom du nouveau cluster dans ce cloud privé.
    • NODE_TYPE: type de nœud. Pour en savoir plus, consultez la section Types de nœuds.
    • NODE_COUNT: nombre de nœuds. Spécifiez une valeur d'au moins trois.
    • IP_ADDRESS: adresse IP (par exemple, 192.168.0.0/24) de cette requête.
    • NETWORK_NAME: nom du réseau de ce cloud.

    La requête renvoie un ID d'opération que vous pouvez utiliser pour vérifier la progression de l'opération.

  5. Vérifiez l'état de l'opération en exécutant la commande gcloud vmware operations describe : lorsque l'opération renvoie DONE, vérifiez la réponse pour voir si l'opération a réussi.

    gcloud vmware operations describe OPERATION_ID \
        --location REGION
    

    Remplacez les éléments suivants :

    • OPERATION_ID: ID de l'étape précédente
    • REGION: région du cloud privé
  6. Connectez le réseau VMware Engine à votre VPC en configurant l'accès aux services privés.

  7. Récupérez les identifiants vCenter et NSX-T en exécutant les commandes gcloud vmware private-clouds vcenter credentials describe et gcloud vmware private-clouds nsx credentials describe, respectivement.

    gcloud vmware private-clouds vcenter credentials describe \
        --private-cloud=PRIVATE_CLOUD_ID \
        --location=ZONE
    gcloud vmware private-clouds nsx credentials describe \
        --private-cloud=PRIVATE_CLOUD_ID \
        --location=ZONE

    Remplacez les éléments suivants :

    • PRIVATE_CLOUD_ID: ID du cloud privé
    • ZONE: zone du cloud privé

API

Pour créer un cloud privé étendu à l'aide de l'API VMware Engine, procédez comme suit:

  1. Créez un ancien réseau en envoyant une requête POST.

    curl -X POST -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/vmwareEngineNetworks?vmwareEngineNetworkId=NETWORK_NAME -d "{"type": "legacy"}"
    

    Remplacez les éléments suivants :

    • TOKEN: jeton d'autorisation pour cette requête
    • PROJECT_ID: projet de cette requête
    • REGION: région dans laquelle créer ce réseau
    • NETWORK_NAME: nom du réseau du cloud privé

    La requête renvoie un ID d'opération que vous pouvez utiliser pour vérifier la progression de l'opération.

  2. Vérifiez l'état de l'opération en envoyant une requête GET. Lorsque l'opération renvoie DONE, vérifiez la réponse pour voir si l'opération a réussi:

    curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
    

    Remplacez OPERATION_ID par l'ID de l'étape précédente.

  3. Créez un cloud privé à trois nœuds en envoyant une requête POST:

    curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/privateClouds?privateCloudId=PRIVATE_CLOUD_ID -d "{
    "networkConfig":{
      "vmwareEngineNetwork":"projects/PROJECT_ID/locations/REGION/vmwareEngineNetworks/NETWORK_NAME",
      "managementCidr":"10.241.0.0/22"
       },
    "managementCluster":{
      "clusterId": "CLUSTER_ID",
      "nodeTypeConfigs": {
      "standard-72": {
        "nodeCount": NODE_COUNT
       }
      }
     }
    }"
    

    Remplacez les éléments suivants :

    • TOKEN: jeton d'autorisation pour cette requête.
    • PROJECT_ID : ID du projet pour cette requête
    • ZONE: zone du cloud privé
    • PRIVATE_CLOUD_ID: ID du cloud privé
    • REGION: région du réseau pour ce cloud privé
    • NETWORK_NAME: nom du réseau du cloud privé
    • CLUSTER_ID: ID du nouveau cluster dans ce cloud privé
    • NODE_COUNT: nombre de nœuds. Spécifiez une valeur d'au moins trois.

    La requête renvoie un ID d'opération que vous pouvez utiliser pour vérifier la progression de l'opération.

  4. Vérifiez l'état de l'opération en envoyant une requête GET. Lorsque l'opération renvoie DONE, vérifiez la réponse pour voir si l'opération a réussi:

    curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet pour cette requête
    • REGION: région du cloud privé
    • OPERATION_ID: ID de l'étape précédente
  5. Connectez le réseau VMware Engine à votre VPC en configurant l'accès aux services privés.

  6. Récupérez les identifiants vCenter et NSX-T en envoyant des requêtes GET:

    curl -X GET -H "Authorization: Bearer \"TOKEN"\"  -H "Content-Type: application/json; charset=utf-8" "https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/privateClouds/PRIVATE_CLOUD_ID:showVcenterCredentials"
    
    curl -X GET -H "Authorization: Bearer \"TOKEN"\"  -H "Content-Type: application/json; charset=utf-8" "https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/privateClouds/PRIVATE_CLOUD_ID:showNsxCredentials"
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet pour cette requête
    • ZONE: zone du cloud privé
    • PRIVATE_CLOUD_ID: ID du cloud privé

Python

  1. Créez un ancien réseau.

    from google.cloud import vmwareengine_v1
    
    TIMEOUT = 1200  # 20 minutes
    
    
    def create_legacy_network(
        project_id: str, region: str
    ) -> vmwareengine_v1.VmwareEngineNetwork:
        """
        Creates a new legacy 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"
    
        Returns:
            The newly created VmwareEngineNetwork object.
        """
        network = vmwareengine_v1.VmwareEngineNetwork()
        network.description = (
            "Legacy network created using vmwareengine_v1.VmwareEngineNetwork"
        )
        network.type_ = vmwareengine_v1.VmwareEngineNetwork.Type.LEGACY
    
        request = vmwareengine_v1.CreateVmwareEngineNetworkRequest()
        request.parent = f"projects/{project_id}/locations/{region}"
        request.vmware_engine_network_id = f"{region}-default"
        request.vmware_engine_network = network
    
        client = vmwareengine_v1.VmwareEngineClient()
        result = client.create_vmware_engine_network(request, timeout=TIMEOUT).result()
    
        return result
    
    
  2. Créez un cloud privé à trois nœuds.

    from google.api_core import operation
    from google.cloud import vmwareengine_v1
    
    DEFAULT_MANAGEMENT_CIDR = "192.168.0.0/24"
    DEFAULT_NODE_COUNT = 3
    
    
    def create_private_cloud(
        project_id: str, zone: str, network_name: str, cloud_name: str, cluster_name: str
    ) -> operation.Operation:
        """
        Creates a new Private Cloud using VMware Engine.
    
        Creating a new Private Cloud is a long-running operation and it may take over an hour.
    
        Args:
            project_id: name of the project you want to use.
            zone: the zone you want to use, i.e. "us-central1-a"
            network_name: name of the VMWareNetwork to use for the new Private Cloud
            cloud_name: name of the new Private Cloud
            cluster_name: name for the new cluster in this Private Cloud
    
        Returns:
            An operation object representing the started operation. You can call its .result() method to wait for it to finish.
        """
        request = vmwareengine_v1.CreatePrivateCloudRequest()
        request.parent = f"projects/{project_id}/locations/{zone}"
        request.private_cloud_id = cloud_name
    
        request.private_cloud = vmwareengine_v1.PrivateCloud()
        request.private_cloud.management_cluster = (
            vmwareengine_v1.PrivateCloud.ManagementCluster()
        )
        request.private_cloud.management_cluster.cluster_id = cluster_name
    
        node_config = vmwareengine_v1.NodeTypeConfig()
        node_config.node_count = DEFAULT_NODE_COUNT
    
        # Currently standard-72 is the only supported node type.
        request.private_cloud.management_cluster.node_type_configs = {
            "standard-72": node_config
        }
    
        request.private_cloud.network_config = vmwareengine_v1.NetworkConfig()
        request.private_cloud.network_config.vmware_engine_network = network_name
        request.private_cloud.network_config.management_cidr = DEFAULT_MANAGEMENT_CIDR
    
        client = vmwareengine_v1.VmwareEngineClient()
        return client.create_private_cloud(request)
    
    

    La fonction create_private_cloud renvoie un objet d'opérations que vous pouvez utiliser pour vérifier la progression de l'opération.

  3. Vérifiez l'état de l'opération. Récupérer les informations actuelles sur une opération

    from google.cloud import vmwareengine_v1
    from google.longrunning.operations_pb2 import GetOperationRequest
    
    
    def get_operation_by_name(operation_name: str) -> Operation:
        """
        Retrieve detailed information about an operation.
    
        Args:
            operation_name: name identifying an operation you want to check.
                Expected format: projects/{project_id}/locations/{region}/operations/{operation_id}
    
        Returns:
            Operation object with details.
        """
        client = vmwareengine_v1.VmwareEngineClient()
        request = GetOperationRequest()
        request.name = operation_name
        return client.get_operation(request)
    
    
    def get_operation(project_id: str, region: str, operation_id: str) -> Operation:
        """
        Retrieve detailed information about an operation.
    
        Args:
            project_id: name of the project running the operation.
            region: name of the region in which the operation is running.
            operation_id: identifier of the operation.
    
        Returns:
            Operation object with details.
        """
        return get_operation_by_name(
            f"projects/{project_id}/locations/{region}/operations/{operation_id}"
        )
    
    

    Vous pouvez utiliser la méthode membre .result() de l'objet d'opération pour attendre qu'elle se termine.

  4. Connectez le réseau VMware Engine à votre VPC en configurant l'accès aux services privés.

  5. Récupérez les identifiants vCenter et NSX-T.

    from google.cloud import vmwareengine_v1
    
    
    def get_vcenter_credentials(
        project_id: str, zone: str, private_cloud_name: str
    ) -> vmwareengine_v1.Credentials:
        """
        Retrieves VCenter credentials for a Private Cloud.
    
        Args:
            project_id: name of the project hosting the private cloud.
            zone: name of the zone hosting the private cloud.
            private_cloud_name: name of the private cloud.
    
        Returns:
            A Credentials object.
        """
        client = vmwareengine_v1.VmwareEngineClient()
        credentials = client.show_vcenter_credentials(
            private_cloud=f"projects/{project_id}/locations/{zone}/privateClouds/{private_cloud_name}"
        )
        return credentials
    
    
    from google.cloud import vmwareengine_v1
    
    
    def get_nsx_credentials(
        project_id: str, zone: str, private_cloud_name: str
    ) -> vmwareengine_v1.Credentials:
        """
        Retrieves NSX credentials for a Private Cloud.
    
        Args:
            project_id: name of the project hosting the private cloud.
            zone: name of the zone hosting the private cloud.
            private_cloud_name: name of the private cloud.
    
        Returns:
            A Credentials object.
        """
        client = vmwareengine_v1.VmwareEngineClient()
        credentials = client.show_nsx_credentials(
            private_cloud=f"projects/{project_id}/locations/{zone}/privateClouds/{private_cloud_name}"
        )
        return credentials
    
    

Lorsque VMware Engine crée votre cloud privé, il déploie un certain nombre de composants VMware et divise la plage d'adresses IP fournie en sous-réseaux. La création d'un cloud privé peut prendre de 30 minutes à 2 heures. Une fois le provisionnement terminé, vous recevrez un e-mail.

Étape suivante