Criar uma nuvem privada do VMware Engine

Uma nuvem privada é uma pilha VMware isolada que consiste em anfitriões ESXi, vCenter, vSAN, NSX e HCX. Faz a gestão das nuvens privadas através da Google Cloud consola. Quando cria uma nuvem privada, recebe um único cluster do vSphere e todas as VMs de gestão criadas nesse cluster.

O VMware Engine implementa componentes de gestão na rede que seleciona para sub-redes vSphere/vSAN. O intervalo de endereços IP internos é dividido em diferentes sub-redes durante a implementação.

Antes de começar

Antes de realizar as tarefas nesta página, siga os seguintes passos prévios.

O espaço de endereços da sub-rede do vSphere/vSAN não pode sobrepor-se a nenhuma rede que comunique com a nuvem privada, como redes no local e redes daGoogle Cloud nuvem virtual privada (VPC). Para mais informações sobre as sub-redes do vSphere ou vSAN, consulte o artigo VLANs e sub-redes no VMware Engine.

Requisitos da API e da CLI Google Cloud

Para usar a ferramenta de linha de comandos gcloud ou a API para gerir os recursos do VMware Engine, recomendamos que configure as ferramentas conforme descrito abaixo.

gcloud

  1. Defina o ID do projeto predefinido:

     gcloud config set project PROJECT_ID 
  2. Defina uma região e uma zona predefinidas:

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

Para mais informações sobre a ferramenta gcloud vmware, consulte os documentos de referência do Cloud SDK.

API

Os exemplos de API neste conjunto de documentação usam a ferramenta de linha de comandos cURL para consultar a API. É necessária uma chave de acesso válida como parte do pedido.cURL Existem várias formas de obter um token de acesso válido. Os passos seguintes usam a ferramenta gcloud para gerar um token de acesso:

  1. Inicie sessão em Google Cloud:

     gcloud auth login 
  2. Gere o token de acesso e exporte-o para TOKEN:

     export TOKEN=`gcloud auth print-access-token` 
  3. Verifique se o TOKEN está definido corretamente:

     echo $TOKEN 

Agora, use o token de autorização nos seus pedidos à API. Por exemplo:

 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

Os exemplos de código Python nesta documentação usam a biblioteca VMware Engine para comunicar com a API. Para poder usar esta abordagem, a biblioteca tem de estar instalada e as credenciais predefinidas da aplicação devem estar configuradas.

  1. Transfira e instale a biblioteca Python:

     pip install google-cloud-vmwareengine 
  2. Configure as informações do ADC executando esses comandos na shell:

     gcloud auth application-default login 

    Em alternativa, use um ficheiro de chave da conta de serviço:

     export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH" 

Para mais informações sobre a biblioteca, visite a página de referência ou veja exemplos de código no GitHub.

Crie uma nuvem privada padrão

Consola

Para criar uma nuvem privada padrão através da Google Cloud consola, siga estes passos:

  1. Na Google Cloud consola, aceda à página Nuvens privadas.

    Aceda a Nuvens privadas

  2. Clique em Selecionar um projeto e, de seguida, selecione a organização, a pasta ou o projeto onde quer criar a nuvem privada.

  3. Clique em Criar.

  4. Introduza um nome para a nuvem privada.

  5. Selecione Nuvem privada padrão para o tipo de nuvem privada.

  6. Selecione a localização onde quer implementar a nuvem privada.

  7. Introduza um nome para o cluster principal.

  8. Selecione o tipo de nó para o cluster principal.

  9. Selecione o número de nós para a nuvem privada. Para cargas de trabalho de produção, crie a sua nuvem privada com, pelo menos, 3 nós. O VMware Engine elimina as nuvens privadas que contêm apenas 1 nó após 60 dias.

  10. Opcional: clique no botão Personalizar núcleos se quiser reduzir o número de núcleos disponíveis para cada nó no cluster de gestão. Para ver detalhes, consulte o artigo Contagens de núcleos personalizadas.

  11. Introduza um intervalo CIDR para a rede de gestão do VMware. Para informações sobre as restrições neste intervalo, consulte a secção Antes de começar.

  12. Clique em Rever e criar.

  13. Reveja as definições. Para alterar quaisquer definições, clique em Anterior.

  14. Clique em Criar para começar o aprovisionamento da nuvem privada.

A lista seguinte descreve cada campo durante a criação da nuvem privada mais detalhadamente:

  • Nome: identificador exclusivo permanente da nuvem privada.
  • Descrição: informações adicionais visíveis na página de detalhes da nuvem privada.
  • Região: região geográfica onde o VMware Engine aloja a sua nuvem privada.
  • Zona: subconjunto de uma região fisicamente isolada de outras zonas na mesma região. Uma zona é um único domínio de falhas de uma região.
  • Nome do cluster principal: nome atribuído ao cluster do vSphere inicial na sua nuvem privada. Os dispositivos de gestão do VMware da sua nuvem privada são executados neste cluster.
  • Tipo de nó: configuração de hardware dos nós no cluster principal.
  • Nós: número de nós no cluster principal.

  • Intervalo de endereços IP de gestão: intervalo de endereços IP usado para o vCenter Server, o NSX Manager, os anfitriões ESXi e outras partes da infraestrutura da nuvem privada. Este intervalo não é usado para VMs de carga de trabalho e não pode sobrepor-se a nenhuma parte da sua rede VPC nem a qualquer outra rede à qual planeia ligar a sua nuvem privada.
  • Rede do VMware Engine: recurso de rede que processa as ligações à nuvem privada de acordo com uma política de rede. Os recursos ligados a esta rede do VMware Engine e o utilizador podem aceder à nuvem privada a partir de Google Cloud.

