Private VMware Engine-Cloud erstellen

Eine private Cloud ist ein isolierter VMware-Stack, der aus ESXi-Hosts, vCenter, vSAN, NSX-T und HCX besteht. Private Clouds werden über das Google Cloud VMware Engine-Portal verwaltet. Wenn Sie eine private Cloud erstellen, erhalten Sie einen einzelnen vSphere-Cluster und alle Verwaltungs-VMs, die in diesem Cluster erstellt werden.

VMware Engine stellt Verwaltungskomponenten im Netzwerk bereit, die Sie für vSphere/vSAN-Subnetze auswählen. Der Netzwerk-IP-Adressbereich wird während der Bereitstellung in verschiedene Subnetze unterteilt.

Hinweise

Bevor Sie die Aufgaben auf dieser Seite ausführen, müssen Sie die folgenden Schritte ausführen.

Der Adressbereich des vSphere-/vSAN-Subnetzes darf sich nicht mit einem Netzwerk überschneiden, das mit der privaten Cloud kommuniziert, z. B. mit lokalen Netzwerken und Google Cloud-VPC-Netzwerken (Virtual Private Cloud). Weitere Informationen zu vSphere- oder vSAN-Subnetzen finden Sie unter VLANs und Subnetze in VMware Engine.

gcloud- und API-Anforderungen

Wenn Sie das gcloud-Befehlszeilentool oder die API zum Verwalten Ihrer VMware Engine-Ressourcen verwenden möchten, empfehlen wir, die Tools wie unten beschrieben zu konfigurieren.

gcloud

  1. Legen Sie Ihre Standardprojekt-ID fest:

    gcloud config set project PROJECT_ID
    
  2. Legen Sie eine Standardregion und/oder -zone fest:

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

Weitere Informationen zum gcloud vmware-Tool finden Sie in der Cloud SDK-Referenzdokumentation.

API

API-Beispiele in dieser Dokumentation verwenden das cURL-Befehlszeilentool, um die API abzufragen. Ein gültiges Zugriffstoken ist als Teil der cURL-Anfrage erforderlich. Es gibt viele Möglichkeiten, ein gültiges Zugriffstoken abzurufen. In den folgenden Schritten wird das gcloud-Tool verwendet, um ein Zugriffstoken zu generieren:

  1. In Google Cloud anmelden

    gcloud auth login
    
  2. Zugriffstoken generieren und in TOKEN exportieren

    export TOKEN=`gcloud auth print-access-token`
    
  3. Überprüfen, ob TOKEN ordnungsgemäß festgelegt ist

    echo $TOKEN
    
    Output:
    TOKEN
    

Verwenden Sie nun das Autorisierungstoken in Ihren Anfragen an die API. Beispiel:

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

In den Python-Codebeispielen in dieser Dokumentation wird die VMware Engine-Bibliothek für die Kommunikation mit der API verwendet. Um diesen Ansatz verwenden zu können, muss die Bibliothek installiert und die Standardanmeldedaten für Anwendungen konfiguriert werden.

  1. Python-Bibliothek herunterladen und installieren

     pip install google-cloud-vmwareengine
    
  2. Konfigurieren Sie die ADC-Informationen, indem Sie diese Befehle in der Shell ausführen

      gcloud auth application-default login
    

    oder verwenden Sie eine Dienstkonto-Schlüsseldatei

      export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

Weitere Informationen zur Bibliothek finden Sie auf der Referenzseite oder in den Codebeispielen auf GitHub.

Private Cloud erstellen

Console

  1. Rufen Sie das Google Cloud VMware Engine-Portal auf.
  2. Klicken Sie auf der Seite Ressourcen auf Private Cloud erstellen.
  3. Wählen Sie einen Standort für Ihre private Cloud aus.
  4. Wählen Sie die Anzahl der Knoten für die private Cloud aus. Erstellen Sie für Produktionsarbeitslasten Ihre private Cloud mit mindestens drei Knoten. VMware Engine löscht private Clouds, die nach 60 Tagen nur einen Knoten enthalten.
  5. Optional: Klicken Sie auf die Ein/Aus-Schaltfläche Kerne anpassen, wenn Sie die Anzahl der verfügbaren Kerne für jeden Knoten im Verwaltungscluster reduzieren möchten. Weitere Informationen finden Sie unter Benutzerdefinierte Kernzählungen.
  6. Geben Sie einen CIDR-Bereich für das VMware-Verwaltungsnetzwerk ein. Informationen zu Einschränkungen für diesen Bereich finden Sie im Abschnitt Vorbereitung.
  7. Geben Sie einen CIDR-Bereich für das HCX-Bereitstellungsnetzwerk ein, das für die Bereitstellung von HCX-Komponenten verwendet wird. Der CIDR-Bereich darf sich nicht mit Ihren lokalen oder Cloud-Subnetzen überschneiden. Der CIDR-Bereich muss /27 oder höher sein.
  8. Wählen Sie Prüfen und erstellen aus.
  9. Prüfen Sie die Einstellungen. Wenn Sie die Einstellungen ändern möchten, klicken Sie auf Zurück.
  10. Klicken Sie auf Erstellen, um mit der Bereitstellung der privaten Cloud zu beginnen.

