Freigeben über


Einführung in den Vm-Konsolendienst

Der Konsolendienst für virtuelle Maschinen (VM) verwalteten Zugriff auf einen virtuellen Computer, der in einer Operator Nexus-Instanz gehostet wird. Er verwendet den Azure Private Link-Dienst (PLS), um Netzwerkkonnektivität im privaten Azure-Netzwerk bereitzustellen. Der VM-Konsolendienst ist eine sichere und private Möglichkeit, auf einen virtuellen Computer zuzugreifen, ohne ihn für das öffentliche Internet verfügbar zu machen.

Diagramm des VM-Konsolendiensts.

Weitere Informationen zu Netzwerkressourcen, die private Konnektivität mit einer Operator Nexus-Instanz ermöglichen, finden Sie unter Einführung in Azure Private Link.

Dieses Dokument enthält Anleitungen zur Verwendung des VM-Konsolendiensts zum Einrichten einer Sitzung mit einem virtuellen Computer in einer Operator Nexus-Instanz.

Dieser Leitfaden hilft Ihnen bei folgenden Schritten:

  1. Richten Sie eine sichere private Netzwerkkonnektivität zwischen Ihrem Netzwerk und dem privaten Netzwerk des Cluster-Managers ein.
  2. Erstellen Sie eine Konsolenressource in Ihrer Workload/Mandantenressourcengruppe mithilfe des CLI-Befehls az networkcloud virtualmachine console.
  3. Starten Sie eine SSH-Sitzung, um eine Verbindung mit der Konsole des virtuellen Computers herzustellen.

Hinweis

Um das Übergeben des --subscription-Parameters an jeden Azure CLI-Befehl zu vermeiden, führen Sie den folgenden Befehl aus:

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

Voraussetzungen

  1. Installieren Sie die neueste Version der passenden Azure CLI-Erweiterung.

Festlegen von Variablen

Um die Umgebung für den Zugriff auf virtuelle Maschinen einzurichten, definieren Sie folgende Umgebungsvariablen, die von den verschiedenen Befehlen in diesem Leitfaden verwendet werden.

Hinweis

Diese Umgebungsvariablenwerte spiegeln keine echte Bereitstellung wider, und Benutzer müssen sie ihren Umgebungen entsprechend ändern.

Beachten Sie, dass die erste Gruppe von Variablen im folgenden Abschnitt für den Cluster-Manager und nicht für den Cluster gelten. Der CM_EXTENDED_LOCATION-Wert kann mit dem Befehl az networkcloud virtualmachine show --name <virtual machine name> --resource-group <virtual machine's resource group> --query "consoleExtendedLocation" | jq -r '.consoleExtendedLocation.name' gefunden werden.

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

Erstellen einer Konsolenressource

Die Konsolenressource stellt die Informationen über die Nexus-VM bereit. Sie stellt den VM-Namen, öffentlichen SSH-Schlüssel, das Ablaufdatum für die SSH-Sitzung usw. bereit.

Dieser Abschnitt enthält schrittweise Anleitungen zum Erstellen einer Konsolenressource mithilfe von Azure CLI-Befehlen.

Diagramm einer VM-Konsolenressource.

  1. Um eine Console-Ressource im Cluster-Manager zu erstellen, müssen Sie einige Informationen sammeln, z. B. Ressourcengruppe (CM_HOSTED_RESOURCES_RESOURCE_GROUP) und benutzerdefinierter Speicherort (CM_EXTENDED_LOCATION). Sie müssen die Ressourcengruppe bereitstellen, aber Sie können den benutzerdefinierten Speicherort abrufen, wenn Sie über Zugriffsrechte zum Ausführen der folgenden Befehle verfügen:

    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. Damit Sie eine SSH-Sitzung mit einem virtuellen Computer einrichten können, müssen Sie als Erstes eine Console-Ressource im Cluster-Manager erstellen.

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

    Wenn Sie den --expiration-Parameter weglassen, wird der Ablauf standardmäßig auf einen Tag nach der Erstellung der Konsolenressource festgelegt. Beachten Sie außerdem, dass das Datums- und Uhrzeitformat für expiration RFC3339 entsprechen muss (z. B. 2024-10-04T14:48:00Z), andernfalls schlägt die Erstellung der Konsolenressource fehl.

    Hinweis

    Rufen Sie für einen vollständigen Überblick über diesen Befehl az networkcloud console create --help auf.

  3. Rufen Sie nach der Erstellung der Konsolenressource den Private Link Service-Bezeichner ab, der zum Erstellen des Private Link-Endpunkts (PLE) erforderlich ist.

    export pls_resourceid=$(az networkcloud virtualmachine console show \
        --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
        --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \
        --query "privateLinkServiceId")
    
  4. Rufen Sie außerdem die VM-Zugriffs-ID ab. Sie müssen diesen eindeutigen Bezeichner als user der ssh-Sitzung verwenden.

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

