Creazione di un cloud privato VMware Engine

Un cloud privato è uno stack VMware isolato composto da host ESXi, vCenter, vSAN, NSX-T e HCX. I cloud privati possono essere gestiti tramite il portale Google Cloud VMware Engine. Quando crei un cloud privato, ottieni un singolo cluster vSphere e tutte le VM di gestione create in quel cluster.

VMware Engine esegue il deployment dei componenti di gestione nella rete selezionata per le subnet vSphere/vSAN. L'intervallo di indirizzi IP di rete è suddiviso in diverse subnet durante il deployment.

Prima di iniziare

Prima di eseguire le attività in questa pagina, esegui i seguenti passaggi preliminari.

Lo spazio di indirizzi della subnet vSphere/vSAN non deve sovrapporsi ad alcuna rete che comunica con il cloud privato, come le reti on-premise e le reti Virtual Private Cloud (VPC) di Google Cloud. Per ulteriori informazioni sulle subnet vSphere o vSAN, consulta VLAN e subnet su VMware Engine.

Requisiti per gcloud 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/o una zona predefinite:

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

Per ulteriori informazioni 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 per la richiesta cURL. Esistono molti modi per ottenere un token di accesso valido. I passaggi seguenti 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 esporta in TOKEN

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

    echo $TOKEN
    
    Output:
    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, è necessario installare la libreria e configurare le Credenziali predefinite dell'applicazione.

  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
    

    o utilizzare un file di chiavi dell'account di servizio

      export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

Per maggiori informazioni sulla libreria, visita la pagina di riferimento o visualizza gli esempi di codice su GitHub.

Crea un cloud privato

Console

  1. Accedi al portale Google Cloud VMware Engine.
  2. Nella pagina Risorse, fai clic su Crea cloud privato.
  3. Seleziona una località per il tuo cloud privato.
  4. Seleziona il numero di nodi per il cloud privato. Per i carichi di lavoro di produzione, crea il tuo cloud privato con almeno 3 nodi. VMware Engine elimina i cloud privati che contengono solo 1 nodo dopo 60 giorni.
  5. (Facoltativo) Fai clic sul pulsante di attivazione/disattivazione Personalizza core se vuoi ridurre il numero di core disponibili per ciascun nodo nel cluster di gestione. Per maggiori dettagli, consulta Conteggi dei core personalizzati.
  6. Inserisci un intervallo CIDR per la rete di gestione VMware. Per informazioni sulle limitazioni in questo intervallo, consulta la sezione Prima di iniziare.
  7. Inserisci un intervallo CIDR per la rete di deployment HCX, utilizzato per il deployment dei componenti HCX. Assicurati che l'intervallo CIDR non si sovrapponga a nessuna delle subnet on-premise o cloud. L'intervallo CIDR deve essere /27 o superiore.
  8. Seleziona Rivedi e crea.
  9. Rivedi le impostazioni. Per modificare le impostazioni, fai clic su Indietro.
  10. Fai clic su Crea per iniziare il provisioning del cloud privato.

Durante la creazione del nuovo cloud privato, VMware Engine esegue il deployment di una serie di componenti VMware e suddivide l'intervallo di indirizzi IP fornito in subnet. La creazione di un cloud privato può richiedere da 30 minuti a 2 ore. Una volta completato il provisioning, riceverai un'email.

