Introdução ao serviço do console da Máquina Virtual
O serviço de console da VM (Máquina Virtual) fornece acesso gerenciado a uma VM hospedada em uma Instância do Nexus do Operador. Ele usa o PLS (Serviço de Link Privado) do Azure para fornecer conectividade de rede na rede privada do Azure. O serviço de console da VM é uma maneira segura e privada de acessar uma VM sem expô-la à Internet pública.
Para obter mais informações sobre os recursos de rede que habilitam a conectividade privada a 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 de console da VM para estabelecer uma sessão com uma Máquina Virtual em uma Instância do Nexus do Operador.
Este guia ajuda você a:
- Estabelecer uma conectividade de rede privada segura entre sua rede e a rede privada do Gerenciador de Cluster.
- Criar um recurso de console em seu grupo de recursos de carga de trabalho/locatário usando o comando
az networkcloud virtualmachine console
da CLI. - Iniciar uma sessão SSH para se conectar ao console da Máquina Virtual.
Observação
Para evitar passar o parâmetro --subscription
para cada comando da CLI do Azure, execute o seguinte comando:
az account set --subscription "your-subscription-ID"
Antes de começar
- Instale a última versão das extensões apropriadas da CLI.
Definir variáveis
Para ajudar a configurar o ambiente para acesso às Máquinas Virtuais, defina essas variáveis de ambiente usadas pelos vários comandos ao longo deste guia.
Observação
Esses valores de variável de ambiente não refletem uma implantação real e os usuários DEVEM alterá-los para que eles correspondam aos respectivos ambientes.
Deve-se observar que o primeiro conjunto de variáveis na seção abaixo é para o Gerenciador de Cluster e não para o Cluster.
O valor CM_EXTENDED_LOCATION pode ser encontrado com o comando az networkcloud virtualmachine show --name <virtual machine name> --resource-group <virtual machine's resource group> --query "consoleExtendedLocation" | jq -r '.consoleExtendedLocation.name'
.
# CM_HOSTED_RESOURCES_RESOURCE_GROUP: Cluster Manager resource group name
export CM_HOSTED_RESOURCES_RESOURCE_GROUP="my-contoso-console-rg"
# VIRTUAL_MACHINE_NAME: Virtual Machine name you want to access through VM Console service
export VIRTUAL_MACHINE_NAME="my-undercloud-vm"
# 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=$(az networkcloud virtualmachine show --name ${VIRTUAL_MACHINE_NAME} --resource-group ${VIRTUAL_MACHINE_RG} --query "consoleExtendedLocation" | jq -r '.consoleExtendedLocation.name')
# 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"
Criar o recurso de console
O recurso console fornece as informações sobre a VM Nexus. Ele fornece o nome da VM, a chave SSH pública, a data de validade da sessão SSH e assim por diante.
Esta seção fornece um guia passo a passo para ajudá-lo a criar um recurso de console usando comandos da CLI do Azure.
Para criar um recurso de console no Gerenciador de Cluster, você precisará coletar algumas informações, por exemplo, o grupo de recursos (CM_HOSTED_RESOURCES_RESOURCE_GROUP) e o local personalizado (CM_EXTENDED_LOCATION). Você precisa fornecer o grupo de recursos, mas poderá recuperar o local personalizado se tiver direitos de acesso para executar os seguintes comandos:
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 '"')
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 parâmetro
--expiration
, a expiração será padronizada para um dia após a criação do recurso de console. Observe também que o formato de data e horaexpiration
deve seguir o RFC3339 (por exemplo, 2024-10-04T14:48:00Z); caso contrário, a criação do recurso de console falhará.Observação
Para obter uma sinopse completa deste comando, invoque
az networkcloud console create --help
.Após a criação bem-sucedida do recurso de console, recupere o identificador do Serviço de Link Privado necessário para criar o PLE (Ponto de Extremidade de Link Privado)
export pls_resourceid=$(az networkcloud virtualmachine console show \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \ --query "privateLinkServiceId")
Além disso, recupere a ID de acesso à VM. Você deve usar esse identificador exclusivo como
user
da sessãossh
.virtual_machine_access_id=$(az networkcloud virtualmachine console show \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \ --query "virtualMachineAccessId")
Observação
Para obter uma sinopse completa deste comando, invoque az networkcloud virtualmachine console show --help
.
Estabelecer conectividade de rede privada
Para estabelecer uma sessão segura com uma Máquina Virtual, você precisa configurar a conectividade de rede privada entre sua rede e a rede privada do Gerenciador de Cluster.
Essa rede privada depende do PLE (Ponto de Extremidade de Link Privado) do Azure e do PLS (Serviço de Link Privado do Azure).
O Gerenciador de Cluster cria automaticamente um PLS para que você possa estabelecer uma conexão de rede privada entre sua rede e a rede privada do Gerenciador de Cluster.
Esta seção fornece um guia passo a passo para ajudá-lo a estabelecer uma conectividade de rede privada.
Crie o PLE para estabelecer uma conexão privada e segura entre sua rede e a rede privada do Gerenciador de Cluster. Você precisa da ID do recurso PLS obtida na Criação do 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
Observação
Você precisará de apenas um ponto de extremidade privado por Gerenciador de Cluster.
Recupere o endereço IP privado alocado para o PLE, que você precisará ao estabelecer a sessão
ssh
.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}"
Estabelecer uma sessão SSH com a Máquina Virtual
Neste ponto, você tem o virtual_machine_access_id
e o sshmux_ple_ip
. Essa entrada são as informações necessárias para estabelecer uma sessão com a VM.
O serviço de console da VM é um servidor ssh
que "retransmite" a sessão para uma VM Nexus. O indiretamente sshmux_ple_ip
faz referência ao serviço de console da VM e ao identificador virtual_machine_access_id
da VM.
Importante
O serviço console da VM escuta a porta 2222
, portanto, você deve especificar esse número de porta no comando ssh
.
SSH [-i path-to-private-SSH-key] -p 2222 $virtual_machine_access_id@$sshmux_ple_ip
O serviço de console da VM foi projetado para permitir apenas uma sessão por Máquina Virtual. Qualquer pessoa que estabeleça outra sessão bem-sucedida em uma VM fechará 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 de console.
Atualizar o recurso de console
Você pode desativar a sessão em uma VM atualizando a data/hora de validade e a chave SSH pública usada ao criar a sessão com a 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 você quiser desabilitar o acesso a uma VM, precisará atualizar o recurso de console com o parâmetro enabled False
. Essa atualização fecha qualquer sessão existente e restringe as sessões posteriores.
Observação
Antes de criar uma sessão para uma VM, o recurso de console correspondente deve ser definido como --enabled True
.
Quando o prazo --expiration
de um console expira, ele fecha qualquer sessão correspondente ao recurso de console. Você precisará atualizar o prazo 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 de console da VM fecha todas as sessões ativas. Você apresenta uma nova chave SSH privada para criar uma nova sessão.
Limpeza (opcional)
Para limpar a configuração do ambiente do console da VM, você precisa excluir o recurso de console e o ponto de extremidade de link privado.
Excluir o recurso de console
az networkcloud virtualmachine console delete \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${VM_RESOURCE_GROUP}"
Excluir o ponto de extremidade de link privado
az network private-endpoint delete \ --name ${PRIVATE_ENDPOINT_NAME}-ple \ --resource-group ${PRIVATE_ENDPOINT_NAME}-rg