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 la consola de Google Cloud. 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 Google Cloud CLI y las APIs

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

Para crear una nube privada con la consola de Google Cloud, sigue estos pasos:

  1. Accede a la consola de Google Cloud.
  2. En el menú de navegación principal, haz clic en Nubes privadas.
  3. Haz clic en Crear.
  4. Selecciona la ubicación en la que quieres implementar la nube privada.
  5. Selecciona el tipo de nodo para el clúster principal.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. Haz clic en Revisar y crear.
  11. Revisa la configuración. Si deseas cambiar alguna configuración, haz clic en Atrás.
  12. Haz clic en Crear para comenzar a aprovisionar la nube privada.

En la siguiente lista, se describe con más detalle cada campo de la creación de nubes privadas:

  • Nombre: Es un identificador único permanente de la nube privada.
  • Descripción: Es información adicional que se puede ver en la página de detalles de la nube privada.
  • Región: Es la región geográfica en la que VMware Engine aloja tu nube privada.
  • Zona: Es un subconjunto de una región aislado físicamente de otras zonas de la misma región. Una zona es un dominio con un punto único de fallo ubicado en una región.
  • Nombre del clúster principal: Es el nombre que se le otorga al clúster de vSphere inicial en tu nube privada. Los dispositivos de administración de VMware de tu nube privada se ejecutan en este clúster.
  • Tipo de nodo: Es la configuración de hardware de los nodos del clúster principal.
  • Nodos: La cantidad de nodos del clúster principal

  • Management IP address range: Es el rango de direcciones IP que se usa para vCenter Server, NSX Manager, los hosts ESXi y otros componentes de la infraestructura de la nube privada. Este rango no se usa para las VM de cargas de trabajo y no debe superponerse con ninguna parte de tu red de VPC ni de ninguna otra red a la que planees conectar tu nube privada.
  • Red de VMware Engine: Es un recurso de red que controla las conexiones de nube privada según una política de red. Tú y los recursos conectados a esta red de VMware Engine pueden acceder a la nube privada desde Google Cloud.

gcloud

Para crear una nube privada ampliada con Google Cloud CLI, sigue estos pasos:

  1. Opcional: Si quieres obtener una lista de las regiones y zonas disponibles para tu proyecto, ejecuta el comando gcloud vmware locations list.

    gcloud vmware locations list \
        --project=PROJECT_ID
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
  2. Crea una red para la nube privada mediante la ejecución del comando gcloud vmware networks create.

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

    Reemplaza lo siguiente:

    • NETWORK_NAME: Es el nombre de la red de la nube privada.
    • REGION: Es la región de la nube privada.
    • DESCRIPTION: Es una descripción para la nube privada.

    La solicitud muestra un ID de operación.

  3. Verifica el estado de la operación mediante la ejecución del comando gcloud vmware operations describe. Cuando la operación se muestre como DONE, verifica la respuesta para comprobar si la operación se realizó correctamente:

    gcloud vmware operations describe OPERATION_ID \
        --location REGION

    Reemplaza lo siguiente:

    • OPERATION_ID: Es el ID del paso anterior.
    • REGION: Es la región de la nube privada.
  4. Crea una nube privada de tres nodos mediante la ejecución del comando gcloud vmware private-clouds create.

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

    Reemplaza lo siguiente:

    • PRIVATE_CLOUD_ID: Es el nombre de la nube privada.
    • ZONE: Es la zona de la nube privada.
    • CLUSTER_ID: Es el nombre del clúster nuevo en esta nube privada.
    • NODE_COUNT: Es el recuento de nodos. Especifica un valor de tres o más.
    • IP_ADDRESS: Es la dirección IP, por ejemplo 192.168.0.0/24, para esta solicitud.
    • 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 mediante la ejecución del comando gcloud vmware operations describe. Cuando la operación se muestre como DONE, verifica la respuesta para ver si se realizó correctamente.

    gcloud vmware operations describe OPERATION_ID \
        --location REGION
    

    Reemplaza lo siguiente:

    • OPERATION_ID: Es el ID del paso anterior.
    • REGION: Es la región de la nube privada.
  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 mediante la ejecución de los comandos gcloud vmware private-clouds vcenter credentials describe y gcloud vmware private-clouds nsx credentials describe, respectivamente.

    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

    Reemplaza lo siguiente:

    • PRIVATE_CLOUD_ID: Es el ID de la nube privada.
    • ZONE: Es la zona de la nube privada.

API

Para crear una nube privada ampliada con la API de VMware Engine, sigue estos pasos:

  1. Crea una red heredada mediante una solicitud 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"}"
    

    Reemplaza lo siguiente:

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

    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 mediante una solicitud GET. Cuando la operación se muestre como DONE, verifica la respuesta para ver si se realizó correctamente la operación:

    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. Crea una nube privada de tres nodos mediante una solicitud 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
       }
      }
     }
    }"
    

    Reemplaza lo siguiente:

    • TOKEN: Es el token de autorización para esta solicitud.
    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
    • ZONE: Es la zona de la nube privada.
    • PRIVATE_CLOUD_ID: Es el ID de la nube privada.
    • REGION: Es la región de la red de esta nube privada.
    • NETWORK_NAME: Es el nombre de la red de la nube privada.
    • CLUSTER_ID: Es el ID del clúster nuevo en esta nube privada.
    • NODE_COUNT: Es el recuento de nodos. Especifica un valor de tres o más.

    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 mediante una solicitud GET. Cuando la operación se muestre como DONE, verifica la respuesta para ver si se realizó correctamente:

    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 lo siguiente:

    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
    • REGION: Es la región de la nube privada.
    • OPERATION_ID: Es 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 mediante solicitudes 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"
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
    • ZONE: Es la zona de la nube privada.
    • PRIVATE_CLOUD_ID: Es el ID de la nube privada.

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
    
    

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

¿Qué sigue?