gcloud

  1. [Facoltativo] Elenca le regioni e le zone disponibili per il tuo progetto.

    gcloud vmware locations list --project=PROJECT_ID
    
  2. Crea una rete per il tuo cloud privato. Il nome della rete deve essere nel formato REGION-default.

    gcloud vmware networks create REGION-default --type=LEGACY --location=REGION --description="Legacy network created using gcloud vmware"
    

    La richiesta restituisce un ID operazione.

  3. Controlla lo stato dell'operazione. Quando l'operazione restituisce DONE, controlla la risposta per vedere se l'operazione è riuscita.

    gcloud vmware operations describe OPERATION_ID \
        --location REGION
    

    Sostituisci OPERATION_ID con l'ID del passaggio precedente.

  4. Quindi, crea un cloud privato a tre nodi.

    gcloud vmware private-clouds create PC_NAME \
       --location=ZONE --cluster=CLUSTER_NAME\
       --node-type-config=standard-72,count=3 \
       --management-range=192.168.0.0/24 \
       --vmware-engine-network=NETWORK_NAME
    

    Sostituisci quanto segue:

    • PC_NAME: nome del cloud privato
    • ZONE: la zona per il cloud privato
    • CLUSTER_NAME: nome del nuovo cluster in questo cloud privato
    • NETWORK_NAME: il nome della rete per questo cloud

    La richiesta restituisce un ID operazioni che puoi utilizzare per verificare l'avanzamento dell'operazione.

  5. Controlla lo stato dell'operazione. Quando l'operazione restituisce DONE, controlla la risposta per vedere se l'operazione è riuscita.

    gcloud vmware operations describe OPERATION_ID \
        --location REGION
    

    Sostituisci OPERATION_ID con l'ID del passaggio precedente.

  6. Connetti la rete VMware Engine al tuo VPC configurando l'accesso privato ai servizi.

  7. Recupera le credenziali vCenter e NSX-T.

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

API

  1. Crea una rete legacy. Il nome della rete deve essere nel formato REGION-default.

    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=REGION-default -d "{"type": "legacy"}"
    

    Sostituisci quanto segue:

    • TOKEN: il token di autorizzazione per questa richiesta.
    • PROJECT_ID: il progetto per questa richiesta.
    • REGION: la regione in cui creare questa rete.

    La richiesta restituisce un ID operazioni che puoi utilizzare per verificare l'avanzamento dell'operazione.

  2. Controlla lo stato dell'operazione. Quando l'operazione restituisce DONE, controlla la risposta per vedere se l'operazione è riuscita.

    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
    

    Sostituisci OPERATION_ID con l'ID del passaggio precedente.

  3. Crea un cloud privato a tre nodi.

    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=PC_NAME -d "{
    "networkConfig":{
      "vmwareEngineNetwork":"projects/PROJECT_ID/locations/REGION/vmwareEngineNetworks/REGION-default",
      "managementCidr":"10.241.0.0/22"
       },
    "managementCluster":{
      "clusterId": "CLUSTER_NAME",
      "nodeTypeConfigs": {
      "standard-72": {
        "nodeCount": 3
       }
      }
     }
    }"
    

    Sostituisci quanto segue:

    • TOKEN: il token di autorizzazione per questa richiesta.
    • PROJECT_ID: il progetto per questa richiesta
    • ZONE: la zona per il cloud privato
    • PC_NAME: nome del cloud privato
    • REGION: la regione della rete per questo cloud privato
    • CLUSTER_NAME: nome del nuovo cluster in questo cloud privato

    La richiesta restituisce un ID operazioni che puoi utilizzare per verificare l'avanzamento dell'operazione.

  4. Controlla lo stato dell'operazione. Quando l'operazione restituisce DONE, controlla la risposta per vedere se l'operazione è riuscita.

    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
    

    Sostituisci OPERATION_ID con l'ID del passaggio precedente.

  5. Connetti la rete VMware Engine al tuo VPC configurando l'accesso privato ai servizi.

  6. Recupera le credenziali vCenter e NSX-T.

    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/my-private-cloud: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/my-private-cloud:showNsxCredentials"
    

Python

  1. Crea una rete legacy.

    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. Crea un cloud privato a tre nodi.

    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 funzione create_private_cloud restituisce un oggetto operazioni che puoi utilizzare per verificare l'avanzamento dell'operazione.

  3. Controlla lo stato dell'operazione. Recupera le informazioni correnti su un'operazione.

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

    Puoi utilizzare il metodo membro .result() dell'oggetto dell'operazione per attendere il completamento.

  4. Connetti la rete VMware Engine al tuo VPC configurando l'accesso privato ai servizi.

  5. Recupera le credenziali vCenter e 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
    
    

Passaggi successivi