Crear una nube privada de VMware Engine

Una nube privada es una pila de VMware aislada que consta de hosts ESXi, vCenter, vSAN, NSX y HCX. Las nubes privadas se gestionan a través de la consolaGoogle Cloud . Cuando creas una nube privada, obtienes un único clúster de vSphere y todas las máquinas virtuales de gestión que se crean en ese clúster.

VMware Engine implementa componentes de gestión en la red que selecciones para las subredes de vSphere o vSAN. El intervalo de direcciones IP internas se divide en diferentes subredes durante la implementación.

Antes de empezar

Antes de realizar las tareas de esta página, sigue los pasos de los requisitos previos.

El espacio de direcciones de la subred de vSphere o vSAN no debe solaparse con ninguna red que se comunique con la nube privada, como las redes on-premise y las redes deGoogle Cloud nube privada virtual (VPC). Para obtener más información sobre las subredes de vSphere o vSAN, consulta VLANs and subnets on VMware Engine (VLANs y subredes en VMware Engine).

Requisitos de Google Cloud CLI y de las APIs

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

gcloud

  1. Configura tu ID de proyecto predeterminado:

    gcloud config set project PROJECT_ID
    
  2. Definir una región y una zona predeterminadas:

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

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

API

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

  1. Inicia sesión en Google Cloud:

    gcloud auth login
    
  2. Generar token de acceso y exportarlo a TOKEN:

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

    echo $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

Los ejemplos de código de Python de esta documentación usan la biblioteca VMware Engine para comunicarse con la API. Para poder usar este método, la biblioteca debe estar instalada y las credenciales de aplicación predeterminadas deben estar configuradas.

  1. Descarga e instala la biblioteca de Python:

    pip install google-cloud-vmwareengine
    
  2. Configura la información de ADC ejecutando esos comandos en tu shell:

    gcloud auth application-default login
    

    También puedes usar un archivo de clave 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 los ejemplos de código en GitHub.

Crear una nube privada estándar

Consola

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

  1. En la Google Cloud consola, ve a la página Nubes privadas.

    Ir a Private Cloud

  2. Haz clic en Seleccionar un proyecto y, a continuación, selecciona la organización, la carpeta o el proyecto en el que quieras crear la nube privada.

  3. Haz clic en Crear.

  4. Introduce un nombre para la nube privada.

  5. Selecciona Nube privada estándar como tipo de nube privada.

  6. Selecciona la ubicación en la que quieras implementar la nube privada.

  7. Escribe un nombre para el clúster principal.

  8. Selecciona el tipo de nodo de tu clúster principal.

  9. Selecciona el número 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 elimina las nubes privadas que solo contienen un nodo al cabo de 60 días.

  10. Opcional: Haz clic en el botón Personalizar núcleos si quieres reducir el número de núcleos disponibles para cada nodo del clúster de gestión. Para obtener más información, consulta Recuentos de núcleos personalizados.

  11. Introduce un intervalo CIDR para la red de gestión de VMware. Para obtener información sobre las restricciones de este intervalo, consulta la sección Antes de empezar.

  12. Haz clic en Revisar y crear.

  13. Revisa la configuración. Para cambiar algún ajuste, haz clic en Atrás.

  14. Haz clic en Crear para empezar a aprovisionar la nube privada.

En la siguiente lista se describe cada campo durante la creación de una nube privada con más detalle:

  • Nombre: identificador único permanente de la nube privada.
  • Descripción: información adicional que se muestra en la página de detalles de la nube privada.
  • Región: región geográfica en la que VMware Engine aloja tu nube privada.
  • Zona: subconjunto de una región aislado físicamente de otras zonas de la misma región. Una zona es un único dominio de fallo dentro de una región.
  • Nombre del clúster principal: nombre asignado al clúster de vSphere inicial de tu nube privada. Los dispositivos de gestión de VMware de tu nube privada se ejecutan en este clúster.
  • Tipo de nodo: configuración de hardware de los nodos de tu clúster principal.
  • Nodos: número de nodos de tu clúster principal.

  • Intervalo de direcciones IP de gestión: intervalo de direcciones IP que se usa para vCenter Server, NSX Manager, los hosts ESXi y otras partes de la infraestructura de la nube privada. Este intervalo no se usa para las VMs de carga de trabajo y no debe superponerse con ninguna parte de tu red de VPC ni con ninguna otra red a la que tengas previsto conectar tu nube privada.
  • Red de VMware Engine: recurso de red que gestiona las conexiones de nube privada según una política de red. Tú y los recursos conectados a esta red de VMware Engine podéis acceder a la nube privada desde Google Cloud.

