Creazione di un cloud privato VMware Engine

Un cloud privato è uno stack VMware isolato composto da host ESXi, vCenter, vSAN, NSX e HCX. Puoi gestire i cloud privati tramite la Google Cloud console. 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 interni viene suddiviso in subnet diverse durante il deployment.

Prima di iniziare

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

Lo spazio di indirizzi della subnet vSphere/vSAN non deve sovrapporsi a nessuna rete che comunicherà con il cloud privato, come le reti on-premise e Google Cloud le reti Virtual Private Cloud (VPC). Per saperne di più sulle subnet vSphere o vSAN, consulta VLAN e subnet su VMware Engine.

Requisiti di Google Cloud CLI e dell'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, è 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
    

    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.

Creare un cloud privato standard

Console

Per creare un cloud privato standard utilizzando la Google Cloud console, segui questi passaggi:

  1. Nella Google Cloud console, vai alla pagina Cloud privati.

    Vai a Cloud privati

  2. Fai clic su Seleziona un progetto e seleziona l'organizzazione, la cartella o il progetto in cui vuoi creare il cloud privato.

  3. Fai clic su Crea.

  4. Inserisci un nome per il cloud privato.

  5. Seleziona Cloud privato standard per il tipo di cloud privato.

  6. Seleziona la località in cui vuoi eseguire il deployment del cloud privato.

  7. Inserisci un nome per il cluster primario.

  8. Seleziona il tipo di nodo per il cluster primario.

  9. Seleziona il numero di nodi per il cloud privato. Per i carichi di lavoro di produzione, crea il cloud privato con almeno 3 nodi. VMware Engine elimina i cloud privati che contengono un solo nodo dopo 60 giorni.

  10. (Facoltativo) Fai clic sul pulsante di attivazione/disattivazione Personalizza core se vuoi ridurre il numero di core disponibili per ogni nodo nel cluster di gestione. Per i dettagli, consulta Conteggi dei core personalizzati.

  11. Inserisci un intervallo CIDR per la rete di gestione VMware. Per informazioni sulle limitazioni di questo intervallo, consulta la sezione Prima di iniziare.

  12. Fai clic su Esamina e crea.

  13. Rivedi le impostazioni. Per modificare le impostazioni, fai clic su Indietro.

  14. Fai clic su Crea per avviare il provisioning del cloud privato.

L'elenco seguente descrive ogni campo durante la creazione del cloud privato in modo più dettagliato:

  • Nome: identificatore univoco permanente del cloud privato.
  • Descrizione: informazioni aggiuntive visibili nella pagina dei dettagli del cloud privato.
  • Regione: regione geografica in cui VMware Engine ospita il cloud privato.
  • Zona: sottoinsieme di una regione fisicamente isolato da altre zone nella stessa regione. Una zona è un singolo dominio in errore all'interno di una regione.
  • Nome cluster primario: nome assegnato al cluster vSphere iniziale nel cloud privato. Le appliance di gestione VMware del cloud privato vengono eseguite su questo cluster.
  • Tipo di nodo: configurazione hardware dei nodi nel cluster primario.
  • Nodi: numero di nodi nel cluster primario.

  • Intervallo di indirizzi IP di gestione: intervallo di indirizzi IP utilizzato per vCenter Server, NSX Manager, gli host ESXi e altre parti dell'infrastruttura del cloud privato. Questo intervallo non viene utilizzato per le VM dei workload e non deve sovrapporsi a nessuna parte della rete VPC o a qualsiasi altra rete a cui prevedi di connettere il cloud privato.
  • Rete VMware Engine: risorsa di rete che gestisce le connessioni ai cloud privati in base a una policy di rete. Tu e le risorse connesse a questa rete VMware Engine potete accedere al cloud privato da dentro Google Cloud.

gcloud

