Crea una nube privada de VMware Engine

Una nube privada es una pila de VMware aislada que consta de hosts ESXi, vCenter, vSAN, NSX-T y HCX. Las nubes privadas se administran mediante el portal de Google Cloud VMware Engine. Cuando creas una nube privada, obtienes un único clúster de vSphere y todas las VM de administración que se crean en ese clúster.

VMware Engine implementa componentes de administración en la red que seleccionas para las subredes de vSphere/vSAN. El rango de direcciones IP de la red se divide en subredes diferentes durante la implementación.

Antes de comenzar

Antes de realizar las tareas de esta página, sigue estos pasos.

El espacio de direcciones de subred de vSphere/vSAN no debe superponerse con ninguna red que se comunique con la nube privada, como las redes locales y las redes de nube privada virtual (VPC) de Google Cloud. Para obtener más información sobre las subredes de vSphere o vSAN, consulta VLAN y subredes en VMware Engine.

Requisitos de gcloud y la API

Si deseas usar la herramienta de línea de comandos de gcloud o la API para administrar los recursos de VMware Engine, te recomendamos que configures las herramientas como se describe a continuación.

gcloud

  1. Configura tu ID del proyecto predeterminado:

    gcloud config set project PROJECT_ID
    
  2. Configura una región o zona predeterminada:

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

Para obtener más información sobre la herramienta de gcloud vmware, consulta los documentos de referencia del SDK de Cloud.

API

Los ejemplos de API en este conjunto de documentación usan la herramienta de línea de comandos de cURL para consultar la API. Se requiere un token de acceso válido como parte de la solicitud cURL. Existen muchas formas de obtener un token de acceso válido. En los siguientes pasos, se usa la herramienta de gcloud para generar un token de acceso:

  1. Accede a Google Cloud

    gcloud auth login
    
  2. Genera un token de acceso y expórtalo a TOKEN

    export TOKEN=`gcloud auth print-access-token`
    
  3. Verifica que TOKEN esté configurado correctamente.

    echo $TOKEN
    
    Output:
    TOKEN
    

Ahora, usa el token de autorización en tus solicitudes a la API. Por ejemplo:

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

Las muestras de código de Python en esta documentación usan la biblioteca de VMware Engine para comunicarse con la API. Para poder usar este enfoque, es necesario instalar la biblioteca y configurar las credenciales predeterminadas de la aplicación.

  1. Descarga y, luego, instala la biblioteca de Python

     pip install google-cloud-vmwareengine
    
  2. Para configurar la información del ADC, ejecuta esos comandos en tu shell

      gcloud auth application-default login
    

    o usar un archivo de claves de cuenta de servicio

      export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

Para obtener más información sobre la biblioteca, visita la página de referencia o consulta las muestras de código en GitHub.

Crea una nube privada

Console

  1. Accede al portal de Google Cloud VMware Engine.
  2. En la página Recursos, haz clic en Crear nube privada.
  3. Selecciona una ubicación para tu nube privada.
  4. Selecciona la cantidad de nodos de la nube privada. Para las cargas de trabajo de producción, crea tu nube privada con al menos 3 nodos. VMware Engine borra las nubes privadas que contienen solo 1 nodo después de 60 días.
  5. Opcional: Haz clic en el botón de activación Personalizar núcleos si deseas reducir la cantidad de núcleos disponibles para cada nodo en el clúster de administración. Para obtener más detalles, consulta Recuentos de núcleos personalizados.
  6. Ingresa un rango CIDR para la red de administración de VMware. Para obtener información sobre las restricciones de este rango, consulta la sección Antes de comenzar.
  7. Ingresa un rango CIDR para la red de implementación de HCX, que se usa a fin de implementar componentes de HCX. Asegúrate de que el rango de CIDR no se superponga con ninguna de tus subredes locales o en la nube. El rango de CIDR debe ser /27 o superior.
  8. Selecciona Revisar y crear.
  9. Revisa la configuración. Si deseas cambiar alguna configuración, haz clic en Atrás.
  10. Haz clic en Crear para comenzar a aprovisionar la nube privada.

