가상 머신 콘솔 서비스 소개
VM(가상 머신) 콘솔 서비스는 Operator Nexus 인스턴스에서 호스트되는 VM에 대한 관리 액세스를 제공합니다. AZURE PLS(Private Link Service)를 사용하여 Azure 프라이빗 네트워크에서 네트워크 연결을 제공합니다. VM 콘솔 서비스는 공용 인터넷에 노출하지 않고 VM에 액세스하는 안전하고 프라이빗 방법입니다.
Operator Nexus 인스턴스에 대한 프라이빗 연결을 가능하게 하는 네트워킹 리소스에 대한 자세한 내용은 Azure Private Link 소개를 참조하세요.
이 문서에서는 VM Console 서비스를 사용하여 Operator Nexus 인스턴스에서 가상 머신과의 세션을 설정하는 방법에 대한 단계별 지침을 제공합니다.
이 가이드는 다음을 수행하는 데 도움이 됩니다.
- 네트워크와 클러스터 관리자의 개인 네트워크 간에 안전한 개인 네트워크 연결을 설정합니다.
az networkcloud virtualmachine console
CLI 명령을 사용하여 워크로드/테넌트 리소스 그룹에 콘솔 리소스를 만듭니다.- SSH 세션을 시작하여 Virtual Machine의 콘솔에 연결합니다.
참고 항목
각 Azure CLI 명령에 --subscription
매개 변수가 전달되지 않도록 하려면 다음 명령을 실행합니다.
az account set --subscription "your-subscription-ID"
시작하기 전에
- 적절한 Azure CLI 확장의 최신 버전을 설치합니다.
변수 설정
Virtual Machines에 액세스하기 위한 환경을 설정하려면 이 가이드 전체에서 다양한 명령에 사용되는 이러한 환경 변수를 정의합니다.
참고 항목
이러한 환경 변수 값은 실제 배포를 반영하지 않으며 사용자는 자신의 환경에 맞게 값을 변경해야 합니다.
아래 섹션의 첫 번째 변수 집합은 클러스터가 아닌 클러스터 관리자에 대한 것입니다.
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). 그렇지 않으면 콘솔 리소스를 만들지 못합니다.참고 항목
이 명령에 대한 전체 개요를 보려면
az networkcloud console create --help
를 호출합니다.콘솔 리소스가 성공적으로 만들어지면 PLE(Private Link Endpoint)를 만드는 데 필요한 Private Link 서비스 식별자를 검색합니다.
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")
참고 항목
이 명령에 대한 전체 개요를 보려면 az networkcloud virtualmachine console show --help
를 호출합니다.
개인 네트워크 연결 설정
Virtual Machine을 사용하여 보안 세션을 설정하려면 네트워크와 클러스터 관리자의 프라이빗 네트워크 간에 프라이빗 네트워크 연결을 설정해야 합니다.
이 개인 네트워크는 Azure PLE(Private Link Endpoint) 및 Azure PLS(Private Link 서비스)를 사용합니다.
클러스터 관리자는 사용자 네트워크와 클러스터 관리자의 개인 네트워크 간에 개인 네트워크 연결을 설정할 수 있도록 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
참고 항목
클러스터 관리자당 하나의 프라이빗 엔드포인트만 필요합니다.
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 콘솔 서비스는 ssh
세션을 Nexus VM에 "릴레이"하는 서버입니다. sshmux_ple_ip
는 VM 콘솔 서비스를 간접적으로 참조하고 virtual_machine_access_id
는 VM의 식별자를 참조하세요.
Important
VM Console 서비스는 포트 2222
를 수신하므로 ssh
명령에 이 포트 번호를 지정해야 합니다.
SSH [-i path-to-private-SSH-key] -p 2222 $virtual_machine_access_id@$sshmux_ple_ip
VM Console 서비스는 가상 머신당 하나의 세션을 만 허용하도록 설계되었습니다. VM에 대한 또 다른 성공적인 세션을 설정하는 사람은 기존 세션을 닫습니다.
Important
세션 인증에 사용되는 프라이빗 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
를 사용하여 콘솔 리소스를 업데이트해야 합니다. 이 업데이트는 기존 세션을 닫고 이후 세션을 제한합니다.
참고 항목
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