Share via


Introdução ao serviço de console da Máquina Virtual

O serviço de console da Máquina Virtual (VM) fornece acesso gerenciado a uma VM hospedada em uma Instância do Nexus do Operador. Ele depende do PLS (Serviço de Link Privado) do Azure para estabelecer uma conexão de rede privada entre a rede do usuário e a rede privada do Gerenciador de Cluster do Nexus do Operador do Azure.

Diagram of VM Console service.

Para obter mais informações sobre recursos de rede que habilitam a conectividade privada para uma instância do Nexus do operador, consulte Introdução ao link privado do Azure.

Este documento fornece instruções guiadas de como usar o serviço VM Console para estabelecer uma sessão com uma máquina virtual em uma instância do Operator Nexus.

Este guia ajuda-o a:

  1. Estabeleça uma conectividade de rede privada segura entre a sua rede e a rede privada do Gestor de Clusters.
  2. Crie um recurso de console em seu grupo de recursos de carga de trabalho/locatário usando o az networkcloud virtualmachine console comando CLI.
  3. Inicie uma sessão SSH para se conectar ao Console da Máquina Virtual.

Nota

Para evitar passar o parâmetro para cada comando da CLI do Azure, execute o --subscription seguinte comando:

  az account set --subscription "your-subscription-ID"

Antes de começar

  1. Instale a versão mais recente das extensões CLI apropriadas.

Definição de variáveis

Para ajudar a configurar o ambiente para acesso a Máquinas Virtuais, defina essas variáveis de ambiente usadas pelos vários comandos ao longo deste guia.

Nota

Esses valores de variáveis de ambiente não refletem uma implantação real e os usuários DEVEM alterá-los para corresponder aos seus ambientes.

Deve-se notar que o primeiro conjunto de variáveis na seção abaixo é para o Gerenciador de Cluster e não para o Cluster .

    # CM_HOSTED_RESOURCES_RESOURCE_GROUP: Cluster Manager resource group name
    export CM_HOSTED_RESOURCES_RESOURCE_GROUP="my-contoso-console-rg"
    # CM_EXTENDED_LOCATION: Cluster Manager Extended Location, can be retrieved but you will need access rights to execute certain Azure CLI commands
    export CM_EXTENDED_LOCATION="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ExtendedLocation/customLocations/clusterManagerExtendedLocationName"

    # VIRTUAL_MACHINE_NAME: Virtual Machine name you want to access through VM Console service
    export VIRTUAL_MACHINE_NAME="my-undercloud-vm"
    # CONSOLE_PUBLIC_KEY: Public Key matching Private Key to be used when establish `ssh` session, e.g., `ssh -i $HOME/.ssh/id-rsa`
    export CONSOLE_PUBLIC_KEY="xxxx-xxxx-xxxxxx-xxxx"
    # CONSOLE_EXPIRATION_TIME: Expiration date and time (RFC3339 format) for any `ssh` session with a virtual machine. 
    export CONSOLE_EXPIRATION_TIME="2023-06-01T01:27:03.008Z"

    # PRIVATE_ENDPOINT_RG: Resource group name that Private Endpoint will be created on
    export PRIVATE_ENDPOINT_RG="my-work-env-rg"
    # PRIVATE_ENDPOINT_NAME: Private Endpoint's name you choose
    export PRIVATE_ENDPOINT_NAME="my-work-env-ple"
    # PRIVATE_ENDPOINT_CONNECTION_NAME: PLE/PLS connection name you choose
    export PRIVATE_ENDPOINT_CONNECTION_NAME="my-contoso-ple-pls-connection"
    # PRIVATE_ENDPOINT_REGION: Location where Private Endpoint will be created
    export PRIVATE_ENDPOINT_REGION="eastus"
    # PRIVATE_ENDPOINT_VNET: Virtual Network to be used by the Private Endpoint
    export PRIVATE_ENDPOINT_VNET="my-work-env-ple-vnet"
    # PRIVATE_ENDPOINT_SUBNET: Subnetwork to be used by the Private Endpoint
    export PRIVATE_ENDPOINT_SUBNET="my-work-env-ple-subnet"

