Compartir a través de


Introducción al servicio de consola de máquina virtual

El servicio de consola máquina virtual (VM) proporciona acceso administrado a una máquina virtual hospedada en una instancia de Operator Nexus. Usa el servicio Azure Private Link (PLS) para proporcionar conectividad de red en la red privada Azure. El servicio de consola de máquina virtual es una forma segura y privada de acceder a una máquina virtual sin exponerla a la Internet pública.

Diagrama del servicio de consola de máquina virtual.

Para más información sobre los recursos de red que habilitan la conectividad privada a una instancia de Operator Nexus, consulte Introducción a Azure Private Link.

Este documento proporciona instrucciones guiadas de cómo usar el servicio de consola de máquina virtual para establecer una sesión con una máquina virtual en una instancia de Operator Nexus.

Esta guía le ayuda a:

  1. Establecer una conectividad de red privada segura entre su red y la red privada del administrador de clústeres.
  2. Crear un recurso de Consola en su grupo de recursos de carga de trabajo/inquilino usando el comando az networkcloud virtualmachine console de la CLI.
  3. Iniciar una sesión de SSH para conectarse a la consola de la máquina virtual.

Nota:

Para evitar pasar el parámetro --subscription a cada comando de la CLI de Azure, ejecute el siguiente comando:

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

Antes de empezar

  1. Instale la versión más reciente de las extensiones de la CLI adecuadas.

Valor de variables

Para ayudar a establecer el entorno para el acceso a las máquinas virtuales, defina estas variables de entorno usadas por los distintos comandos a lo largo de esta guía.

Nota:

Estos valores de variable de entorno no reflejan una implementación real y los usuarios DEBEN cambiarlos para que coincidan con sus entornos.

Debe tenerse en cuenta que el primer conjunto de variables de la sección siguiente son para el Administrador de clústeres no para el clúster. El valor CM_EXTENDED_LOCATION puede consultarse con el 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"

Creación de un recurso de consola

El recurso de consola proporciona la información sobre la máquina virtual de Nexus. Proporciona el nombre de la máquina virtual, la clave SSH pública, la fecha de expiración de la sesión SSH, etc.

Esta sección proporciona una guía paso a paso que le ayudará a crear un recurso de consola usando los comandos de la CLI de Azure.

Diagrama del recurso de consola de máquina virtual.

  1. Para crear un recurso de Consola en el Administrador de clústeres, deberá recopilar cierta información, por ejemplo, el grupo de recursos (CM_HOSTED_RESOURCES_RESOURCE_GROUP) y la ubicación personalizada (CM_EXTENDED_LOCATION). Tiene que proporcionar el grupo de recursos, pero puede recuperar la ubicación personalizada si tiene derechos de acceso para ejecutar los siguientes 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 '"')
    
  2. Lo primero antes de poder establecer una sesión de SSH con una máquina virtual es crear un recurso de Consola en el Administrador de clústeres.

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

    Si omite el parámetro --expiration, la expiración será de forma predeterminada un día después de la creación del recurso de Consola. Tenga en cuenta también que el formato de fecha y hora de expiration debe seguir la norma RFC3339 (por ejemplo, 2024-10-04T14:48:00Z), ya que de lo contrario falla la creación del recurso de Consola.

    Nota:

    Para ver una sinopsis completa de este comando, invoque az networkcloud console create --help.

  3. Una vez creado correctamente el recurso de Consola, recupere el identificador de Private Link Service necesario para crear el Punto de conexión de Private Link (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. Asimismo, recupere el Id. de acceso de la máquina virtual. Debe usar este identificador único como user de la sesión de ssh.

    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 ver una sinopsis completa de este comando, invoque az networkcloud virtualmachine console show --help.

Establecimiento de la conectividad de red privada

Para establecer una sesión segura con una máquina virtual, debe establecer la conectividad de red privada entre la red y la red privada del Administrador de clústeres.

Esta red privada se basa en el punto de conexión de Azure Private Link (PLE) y en el servicio de Azure Private Link (PLS).

El Administrador de clústeres crea automáticamente un PLS para que usted pueda establecer una conexión de red privada entre su red y la red privada del Administrador de clústeres.

Esta sección proporciona una guía paso a paso que le ayudará a establecer una conectividad de red privada.

Diagrama de la red de Private Link.

  1. Cree el PLE para establecer una conexión privada y segura entre su red y la red privada del Administrador de clústeres. Necesita el id. del recurso de PLS obtenido en Creación del recurso de consola.

     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:

Solo necesitará un punto de conexión privado por Administrador de clústeres.

  1. Recupera la dirección IP privada asignada al PLE, que necesita al establecer la sesión 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}"
    

Establecimiento de una sesión de SSH con la máquina virtual

En este punto, usted tiene el virtual_machine_access_id y el sshmux_ple_ip. Esta entrada es la información necesaria para establecer una sesión con la máquina virtual.

El servicio de consola de máquina virtual es un servidor ssh que 'retransmite' la sesión a una máquina virtual de Nexus. El sshmux_ple_ip hace referencia indirecta al servicio de Consola de máquina virtual y el virtual_machine_access_id al identificador de la máquina virtual.

Importante

El servicio de consola de máquina virtual escucha el puerto 2222, por lo que debe especificar este número de puerto en el comando ssh.

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

Diagrama de la sesión de SSH de la Consola de máquina virtual.

El servicio de consola de máquina virtual se diseñó para permitir solo una sesión por máquina virtual. Cualquiera que establezca otra sesión correctamente a una máquina virtual cierra una sesión existente.

Importante

La clave SSH privada utilizada para autenticar la sesión (de manera predeterminada: $HOME/.ssh/id_rsa) DEBE coincidir con la clave SSH pública pasada como parámetro al crear el recurso de Consola.

Actualización del recurso de consola

Puede deshabilitar la sesión con una máquina virtual actualizando la fecha/hora de expiración y la clave pública SSH usada al crear la sesión con una máquina virtual.

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

Si quiere deshabilitar el acceso a una máquina virtual, deberá actualizar el recurso de Consola con el parámetro enabled False. Esta actualización cierra cualquier sesión existente y restringe cualquier sesión posterior.

Nota:

Antes de crear una sesión en una máquina virtual, el recurso de la consola correspondiente debe establecerse en --enabled True.

Cuando expira el tiempo de --expiration de Consola, se cierra cualquier sesión correspondiente al recurso de Consola. Tendrá que actualizar la hora de expiración con un valor futuro para poder establecer una nueva sesión.

Al actualizar la clave SSH pública de la Consola, el servicio de consola virtual cierra todas las sesiones activas. Presente una nueva clave SSH privada para crear una nueva sesión.

Limpieza (opcional)

Para limpiar la configuración de su entorno de Consola de máquina virtual, debe eliminar el recurso de Consola y su punto de conexión de Private Link.

  1. Eliminación del recurso de consola

     az networkcloud virtualmachine console delete \
         --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
         --resource-group "${VM_RESOURCE_GROUP}"
    
  2. Eliminación del punto de conexión de Private Link

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