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 a través de 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 los siguientes pasos previos.

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 la API y Google Cloud CLI

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

gcloud

  1. Establece tu ID del proyecto predeterminado:

    gcloud config set project PROJECT_ID
    
  2. Configura 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 Cloud.

API

Los ejemplos de la API de este conjunto de documentación usan la herramienta de línea de comandos cURL para consultar la API. Se requiere un token de acceso válido como parte de la solicitud cURL. Existen muchas maneras de obtener un token de acceso válido. En los siguientes pasos, se usa la herramienta 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
    

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 de esta documentación usan la biblioteca de VMware Engine para comunicarse con la API. Para poder usar este enfoque, se debe instalar la biblioteca y se deben configurar las Credenciales predeterminadas de la aplicación.

  1. Descarga e instala la biblioteca de Python:

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

    gcloud auth application-default login
    

    También puedes usar un archivo de claves de la 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 estándar

Console

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

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

    Ir a Nubes privadas

  2. Haz clic en Crear.

  3. Ingresa un nombre para la nube privada.

  4. Selecciona Nube privada estándar para el tipo de nube privada.

  5. Selecciona la ubicación en la que deseas que se implemente la nube privada.

  6. Ingresa un nombre para el clúster principal.

  7. Selecciona el tipo de nodo para tu clúster principal.

  8. 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.

  9. 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.

  10. 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.

  11. Haz clic en Revisar y crear.

  12. Revisa la configuración. Si deseas cambiar alguna configuración, haz clic en Atrás.

  13. 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 aplica al clúster inicial de vSphere 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 de tu clúster principal.
  • Nodos: Es la cantidad de nodos de tu 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 utiliza en las VMs de cargas de trabajo y no debe superponerse con ningún componente de tu red de VPC ni de otra red a la que planees conectar tu nube privada.
  • Red de VMware Engine: Es un recurso de red que controla las conexiones a la 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 extendida con Google Cloud CLI, sigue estos pasos:

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

    gcloud vmware locations list \
        --project=PROJECT_ID
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
  2. Ejecuta el comando gcloud vmware networks create para crear una red para tu nube privada:

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

    Reemplaza lo siguiente:

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

    La solicitud muestra un ID de operación.

  3. Para verificar el estado de la operación, ejecuta el comando gcloud vmware operations describe: Cuando la operación se muestre como DONE, verifica la respuesta para ver si la operación se realizó de forma correcta:

    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. Ejecuta el comando gcloud vmware private-clouds create para crear una nube privada de tres nodos:

    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
    

    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_TYPE: Es el tipo de nodo. Para obtener más información, consulta Tipos de nodos.
    • 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 operación que puedes usar para verificar el progreso de la operación.

  5. Para verificar el estado de la operación, ejecuta el comando gcloud vmware operations describe: Cuando la operación se muestre como DONE, verifica la respuesta para ver si la operación fue exitosa.

    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. Configura el acceso privado a los servicios para conectar la red de VMware Engine a tu VPC.

  7. Ejecuta los comandos gcloud vmware private-clouds vcenter credentials describe y gcloud vmware private-clouds nsx credentials describe, respectivamente, para recuperar las credenciales de vCenter y NSX-T.

    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: La zona de la nube privada

API

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

  1. Para crear una red heredada, realiza 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 para esta solicitud.
    • PROJECT_ID: Es el proyecto de esta solicitud.
    • REGION: Es la región en la que se creará esta red.
    • NETWORK_NAME: El nombre de la red de la nube privada

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

  2. Para verificar el estado de la operación, realiza una solicitud GET. Cuando la operación se devuelve como DONE, verifica la respuesta para ver si la operación 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 OPERATION_ID por el ID del paso anterior.

  3. Para crear una nube privada de tres nodos, realiza 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: La zona de la nube privada
    • PRIVATE_CLOUD_ID: El ID de la nube privada
    • REGION: Es 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 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 operación que puedes usar para verificar el progreso de la operación.

  4. Para verificar el estado de la operación, realiza 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. Configura el acceso privado a los servicios para conectar la red de VMware Engine a tu VPC.

  6. Realiza solicitudes GET para recuperar 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/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: 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. 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 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. Configura el acceso privado a los servicios para conectar la red de VMware Engine a tu VPC.

  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 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.

¿Qué sigue?