Criando recurso de console

O recurso Console fornece as informações sobre a VM, como nome da VM, chave SSH pública, data de expiração da sessão SSH, etc.

Esta seção fornece um guia passo a passo para ajudá-lo a criar um recurso de Console usando comandos da CLI do Azure.

Diagram of VM Console Resource.

  1. Para criar um recurso de Console no Gerenciador de Clusters, você precisará coletar algumas informações, por exemplo, grupo de recursos (CM_HOSTED_RESOURCES_RESOURCE_GROUP) e local personalizado (CM_EXTENDED_LOCATION). Você precisa fornecer o grupo de recursos, mas pode recuperar o local personalizado se tiver direitos de acesso para excutar os comandos listados abaixo.

    export cluster_manager_resource_id=$(az resource list -g ${CM_HOSTED_RESOURCES_RESOURCE_GROUP} --query "[?type=='Microsoft.NetworkCloud/clusterManagers'].id" --output tsv)
    export CM_EXTENDED_LOCATION=$(az resource show --ids $cluster_manager_resource_id --query "properties.managerExtendedLocation.name" | tr -d '"')
    
  2. A primeira coisa antes de estabelecer uma sessão SSH com uma VM é criar um recurso de Console no Gerenciador de Cluster.

    az networkcloud virtualmachine console create \
        --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
        --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \
        --extended-location name="${CM_EXTENDED_LOCATION}" type="CustomLocation" \
        --enabled True \
        --key-data "${CONSOLE_PUBLIC_KEY}" \
        [--expiration "${CONSOLE_EXPIRATION_TIME}"]
    

    Se você omitir o --expiration parâmetro, a expiração será padronizada para um dia após a criação do recurso Console. Observe também que o expiration formato data e hora deve estar em conformidade com RFC3339 caso contrário, a criação do recurso Console falhará.

    Nota

    Para obter uma sinopse completa para este comando, invoque az networkcloud console create --help.

  3. Após a criação bem-sucedida do recurso Console, recupere o identificador do Serviço de Link Privado necessário para criar o Ponto de Extremidade de Link Privado (PLE)

    export pls_resourceid=$(az networkcloud virtualmachine console show \
        --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
        --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \
        --query "privateLinkServiceId")
    
  4. Além disso, recupere a ID de acesso da VM. Você deve usar esse identificador exclusivo a ssh partir user da sessão.

    virtual_machine_access_id=$(az networkcloud virtualmachine console show \
        --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
        --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \
        --query "virtualMachineAccessId")
    

Nota

Para obter uma sinopse completa para este comando, invoque az networkcloud virtualmachine console show --help.

Estabelecendo conectividade de rede privada

Para estabelecer uma sessão segura com uma Máquina Virtual, você precisa estabelecer conectividade de rede privada entre sua rede e a rede privada do Gerenciador de Cluster.

Essa rede privada depende do Ponto de Extremidade de Link Privado do Azure (PLE) e do Serviço de Link Privado do Azure (PLS).

O Gestor de Cluster cria automaticamente um PLS para que possa estabelecer uma ligação de rede privada entre a sua rede e a rede privada do Gestor de Clusters.

Esta seção fornece um guia passo a passo para ajudá-lo a estabelecer uma conectividade de rede privada.

Diagram of Private Link networking.

  1. Crie o PLE para estabelecer uma ligação privada e segura entre a sua rede e a rede privada do Gestor de Clusters. Você precisa do ID do recurso PLS obtido em Criando recurso de console.

     az network private-endpoint create \
         --connection-name "${PRIVATE_ENDPOINT_CONNECTION_NAME}" \
         --name "${PRIVATE_ENDPOINT_NAME}" \
         --private-connection-resource-id "${pls_resourceid}" \
         --resource-group "${PRIVATE_ENDPOINT_RG}" \
         --vnet-name "${PRIVATE_ENDPOINT_VNET}" \
         --subnet "${PRIVATE_ENDPOINT_SUBNET}" \
         --manual-request false
    