Hinweis

Rufen Sie für einen vollständigen Überblick über diesen Befehl az networkcloud virtualmachine console show --help auf.

Einrichten der privaten Netzwerkkonnektivität

Um eine sichere Sitzung mit einem virtuellen Computer einzurichten, müssen Sie eine private Netzwerkkonnektivität zwischen Ihrem Netzwerk und dem privaten Netzwerk des Cluster-Managers einrichten.

Dieses private Netzwerk basiert auf dem Azure Private Link-Endpunkt (PLE) und dem Azure Private Link-Dienst (PLS).

Der Cluster-Manager erstellt automatisch einen PLS, sodass Sie eine private Netzwerkverbindung zwischen Ihrem Netzwerk und dem privaten Netzwerk des Cluster-Managers herstellen können.

Dieser Abschnitt enthält eine schrittweise Anleitung, mit der Sie die private Netzwerkkonnektivität einrichten können.

Diagramm des Private Link-Netzwerks.

  1. Erstellen Sie den PLE zum Einrichten einer privaten und sicheren Verbindung zwischen Ihrem Netzwerk und dem privaten Netzwerk des Cluster-Managers. Sie benötigen die PLS-Ressourcen-ID, die in Erstellen einer Konsolenressource abgerufen wird.

     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
    

Hinweis

Sie benötigen nur einen privaten Endpunkt pro Cluster-Manager.

  1. Rufen Sie die private IP-Adresse ab, die dem PLE zugeordnet ist. Sie benötigen sie beim Einrichten der ssh-Sitzung.

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

Einrichten einer SSH-Sitzung mit dem virtuellen Computer

An diesem Punkt haben Sie virtual_machine_access_id und sshmux_ple_ip. Diese Eingabe entspricht den Informationen, die zum Einrichten einer Sitzung mit dem virtuellen Computer erforderlich sind.

Der VM-Konsolendienst ist ein ssh-Server, der die Sitzung an eine Nexus-VM weitergibt. sshmux_ple_ip verweist indirekt auf den VM-Konsolendienst, und virtual_machine_access_id ist der den Bezeichner für den virtuellen Computer.

Wichtig

Der VM-Konsolendienst lauscht auf Port 2222. Daher müssen Sie diese Portnummer im Befehl ssh angeben.

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

Diagramm der VM-SSH-Konsolensitzung.

Der VM-Konsolendienst wurde so konzipiert, dass nur eine Sitzung pro virtuellem Computer zulässig ist. Jeder, der eine weitere erfolgreiche Sitzung mit einem virtuellen Computer einrichtet, schließt eine vorhandene Sitzung.

Wichtig

Der private SSH-Schlüssel, der für die Authentifizierung der Sitzung verwendet wird (Standard: $HOME/.ssh/id_rsa) MUSS mit dem öffentlichen SSH-Schlüssel übereinstimmen, der beim Erstellen der Konsolenressource als Parameter übergeben wird.

Aktualisieren einer Konsolenressource

Sie können die Sitzung mit einem virtuellen Computer deaktivieren, indem Sie das Ablaufdatum/die Uhrzeit und den öffentlichen SSH-Schlüssel aktualisieren, der beim Erstellen der Sitzung mit einer VM verwendet wird.

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

Wenn Sie den Zugriff auf einen virtuellen Computer deaktivieren möchten, müssen Sie die Konsolenressource mit dem Parameter enabled False aktualisieren. Dieses Update schließt alle vorhandenen Sitzungen und schränkt spätere Sitzungen ein.

Hinweis

Bevor Sie eine Sitzung auf einem virtuellen Computer erstellen, muss die entsprechende Konsolenressource auf --enabled True festgelegt werden.

Wenn eine --expiration-Zeit für eine Konsole abläuft, wird jede Sitzung geschlossen, die der Konsolenressource entspricht. Sie müssen die Ablaufzeit mit einem zukünftigen Wert aktualisieren, damit Sie eine neue Sitzung einrichten können.

Wenn Sie den öffentlichen SSH-Schlüssel der Konsole aktualisieren, schließt der VM-Konsolendienst alle aktiven Sitzungen. Sie stellen einen neuen privaten SSH-Schlüssel zum Erstellen einer neuen Sitzung bereit.

Bereinigen (optional)

Zum Bereinigen der VM-Konsolenumgebungseinrichtung müssen Sie die Konsolenressource und den Private Link-Endpunkt löschen.

  1. Löschen der Konsolenressource

     az networkcloud virtualmachine console delete \
         --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \
         --resource-group "${VM_RESOURCE_GROUP}"
    
  2. Löschen des Private Link-Endpunkts

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