Wenn VMware Engine die neue private Cloud erstellt, wird eine Reihe von VMware-Komponenten bereitgestellt und der bereitgestellte IP-Adressbereich in Subnetze unterteilt. Die Erstellung der privaten Cloud kann von 30 Minuten bis 2 Stunden dauern. Wenn die Bereitstellung abgeschlossen ist, erhalten Sie eine E-Mail.

gcloud

  1. [Optional] Listen Sie die verfügbaren Regionen und Zonen für Ihr Projekt auf.

    gcloud vmware locations list --project=PROJECT_ID
    
  2. Erstellen Sie ein Netzwerk für Ihre private Cloud. Der Netzwerkname muss das Format REGION-Standard haben.

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

    Die Anfrage gibt eine Vorgangs-ID zurück.

  3. Prüfen Sie den Status des Vorgangs. Wenn der Vorgang als DONE zurückgegeben wird, prüfen Sie die Antwort, um festzustellen, ob der Vorgang erfolgreich war.

    gcloud vmware operations describe OPERATION_ID \
        --location REGION
    

    Ersetzen Sie OPERATION_ID durch die ID aus dem vorherigen Schritt.

  4. Erstellen Sie als Nächstes eine private Cloud mit drei Knoten.

    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
    

    Ersetzen Sie Folgendes:

    • PC_NAME: der Name der privaten Cloud
    • ZONE: die Zone für die private Cloud
    • CLUSTER_NAME: der Name des neuen Clusters in dieser privaten Cloud
    • NETWORK_NAME: der Netzwerkname für diese Cloud

    Die Anfrage gibt eine Vorgangs-ID zurück, mit der Sie den Fortschritt des Vorgangs überprüfen können.

  5. Prüfen Sie den Status des Vorgangs. Wenn der Vorgang als DONE zurückgegeben wird, prüfen Sie die Antwort, um festzustellen, ob der Vorgang erfolgreich war.

    gcloud vmware operations describe OPERATION_ID \
        --location REGION
    

    Ersetzen Sie OPERATION_ID durch die ID aus dem vorherigen Schritt.

  6. Verbinden Sie das VMware Engine-Netzwerk mit Ihrer VPC, indem Sie den Zugriff auf private Dienste einrichten.

  7. Rufen Sie die vCenter- und NSX-T-Anmeldedaten ab.

    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. Erstellen Sie ein altes Netzwerk. Der Netzwerkname muss das Format REGION-default haben.

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

    Ersetzen Sie Folgendes:

    • TOKEN: das Autorisierungstoken für diese Anfrage.
    • PROJECT_ID: das Projekt für diese Anfrage.
    • REGION: Die Region, in der dieses Netzwerk erstellt werden soll.

    Die Anfrage gibt eine Vorgangs-ID zurück, mit der Sie den Fortschritt des Vorgangs überprüfen können.

  2. Prüfen Sie den Status des Vorgangs. Wenn der Vorgang als DONE zurückgegeben wird, prüfen Sie die Antwort, um festzustellen, ob der Vorgang erfolgreich war.

    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
    

    Ersetzen Sie OPERATION_ID durch die ID aus dem vorherigen Schritt.

  3. Erstellen Sie eine private Cloud mit drei Knoten.

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

    Ersetzen Sie Folgendes:

    • TOKEN: das Autorisierungstoken für diese Anfrage.
    • PROJECT_ID: das Projekt für diese Anfrage
    • ZONE: die Zone für die private Cloud
    • PC_NAME: der Name der privaten Cloud
    • REGION: Region des Netzwerks für diese private Cloud
    • CLUSTER_NAME: der Name des neuen Clusters in dieser privaten Cloud

    Die Anfrage gibt eine Vorgangs-ID zurück, mit der Sie den Fortschritt des Vorgangs überprüfen können.

  4. Prüfen Sie den Status des Vorgangs. Wenn der Vorgang als DONE zurückgegeben wird, prüfen Sie die Antwort, um festzustellen, ob der Vorgang erfolgreich war.

    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
    

    Ersetzen Sie OPERATION_ID durch die ID aus dem vorherigen Schritt.

  5. Verbinden Sie das VMware Engine-Netzwerk mit Ihrer VPC, indem Sie den Zugriff auf private Dienste einrichten.

  6. Rufen Sie die vCenter- und NSX-T-Anmeldedaten ab.

    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. Erstellen Sie ein altes Netzwerk.

    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. Erstellen Sie eine private Cloud mit drei Knoten.

    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)
    
    

    Die Funktion create_private_cloud gibt ein Vorgangsobjekt zurück, mit dem Sie den Fortschritt des Vorgangs prüfen können.

  3. Prüfen Sie den Status des Vorgangs. Aktuelle Informationen zu einem Vorgang abrufen

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

    Sie können die .result()-Mitgliedschaftsmethode des Vorgangsobjekts verwenden, um auf den Abschluss des Vorgangs zu warten.

  4. Verbinden Sie das VMware Engine-Netzwerk mit Ihrer VPC, indem Sie den Zugriff auf private Dienste einrichten.

  5. Rufen Sie die vCenter- und NSX-T-Anmeldedaten ab.

    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
    
    

Nächste Schritte