Nota

Você precisará de apenas um Ponto de Extremidade Privado por Gerenciador de Cluster.

  1. Recupere o endereço IP privado alocado para o PLE, que você precisa ao estabelecer a ssh sessão.

     export ple_interface_id=$(az network private-endpoint list --resource-group ${PRIVATE_ENDPOINT_RG} --query "[0].networkInterfaces[0].id" -o tsv)
    
     export sshmux_ple_ip=$(az network nic show --ids $ple_interface_id --query 'ipConfigurations[0].privateIPAddress' -o tsv)
    
     echo "sshmux_ple_ip: ${sshmux_ple_ip}"
    

Estabelecendo uma sessão SSH com a máquina virtual

Neste ponto, você tem o e o virtual_machine_access_idsshmux_ple_ip. Essa entrada é a informação necessária para estabelecer uma sessão com a VM.

O serviço Console da VM é um ssh servidor que "retransmite" a sessão para a VM designada. O sshmux_ple_ip indiretamente faz referência ao serviço de Console da VM e ao virtual_machine_access_id identificador da VM.

Importante

O serviço Console da VM escuta a porta, portanto, você deve especificar esse número de ssh porta 2222no comando.

   SSH [-i path-to-private-SSH-key] -p 2222 $virtual_machine_access_id@$sshmux_ple_ip

Diagram of VM Console SSH Session.

O serviço VM Console foi projetado para permitir apenas uma sessão por máquina virtual. Qualquer pessoa que estabeleça outra sessão bem-sucedida para uma VM fecha uma sessão existente.

Importante

A chave SSH privada usada para autenticar a sessão (padrão: $HOME/.ssh/id_rsa) DEVE corresponder à chave SSH pública passada como parâmetro ao criar o recurso Console.

Atualizando o recurso do console

Você pode desabilitar a sessão para uma determinada VM atualizando a data/hora de expiração e/ou atualizando a chave SSH pública usada ao criar a sessão com uma VM.

az networkcloud virtualmachine console update \
    --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
    --resource-group "${VM_RESOURCE_GROUP}" \
    [--enabled True | False] \
    [--key-data "${CONSOLE_PUBLIC_KEY}"] \
    [--expiration "${CONSOLE_EXPIRATION_TIME}"]

Se quiser desabilitar o acesso a uma VM, será necessário atualizar o recurso Console com o parâmetro enabled False. Esta atualização encerra qualquer sessão existente e restringe quaisquer sessões subsequentes.

Nota

Antes de criar uma sessão para uma VM, o recurso Console correspondente deve ser definido como --enabled True.

Quando um tempo de console expira, ele fecha qualquer sessão correspondente ao recurso de console --expiration . Você precisará atualizar o tempo de expiração com um valor futuro para que possa estabelecer uma nova sessão.

Quando você atualiza a chave SSH pública do Console, o serviço Console VM fecha qualquer sessão ativa referenciada pelo recurso Console. Tem de fornecer uma chave SSH privada correspondente à nova chave pública quando estabelece uma nova sessão.

Limpeza (opcional)

Para limpar a configuração do ambiente do Console VM, você precisa excluir o recurso Console e o Ponto de Extremidade de Link Privado.

  1. Excluindo o recurso do Console

     az networkcloud virtualmachine console delete \
         --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
         --resource-group "${VM_RESOURCE_GROUP}"
    
  2. Excluindo o ponto de extremidade de link privado

    az network private-endpoint delete \
    --name ${PRIVATE_ENDPOINT_NAME}-ple \
    --resource-group ${PRIVATE_ENDPOINT_NAME}-rg