gcloud

Para criar uma nuvem privada expandida através da CLI do Google Cloud, siga estes passos:

  1. Opcional: liste as regiões e as zonas disponíveis para o seu projeto executando o comando gcloud vmware locations list:

     gcloud vmware locations list \     --project=PROJECT_ID 

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto para este pedido
  2. Crie uma rede para a sua nuvem privada executando o comando gcloud vmware networks create:

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

    Substitua o seguinte:

    • NETWORK_NAME: o nome da rede da nuvem privada
    • REGION: a região da nuvem privada
    • DESCRIPTION: uma descrição para a nuvem privada

    O pedido devolve um ID da operação.

  3. Verifique o estado da operação executando o comando gcloud vmware operations describe: Quando a operação for devolvida como DONE, verifique a resposta para ver se a operação foi bem-sucedida:

     gcloud vmware operations describe OPERATION_ID \     --location REGION

    Substitua o seguinte:

    • OPERATION_ID: o ID do passo anterior
    • REGION: a região da nuvem privada
  4. Crie uma nuvem privada de três nós executando o 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 

    Substitua o seguinte:

    • PRIVATE_CLOUD_ID: o nome da nuvem privada.
    • ZONE: a zona da nuvem privada.
    • CLUSTER_ID: o nome do novo cluster nesta nuvem privada.
    • NODE_TYPE: o tipo de nó. Para mais informações, consulte o artigo Tipos de nós.
    • NODE_COUNT: o número de nós. Especifique um valor de três ou mais.
    • IP_ADDRESS: o endereço IP, por exemplo, 192.168.0.0/24, para este pedido.
    • NETWORK_NAME: o nome da rede para esta nuvem.

    O pedido devolve um ID de operações que pode usar para verificar o progresso da operação.

  5. Verifique o estado da operação executando o comando gcloud vmware operations describe: Quando a operação for devolvida como DONE, verifique a resposta para ver se a operação foi bem-sucedida.

     gcloud vmware operations describe OPERATION_ID \     --location REGION 

    Substitua o seguinte:

    • OPERATION_ID: o ID do passo anterior
    • REGION: a região da nuvem privada
  6. Ligue a rede do VMware Engine à sua VPC configurando o acesso a serviços privados.

  7. Execute os comandos gcloud vmware private-clouds vcenter credentials describe e gcloud vmware private-clouds nsx credentials describe, respetivamente, para obter as credenciais do vCenter e do NSX.

     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

    Substitua o seguinte:

    • PRIVATE_CLOUD_ID: o ID da nuvem privada
    • ZONE: a zona da nuvem privada

API

Para criar uma nuvem privada expandida através da API VMware Engine, siga estes passos:

  1. Crie uma rede antiga fazendo um pedido 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"}" 

    Substitua o seguinte:

    • TOKEN: o token de autorização para este pedido
    • PROJECT_ID: o projeto para este pedido
    • REGION: a região na qual criar esta rede
    • NETWORK_NAME: o nome da rede da nuvem privada

    O pedido devolve um ID de operações que pode usar para verificar o progresso da operação.

  2. Verifique o estado da operação fazendo um pedido GET. Quando a operação for devolvida como DONE, verifique a resposta para ver se a operação foi bem-sucedida:

     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 

    Substitua OPERATION_ID pelo ID do passo anterior.

  3. Crie uma nuvem privada de três nós fazendo um pedido 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    }   }  } }" 

    Substitua o seguinte:

    • TOKEN: o token de autorização para este pedido.
    • PROJECT_ID: o ID do projeto para este pedido
    • ZONE: a zona da nuvem privada
    • PRIVATE_CLOUD_ID: o ID da nuvem privada
    • REGION: a região da rede para esta nuvem privada
    • NETWORK_NAME: o nome da rede da nuvem privada
    • CLUSTER_ID: o ID do novo cluster nesta nuvem privada
    • NODE_COUNT: o número de nós. Especifique um valor de três ou mais.

    O pedido devolve um ID de operações que pode usar para verificar o progresso da operação.

  4. Verifique o estado da operação fazendo um pedido GET. Quando a operação for devolvida como DONE, verifique a resposta para ver se a operação foi bem-sucedida:

     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 

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto para este pedido
    • REGION: a região da nuvem privada
    • OPERATION_ID: o ID do passo anterior
  5. Ligue a rede do VMware Engine à sua VPC configurando o acesso a serviços privados.

  6. Obtenha as credenciais do vCenter e do NSX fazendo pedidos 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" 

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto para este pedido
    • ZONE: a zona da nuvem privada
    • PRIVATE_CLOUD_ID: o ID da nuvem privada

Python

  1. Crie uma rede antiga.

    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. Crie uma nuvem privada de três nós.

    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)  

    A função create_private_cloud devolve um objeto de operações que pode usar para verificar o progresso da operação.

  3. Verifique o estado da operação. Obter informações atuais sobre uma operação.

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

    Pode usar o método de membro .result() do objeto de operação para aguardar a conclusão.

  4. Ligue a rede do VMware Engine à sua VPC configurando o acesso a serviços privados.

  5. Obtenha as credenciais do vCenter e do 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  

À medida que o VMware Engine cria a sua nova nuvem privada, implementa vários componentes do VMware e divide o intervalo de endereços IP fornecido em sub-redes. A criação de uma nuvem privada pode demorar entre 30 minutos e 2 horas. Após o aprovisionamento estar concluído, recebe um email.

O que se segue?