Virtual Machine コンソール サービスの概要
仮想マシン (VM) コンソール サービスは、Operator Nexus Instance でホストされている VM へのマネージド アクセスを提供します。 Azure Private Link Service (PLS) を使用して、Azure プライベート ネットワークにネットワーク接続を提供します。 VM コンソール サービスは、VM をパブリック インターネットに公開せずに VM にアクセスする安全かつ非公開の方法です。
Operator Nexus Instance へのプライベート接続を有効にするネットワーク リソースの詳細については、「 Azure Private Linkの概要」を参照してください。
このドキュメントでは、VM コンソール サービスを使用して、Operator Nexus Instance 内の仮想マシンとのセッションを確立する方法について説明します。
このガイドは、次のことに役立ちます:
- ネットワークとクラスター マネージャーのプライベート ネットワークの間にセキュリティで保護されたプライベート ネットワーク接続を確立します。
az networkcloud virtualmachine console
CLI コマンドを使用して、ワークロード/テナント リソース グループにコンソール リソースを作成します。- SSH セッションを開始して、仮想マシンのコンソールに接続します。
Note
各 Azure CLI コマンドに --subscription
パラメータを渡さないようにするには、次のコマンドを実行します:
az account set --subscription "your-subscription-ID"
開始する前に
- 適切な CLI 拡張機能の最新バージョンをインストールします。
変数の設定
Virtual Machines にアクセスするための環境を設定するには、このガイド全体のさまざまなコマンドで使用されるこれらの環境変数を定義します。
Note
これらの環境変数の値は実際のデプロイを反映していないため、ユーザーは環境に合わせて変更する必要があります。
以下のセクションの最初の変数セットは、クラスターではなく クラスター マネージャー 用です。
CM_EXTENDED_LOCATION 値は、コマンド 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"
コンソール リソースの作成
コンソール リソースは、Nexus VM に関する情報を提供します。 VM 名、公開 SSH キー、SSH セッションの有効期限などを提供します。
このセクションでは、Azure CLI コマンドを使用してコンソール リソースを作成するための詳細なガイドを提供します。
クラスター マネージャーでコンソール リソースを作成するには、リソース グループ (CM_HOSTED_RESOURCES_RESOURCE_GROUP) やカスタムの場所 (CM_EXTENDED_LOCATION) などの情報を収集する必要があります。 リソース グループを指定する必要がありますが、以下に示すコマンドを削除するアクセス権がある場合は、カスタムの場所を取得できます。
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 '"')
VM との SSH セッションを確立する前にまず、クラスター マネージャーで コンソール リソースを作成します。
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}"]
--expiration
パラメータを省略すると、コンソール リソースの作成後 1 日後に有効期限が既定で設定されます。 また、expiration
の日付と時刻の形式は RFC3339 に準拠する必要があります (例: 2024-10-04T14:48:00Z)。そうでない場合、コンソール リソースの作成は失敗します。Note
このコマンドの完全な概要については、
az networkcloud console create --help
を呼び出します。コンソール リソースが正常に作成されたら、Private Link エンドポイント (PLE) の作成に必要な Private Link Service 識別子を取得します
export pls_resourceid=$(az networkcloud virtualmachine console show \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \ --query "privateLinkServiceId")
また、 VM アクセス IDを取得します。 この一意識別子は、
ssh
セッションのuser
として使用する必要があります。virtual_machine_access_id=$(az networkcloud virtualmachine console show \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${CM_HOSTED_RESOURCES_RESOURCE_GROUP}" \ --query "virtualMachineAccessId")
Note
このコマンドの完全な概要については、 az networkcloud virtualmachine console show --help
を呼び出します。
プライベート ネットワーク接続の確立
仮想マシンとのセキュリティで保護されたセッションを確立するには、ネットワークとクラスター マネージャーのプライベート ネットワークの間にプライベート ネットワーク接続を確立する必要があります。
このプライベート ネットワークは、Azure Private Link エンドポイント (PLE) と Azure Private Link サービス (PLS) に依存しています。
クラスター マネージャーによって PLS が自動的に作成されるため、ネットワークとクラスター マネージャーのプライベート ネットワークの間にプライベート ネットワーク接続を確立できます。
このセクションでは、プライベート ネットワーク接続の確立に役立つ詳細なガイドを提供します。
ネットワークとクラスター マネージャーのプライベート ネットワークの間にプライベートでセキュリティで保護された接続を確立するための PLE を作成します。 コンソール リソース の作成で取得した PLS リソース ID が必要です。
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
Note
クラスター マネージャーごとに必要なプライベート エンドポイントは 1 つだけです。
ssh
セッションを確立するときに必要な PLE に割り当てられたプライベート IP アドレスを取得します。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}"
仮想マシンとの SSH セッションの確立
この時点で、 virtual_machine_access_id
と sshmux_ple_ip
があります。 この入力は、VM とのセッションを確立するために必要な情報です。
VM コンソール サービスは、セッションを Nexus VM に "リレー" する ssh
サーバーです。 sshmux_ple_ip
は、VM コンソール サービスと VM の virtual_machine_access_id
識別子を間接的に参照します。
重要
VM コンソール サービスはポート 2222
をリッスンするため、 ssh
コマンドでこのポート番号指定の 必要があります。
SSH [-i path-to-private-SSH-key] -p 2222 $virtual_machine_access_id@$sshmux_ple_ip
VM コンソール サービスは、仮想マシンごとに 1 つ だけのセッション を許可するように設計されています。 VM への別の正常なセッションを確立したユーザーは、既存のセッションを閉じます。
重要
セッションの認証に使用される非公開 SSH キー (既定値: $HOME/.ssh/id_rsa
) は、コンソール リソースの作成時にパラメータとして渡される公開 SSH キーと一致している必要があります。
コンソール リソースの更新
VM とのセッションを作成するときに使用される有効期限の日時と公開 SSH キーを更新することで、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}"]
VM へのアクセスを無効にする場合は、パラメータ enabled False
を使用してコンソール リソースを更新する必要があります。 この更新プログラムは、既存のセッションを閉じ、後続のセッションを制限します。
Note
VM へのセッションを作成する前に、対応するコンソール リソースが--enabled True
に設定される必要があります 。
コンソール --expiration
時間が経過すると、コンソール リソースに対応するすべてのセッションが閉じられます。 新しいセッションを確立できるように、有効期限を将来の値で更新する必要があります。
コンソールの公開 SSH キーを更新すると、VM コンソール サービスにより、すべてのアクティブなセッションは終了されます。 新しいセッションを作成するには、新しい秘密 SSH キーを提示します。
クリーンアップ (省略可能)
VM コンソール環境のセットアップをクリーンアップするには、コンソール リソースと Private Link エンドポイントを削除する必要があります。
コンソール リソースの削除
az networkcloud virtualmachine console delete \ --virtual-machine-name "${VIRTUAL_MACHINE_NAME}" \ --resource-group "${VM_RESOURCE_GROUP}"
Private Link エンドポイントの削除
az network private-endpoint delete \ --name ${PRIVATE_ENDPOINT_NAME}-ple \ --resource-group ${PRIVATE_ENDPOINT_NAME}-rg