Share via


Introduzione al servizio console macchina virtuale

Il servizio console macchina virtuale fornisce l'accesso gestito a una macchina virtuale ospitata in un'istanza Di Operator Nexus. Si basa sul servizio collegamento privato di Azure (PLS) per stabilire una connessione di rete privata tra la rete dell'utente e la rete privata di Azure Operator Nexus Cluster Manager.

Diagram of VM Console service.

Per altre informazioni sulle risorse di rete che consentono la connettività privata a un'istanza di Operator Nexus, vedere Introduzione alle collegamento privato di Azure.

Questo documento fornisce istruzioni guidate su come usare il servizio console di macchine virtuali per stabilire una sessione con una macchina virtuale in un'istanza Nexus operatore.

Questa guida consente di:

  1. Stabilire una connettività di rete privata sicura tra la rete e la rete privata di Cluster Manager.
  2. Creare una risorsa console nel gruppo di risorse del carico di lavoro/tenant usando il comando dell'interfaccia della az networkcloud virtualmachine console riga di comando.
  3. Avviare una sessione SSH per connettersi alla console della macchina virtuale.

Nota

Per evitare di passare il parametro a ogni comando dell'interfaccia della --subscription riga di comando di Azure, eseguire il comando seguente:

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

Operazioni preliminari

  1. Installare la versione più recente delle estensioni dell'interfaccia della riga di comando appropriate.

Impostazione delle variabili

Per configurare l'ambiente per l'accesso a Macchine virtuali, definire queste variabili di ambiente usate dai vari comandi in questa guida.

Nota

Questi valori delle variabili di ambiente non riflettono una distribuzione reale e gli utenti devono modificarli in modo che corrispondano ai propri ambienti.

Si noti che il primo set di variabili nella sezione seguente è relativo a Gestione cluster non al 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"

Creazione di una risorsa console

La risorsa Console fornisce le informazioni sulla macchina virtuale, ad esempio nome macchina virtuale, chiave SSH pubblica, data di scadenza per la sessione SSH e così via.

Questa sezione fornisce una guida dettagliata per creare una risorsa console usando i comandi dell'interfaccia della riga di comando di Azure.

Diagram of VM Console Resource.

  1. Per creare una risorsa console in Gestione cluster, è necessario raccogliere alcune informazioni, ad esempio gruppo di risorse (CM_HOSTED_RESOURCES_RESOURCE_GROUP) e posizione personalizzata (CM_EXTENDED_LOCATION). È necessario fornire il gruppo di risorse, ma è possibile recuperare la posizione personalizzata se si dispone dei diritti di accesso per estrarre i comandi elencati di seguito.

    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. La prima cosa prima di poter stabilire una sessione SSH con una macchina virtuale consiste nel creare una risorsa console in Gestione 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 si omette il --expiration parametro, la scadenza verrà predefinito un giorno dopo la creazione della risorsa console. Si noti inoltre che il expiration formato di data e ora deve essere conforme a RFC3339 altrimenti la creazione della risorsa console non riesce.

    Nota

    Per un riepilogo completo per questo comando, richiamare az networkcloud console create --help.

  3. Al termine della creazione della risorsa console, recuperare l'identificatore del servizio collegamento privato necessario per creare collegamento privato endpoint (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. Recuperare anche l'ID di accesso alla macchina virtuale. È necessario usare questo identificatore univoco a partire user dalla ssh sessione.

    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

Per un riepilogo completo per questo comando, richiamare az networkcloud virtualmachine console show --help.

Definizione di Connessione ivity di rete privata

Per stabilire una sessione sicura con una macchina virtuale, è necessario stabilire la connettività di rete privata tra la rete e la rete privata di Cluster Manager.

Questa rete privata si basa sull'endpoint collegamento privato di Azure (PLE) e sul servizio collegamento privato di Azure (PLS).

Cluster Manager crea automaticamente un file PLS in modo che sia possibile stabilire una connessione di rete privata tra la rete e la rete privata di Gestione cluster.

Questa sezione fornisce una guida dettagliata per stabilire una connettività di rete privata.

Diagram of Private Link networking.

  1. Creare la ple per stabilire una connessione privata e sicura tra la rete e la rete privata di Cluster Manager. È necessario l'ID risorsa PLS ottenuto in Creazione della risorsa 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

Sarà necessario un solo endpoint privato per Cluster Manager.

  1. Recuperare l'indirizzo IP privato allocato alla ple, necessario per stabilire la ssh sessione.

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

Definizione di una sessione SSH con macchina virtuale

A questo punto, si dispone di virtual_machine_access_id e .sshmux_ple_ip Questo input è le informazioni necessarie per stabilire una sessione con la macchina virtuale.

Il servizio Console vm è un ssh server che "inoltra" la sessione alla macchina virtuale designata. Il sshmux_ple_ip riferimento indiretto al servizio console della macchina virtuale e all'identificatore virtual_machine_access_id per la macchina virtuale.

Importante

Il servizio console della macchina virtuale è in ascolto della porta 2222, pertanto è necessario specificare questo numero di porta nel ssh comando.

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

Diagram of VM Console SSH Session.

Il servizio console vm è stato progettato per consentire una sola sessione per ogni macchina virtuale. Chiunque stabilissi un'altra sessione con esito positivo in una macchina virtuale chiude una sessione esistente.

Importante

La chiave SSH privata usata per autenticare la sessione (impostazione predefinita: $HOME/.ssh/id_rsa) DEVE corrispondere alla chiave SSH pubblica passata come parametro durante la creazione della risorsa console.

Aggiornamento della risorsa della console

È possibile disabilitare la sessione in una determinata macchina virtuale aggiornando la data/ora di scadenza e/o aggiornando la chiave SSH pubblica usata durante la creazione della sessione con una macchina virtuale.

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 si vuole disabilitare l'accesso a una macchina virtuale, è necessario aggiornare la risorsa console con il parametro enabled False. Questo aggiornamento chiude qualsiasi sessione esistente e limita le sessioni successive.

Nota

Prima di creare una sessione in una macchina virtuale, la risorsa console corrispondente deve essere impostata su --enabled True.

Quando scade un'ora della console --expiration , chiude qualsiasi sessione corrispondente alla risorsa console. Sarà necessario aggiornare l'ora di scadenza con un valore futuro in modo da poter stabilire una nuova sessione.

Quando si aggiorna la chiave SSH pubblica della console, il servizio console della macchina virtuale chiude qualsiasi sessione attiva a cui fa riferimento la risorsa console. È necessario fornire una chiave SSH privata corrispondente corrispondente alla nuova chiave pubblica quando si stabilisce una nuova sessione.

Pulizia (facoltativo)

Per pulire l'installazione dell'ambiente della console di macchine virtuali, è necessario eliminare la risorsa console e l'endpoint collegamento privato.

  1. Eliminazione della risorsa console

     az networkcloud virtualmachine console delete \
         --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
         --resource-group "${VM_RESOURCE_GROUP}"
    
  2. Eliminazione dell'endpoint collegamento privato

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