gcloud

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

  1. Opcional: Consulta las regiones y zonas disponibles para tu proyecto ejecutando el comando gcloud vmware locations list:

    gcloud vmware locations list \
        --project=PROJECT_ID
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID de proyecto de esta solicitud
  2. Crea una red para tu nube privada ejecutando el comando gcloud vmware networks create:

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

    Haz los cambios siguientes:

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

    La solicitud devuelve un ID de operación.

  3. Para comprobar el estado de la operación, ejecuta el gcloud vmware operations describecomando: Cuando la operación devuelva el valor DONE, comprueba la respuesta para ver si se ha completado correctamente:

    gcloud vmware operations describe OPERATION_ID \
        --location REGION

    Haz los cambios siguientes:

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

    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
    

    Haz los cambios siguientes:

    • PRIVATE_CLOUD_ID: el nombre de la nube privada.
    • ZONE: la zona de la nube privada.
    • CLUSTER_ID: nombre del nuevo clúster de esta instancia de Private Cloud.
    • NODE_TYPE: el tipo de nodo. Para obtener más información, consulta Tipos de nodos.
    • NODE_COUNT: el recuento de nodos. Especifica un valor de tres o más.
    • IP_ADDRESS: la dirección IP, por ejemplo, 192.168.0.0/24, de esta solicitud.
    • NETWORK_NAME: el nombre de la red de esta nube.

    La solicitud devuelve un ID de operación que puedes usar para comprobar el progreso de la operación.

  5. Para comprobar el estado de la operación, ejecuta el comando gcloud vmware operations describe: Cuando la operación devuelva el valor DONE, comprueba la respuesta para ver si se ha completado correctamente.

    gcloud vmware operations describe OPERATION_ID \
        --location REGION
    

    Haz los cambios siguientes:

    • OPERATION_ID: el ID del paso anterior
    • REGION: la región de la nube privada
  6. Conecta la red de VMware Engine a tu VPC configurando el acceso privado a los servicios.

  7. Para obtener las credenciales de vCenter y NSX, ejecuta 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

    Haz los cambios siguientes:

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

API

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

  1. Crea una red antigua haciendo 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"}"
    

    Haz los cambios siguientes:

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

    La solicitud devuelve un ID de operación que puedes usar para comprobar el progreso de la operación.

  2. Consulta el estado de la operación haciendo una solicitud GET. Cuando la operación devuelva el valor DONE, compruebe la respuesta para ver si se ha completado 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
    

    Sustituye OPERATION_ID por el ID del paso anterior.

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

    Haz los cambios siguientes:

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

    La solicitud devuelve un ID de operación que puedes usar para comprobar el progreso de la operación.

  4. Consulta el estado de la operación haciendo una solicitud GET. Cuando la operación devuelva el valor DONE, compruebe la respuesta para ver si se ha completado 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
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID de proyecto de esta solicitud
    • REGION: la región de la nube privada
    • OPERATION_ID: el ID del paso anterior
  5. Conecta la red de VMware Engine a tu VPC configurando el acceso privado a los servicios.

  6. Recupere las credenciales de vCenter y NSX haciendo 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"
    

    Haz los cambios siguientes:

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

Python

  1. Crea una red antigua.

    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 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 devuelve un objeto de operaciones que puedes usar para comprobar el progreso de la operación.

  3. Comprueba el estado de la operación. Obtiene 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 de miembro .result() del objeto de operación para esperar a que se complete.

  4. Conecta la red de VMware Engine a tu VPC configurando el acceso privado a los servicios.

  5. Obtén las credenciales de vCenter y 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
    
    

A medida que VMware Engine crea tu nueva nube privada, implementa una serie de componentes de VMware y divide el intervalo de direcciones IP proporcionado en subredes. La creación de una nube privada puede tardar entre 30 minutos y 2 horas. Cuando se haya completado el aprovisionamiento, recibirás un correo.

Siguientes pasos