Per creare un cloud privato standard utilizzando Google Cloud CLI, segui questi passaggi:

  1. (Facoltativo) Elenca le regioni e le zone disponibili per il tuo progetto eseguendo il comando gcloud vmware locations list:

    gcloud vmware locations list \
        --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto per questa richiesta
  2. Crea una rete per il cloud privato eseguendo il gcloud vmware networks create comando:

    gcloud vmware networks create NETWORK_NAME \
        --location=global \
        --type=STANDARD \
        --description="DESCRIPTION"

    Sostituisci quanto segue:

    • NETWORK_NAME: il nome della rete per questa rete VMware Engine
    • DESCRIPTION: una descrizione per questa rete VMware Engine

    La richiesta restituisce un ID operazione.

  3. Controlla lo stato dell'operazione eseguendo il gcloud vmware operations describe comando: quando l'operazione restituisce DONE, controlla la risposta per verificare se l' operazione è andata a buon fine:

    gcloud vmware operations describe OPERATION_ID \
        --location=global

    Sostituisci quanto segue:

    • OPERATION_ID: l'ID del passaggio precedente
  4. Crea un cloud privato a tre nodi eseguendo il gcloud vmware private-clouds create comando:

    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
    

    Sostituisci quanto segue:

    • PRIVATE_CLOUD_ID: il nome del cloud privato.
    • ZONE: la zona del cloud privato.
    • CLUSTER_ID: il nome del nuovo cluster in questo cloud privato.
    • NODE_TYPE: il tipo di nodo. Per saperne di più, consulta Tipi di nodi.
    • NODE_COUNT: il numero di nodi. Specifica un valore pari o superiore a tre.
    • IP_ADDRESS: l'indirizzo IP, ad esempio 192.168.0.0/24, per questa richiesta.
    • NETWORK_NAME: il nome della rete per questo cloud.

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

  5. Controlla lo stato dell'operazione eseguendo il gcloud vmware operations describe comando: quando l'operazione restituisce DONE, controlla la risposta per verificare se l' operazione è andata a buon fine.

    gcloud vmware operations describe OPERATION_ID \
        --location=ZONE
    

    Sostituisci quanto segue:

    • OPERATION_ID: l'ID del passaggio precedente
    • ZONE: la zona del cloud privato.
  6. Connetti la rete VMware Engine alla tua rete VPC tramite il peering delle connessioni VPC.

  7. Recupera le credenziali di vCenter e NSX eseguendo rispettivamente i gcloud vmware private-clouds vcenter credentials describe e i gcloud vmware private-clouds nsx credentials describe.

    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

    Sostituisci quanto segue:

    • PRIVATE_CLOUD_ID: l'ID del cloud privato
    • ZONE: la zona del cloud privato

API

Per creare un cloud privato standard utilizzando l'API VMware Engine, segui questi passaggi:

  1. Crea una rete VMware Engine effettuando una richiesta 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/global/vmwareEngineNetworks?vmwareEngineNetworkId=NETWORK_NAME -d '{"type": "standard"}'
    

    Sostituisci quanto segue:

    • TOKEN: il token di autorizzazione per questa richiesta
    • PROJECT_ID: il progetto per questa richiesta
    • NETWORK_NAME: il nome della rete per il cloud privato

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

  2. Controlla lo stato dell'operazione effettuando una richiesta GET. Quando l'operazione restituisce DONE, controlla la risposta per verificare se l'operazione è andata a buon fine:

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

    Sostituisci OPERATION_ID con l'ID del passaggio precedente.

  3. Crea un cloud privato a tre nodi effettuando una richiesta 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/global/vmwareEngineNetworks/NETWORK_NAME",
      "managementCidr":"10.241.0.0/22"
       },
    "managementCluster":{
      "clusterId": "CLUSTER_ID",
      "nodeTypeConfigs": {
      "standard-72": {
        "nodeCount": NODE_COUNT
       }
      }
     }
    }"
    

    Sostituisci quanto segue:

    • TOKEN: il token di autorizzazione per questa richiesta.
    • PROJECT_ID: l'ID progetto per questa richiesta
    • ZONE: la zona del cloud privato
    • PRIVATE_CLOUD_ID: l'ID del cloud privato
    • NETWORK_NAME: il nome della rete per il cloud privato
    • CLUSTER_ID: l'ID del nuovo cluster in questo cloud privato
    • NODE_COUNT: il numero di nodi. Specifica un valore pari o superiore a tre.

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

  4. Controlla lo stato dell'operazione effettuando una richiesta GET. Quando l'operazione restituisce DONE, controlla la risposta per verificare se l'operazione è andata a buon fine:

    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/operations/OPERATION_ID
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto per questa richiesta
    • ZONE: la zona del cloud privato
    • OPERATION_ID: l'ID del passaggio precedente
  5. Connetti la rete VMware Engine alla tua rete VPC tramite il peering delle connessioni VPC.

  6. Recupera le credenziali di vCenter e NSX effettuando richieste 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"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto per questa richiesta
    • ZONE: la zona del cloud privato
    • PRIVATE_CLOUD_ID: l'ID del cloud privato

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 operations che puoi utilizzare per controllare l'avanzamento dell'operazione.

  3. Controlla lo stato dell'operazione. Recupera le informazioni attuali 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 operation per attendere il completamento.

  4. Connetti la rete VMware Engine alla tua rete VPC tramite il peering delle connessioni VPC.

  5. Recupera le credenziali di vCenter e NSX.

    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
    
    

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

Passaggi successivi