A medida que VMware Engine crea tu nueva nube privada, implementa una serie de componentes de VMware y divide el rango de direcciones IP proporcionado en subredes. La creación de la nube privada puede demorar entre 30 minutos y 2 horas. Una vez que se complete el aprovisionamiento, recibirás un correo electrónico.

gcloud

  1. De manera opcional, puedes obtener una lista de las regiones y zonas disponibles para tu proyecto.

    gcloud vmware locations list --project=PROJECT_ID
    
  2. Crear una red para la nube privada El nombre de la red debe tener el formato REGION predeterminado.

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

    La solicitud muestra un ID de operación.

  3. Verifica el estado de la operación. Cuando la operación se muestre como DONE, verifica la respuesta para ver si se realizó de forma correcta.

    gcloud vmware operations describe OPERATION_ID \
        --location REGION
    

    Reemplaza OPERATION_ID por el ID del paso anterior.

  4. A continuación, crea una nube privada de tres nodos.

    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
    

    Reemplaza lo siguiente:

    • PC_NAME: Es el nombre de la nube privada.
    • ZONE: Es la zona de la nube privada.
    • CLUSTER_NAME: Es el nombre del clúster nuevo en esta nube privada.
    • NETWORK_NAME: Es el nombre de la red de esta nube.

    La solicitud muestra un ID de operaciones que puedes usar para verificar el progreso de la operación.

  5. Verifica el estado de la operación. Cuando la operación se muestre como DONE, verifica la respuesta para ver si se realizó de forma correcta.

    gcloud vmware operations describe OPERATION_ID \
        --location REGION
    

    Reemplaza OPERATION_ID por el ID del paso anterior.

  6. Conecta la red de VMware Engine a tu VPC mediante la configuración del acceso a servicios privados.

  7. Recupera las credenciales de vCenter y 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 red heredada. El nombre de la red debe tener el 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"}"
    

    Reemplaza lo siguiente:

    • TOKEN: Es el token de autorización para esta solicitud.
    • PROJECT_ID: Es el proyecto para esta solicitud.
    • REGION: Es la región en la que se creará esta red.

    La solicitud muestra un ID de operaciones que puedes usar para verificar el progreso de la operación.

  2. Verifica el estado de la operación. Cuando la operación se muestre como DONE, verifica la respuesta para ver si se realizó de forma correcta.

    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
    

    Reemplaza OPERATION_ID por el ID del paso anterior.

  3. Crear una nube privada de tres nodos

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

    Reemplaza lo siguiente:

    • TOKEN: Es el token de autorización para esta solicitud.
    • PROJECT_ID: Es el proyecto para esta solicitud.
    • ZONE: Es la zona de la nube privada.
    • PC_NAME: Es el nombre de la nube privada.
    • REGION: Es la región de la red de esta nube privada.
    • CLUSTER_NAME: Es el nombre del clúster nuevo en esta nube privada.

    La solicitud muestra un ID de operaciones que puedes usar para verificar el progreso de la operación.

  4. Verifica el estado de la operación. Cuando la operación se muestre como DONE, verifica la respuesta para ver si se realizó de forma correcta.

    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
    

    Reemplaza OPERATION_ID por el ID del paso anterior.

  5. Conecta la red de VMware Engine a tu VPC mediante la configuración del acceso a servicios privados.

  6. Recupera las credenciales de vCenter y 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 red heredada.

    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. Crear una nube privada de tres nodos

    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 función create_private_cloud muestra un objeto de operaciones que puedes usar para verificar el progreso de la operación.

  3. Verifica el estado de la operación. Recupera información actual sobre una operación.

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

    Puedes usar el método miembro .result() del objeto de operación para esperar a que se complete.

  4. Conecta la red de VMware Engine a tu VPC mediante la configuración del acceso a servicios privados.

  5. Recupera las credenciales de vCenter y 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
    
    

¿Qué sigue?