Azure Compute Gallery에 이미지 저장 및 공유

적용 대상: ✔️ Linux VM ✔️ Windows VM ✔️ 유연한 확장 집합 ✔️ 균일한 확장 집합

이미지는 생성 방식에 따라 완전한 VM(연결된 데이터 디스크 포함)의 복사본일 수도 있고 단순한 OS 디스크의 복사본일 수도 있습니다. 이미지에서 VM을 만드는 경우 이미지의 VHD 복사본을 사용하여 새 VM의 디스크를 만듭니다. 이미지는 스토리지에 유지되며 새 VM을 만들 때 계속 반복해서 사용할 수 있습니다.

유지할 이미지가 굉장히 많고 회사 전체에서 이미지를 사용할 수 있게 만들려면 Azure Compute Gallery를 리포지토리로 사용하면 됩니다.

갤러리를 사용하여 이미지를 저장하는 경우 여러 리소스 종류가 생성됩니다.

리소스 설명
이미지 원본 이는 갤러리에서 이미지 버전을 만드는 데 사용할 수 있는 리소스입니다. 이미지 소스는 일반화 또는 특수화된 기존 Azure VM, 관리형 이미지, 스냅샷, VHD 또는 다른 갤러리의 이미지 버전일 수 있습니다.
갤러리 Azure Marketplace와 마찬가지로 갤러리는 이미지 및 다른 리소스를 관리하고 공유하는 데 사용되는 리포지토리이지만 액세스할 수 있는 사람을 제어할 수 있습니다.
이미지 정의 이미지 정의는 갤러리 내에 생성되고, VM을 만드는 데 사용하기 위해 충족해야 할 요구 사항과 이미지에 대한 정보를 전달합니다. 여기에는 이미지가 Windows인지, Linux인지 여부, 릴리스 정보, 최소 및 최대 메모리 요구 사항이 포함됩니다. 이미지의 형식 정의입니다.
이미지 버전 이미지 버전은 갤러리를 사용하는 경우 VM을 만들 때 사용합니다. 사용 환경에 필요한 만큼 여러 버전의 이미지를 가질 수 있습니다. 관리되는 이미지와 마찬가지로 이미지 버전을 사용하여 VM을 만들 때는 이미지 버전을 사용하여 VM의 새 디스크를 만듭니다. 이미지 버전은 여러 번 사용할 수 있습니다.

갤러리에서 한 이미지의 여러 버전을 보유하는 방법을 보여 주는 그래픽

이미지 정의

이미지 정의는 이미지 버전의 논리적 그룹화입니다. 이미지 정의에는 이미지를 만든 이유에 대한 정보가 포함되며, 이미지 메타데이터(예: 이미지의 OS, 지원 기능 및 이미지를 사용하는 방법에 관한 기타 정보)도 포함되어 있습니다. 이미지 정의는 이미지 만들기와 관련하여 모든 세부 정보에 대한 계획과 비슷합니다. 이미지 정의가 아닌 정의에서 만든 이미지 버전의 VM을 배포합니다.

각 이미지 정의에는 Publisher, Offer, SKU의 세 가지 매개 변수가 있으며 이러한 매개 변수를 조합해서 사용합니다. 세 매개 변수는 특정 이미지 정의를 찾는 데 사용됩니다. 3개 값을 모두 공유하지는 않으면서 1개 또는 2개의 값을 공유하는 이미지 정의를 사용할 수 있습니다. 예를 들어 다음은 3개의 이미지 정의와 해당 값입니다.

이미지 정의 Publisher 제안 Sku
myImage1 Contoso 재무 백 엔드
myImage2 Contoso 재무 프런트 엔드
myImage3 테스트 재무 프런트 엔드

이러한 세 가지 정의는 모두 고유한 값 세트를 갖습니다. 형식은 최신 버전의 Marketplace 이미지를 가져오기 위해 Azure PowerShell에서 Azure Marketplace 이미지의 게시자, 제품 및 SKU를 지정하는 방법과 비슷합니다. 각 이미지 정의에는 이와 같이 고유한 값 세트가 필요합니다.

다음 매개 변수는 포함할 수 있는 이미지 버전 유형을 결정합니다.

  • 운영 체제 상태 - OS 상태를 일반화 또는 특수화로 설정할 수 있습니다. 이 필드는 필수 필드입니다.
  • 운영 체제 - Windows 또는 Linux입니다. 이 필드는 필수 필드입니다.
  • Hyper-V 생성 - 이미지가 1세대 또는 2세대 Hyper-V VHD 중 무엇으로 만들었는지 여부를 지정합니다. 기본값은 1세대입니다.

이미지 정의에는 동일한 기능, 계획, OS 상태, OS 유형 등을 지원하는 이미지를 그룹화할 수 있도록 이미지에 대한 메타데이터가 포함되어 있습니다. 다음은 리소스를 보다 쉽게 추적할 수 있도록 이미지 정의에 대해 설정할 수 있는 다른 매개 변수입니다.

  • 설명 - 설명을 사용하여 이미지 정의가 존재하는 이유를 자세히 알려줍니다. 예를 들어 애플리케이션이 미리 설치된 프런트 엔드 서버의 이미지 정의가 있을 수 있습니다.

  • EULA - 이미지 정의와 관련된 최종 사용자 사용권 계약을 가리키는 데 사용할 수 있습니다.

  • 개인정보처리방침 및 릴리스 정보 - 릴리스 정보와 개인정보처리방침을 Azure 스토리지에 저장하고 이미지 정의 과정에서 액세스할 수 있도록 URI를 제공합니다.

  • 수명 종료 날짜 - 이미지 정의의 모든 이미지 버전에 대해 이미지가 사용되지 않아야 하는 기본 날짜를 설정합니다. 수명 종료 날짜는 정보 제공용입니다. 사용자는 수명 종료 날짜가 지난 이미지와 버전에서 VM을 계속 만들 수 있습니다.

  • 태그 - 이미지 정의를 만들 때 태그를 추가할 수 있습니다. 태그에 대한 자세한 내용은 태그를 사용하여 리소스 구성을 참조하세요.

  • 최소/최대 vCPU 및 메모리 권장 사항 - 이미지에 대한 vCPU 및 메모리 권장 사항이 있는 경우 해당 정보를 이미지 정의에 연결할 수 있습니다.

  • 허용되지 않는 디스크 유형 - VM의 스토리지 요구 사항에 대한 정보를 제공할 수 있습니다. 예를 들어 이미지가 표준 HDD 디스크에 적합하지 않은 경우 허용되지 않는 유형 목록에 추가합니다.

  • Marketplace 이미지(-PurchasePlanPublisher, -PurchasePlanName-PurchasePlanProduct)에 대한 구매 계획 정보입니다. 구매 계획 정보에 대한 자세한 내용은 Azure Marketplace에서 이미지 찾기이미지를 만들 때 Azure Marketplace 구매 계획 정보 제공을 참조하세요.

  • 아키텍처

  • 기능을 사용하면 갤러리 유형에 따라 이미지에서 지원되는 추가 기능 및 SecurityType을 지정할 수 있습니다.

    기능 허용되는 값 정의 다음에서 지원:
    IsHibernateSupported True, False 최대 절전 모드를 지원하는 VM을 만듭니다. 프라이빗, 직접 공유, 커뮤니티
    IsAcceleratedNetworkSupported True, False 가속화된 네트워킹이 사용하도록 설정된 VM을 만듭니다. 이미지 정의에서 True로 설정하면 가속화된 네트워킹을 지원하지 않는 VM 캡처가 지원되지 않습니다. 프라이빗, 직접 공유, 커뮤니티
    DiskControllerType ["SCSI", "NVMe"], ["SCSI"] SCSI 또는 NVMe 디스크 유형을 사용하도록 설정합니다. NVMe VM 및 디스크는 지원 NVMe라는 태그가 지정된 이미지 정의에서만 캡처할 수 있습니다. 프라이빗, 직접 공유, 커뮤니티

    features 매개 변수를 사용하여 SecurityType을 지정하면 VM에서 사용하도록 설정된 보안 기능이 제한됩니다. 일부 유형은 이러한 항목이 저장된 갤러리의 유형에 따라 제한됩니다.

    SecurityType 정의 다음에서 지원:
    ConfidentialVMSupported VMGS Blob을 포함하지 않는 일반 Gen2 이미지입니다. 이 이미지 유형에서 Gen2 VM 또는 Confidential VM을 만들 수 있습니다. 프라이빗, 직접 공유, 커뮤니티
    기밀 VM 이 이미지 유형에서 Confidential VM만 만들 수 있습니다. 프라이빗
    TrustedLaunchSupported VMGS Blob을 포함하지 않는 일반 Gen2 이미지입니다. 이 이미지 유형에서 Gen2 VM 또는 TrustedLaunch VM을 만들 수 있습니다. 프라이빗, 직접 공유, 커뮤니티
    TrustedLaunch 이 이미지 유형에서 TrustedLaunch VM만 만들 수 있습니다. 프라이빗
    TrustedLaunchAndConfidentialVmSupported VMGS Blob을 포함하지 않는 일반 Gen2 이미지입니다. 이 이미지 유형에서 Gen2 VM, TrustedLaunch VM 또는 ConfidentialVM을 만들 수 있습니다. 프라이빗, 직접 공유, 커뮤니티

    자세한 내용은 이미지 정의 기능 및 SecurityType을 추가하기 위한 CLI 예제 또는 PowerShell 예제를 참조하세요.

    **ConfidentialVM은 사용 가능한 지역에서만 지원됩니다. 여기에서 지원되는 지역을 찾을 수 있습니다.

이미지 버전

VM을 만드는 데 사용하는 것은 이미지 버전입니다. 사용 환경에 필요한 만큼 여러 버전의 이미지를 가질 수 있습니다. 이미지 버전을 사용하여 VM을 만들 때는 이미지 버전을 사용하여 VM의 새 디스크를 만듭니다. 이미지 버전은 여러 번 사용할 수 있습니다.

이미지 버전의 속성은 다음과 같습니다.

  • 버전 번호. 이는 이미지 버전의 이름으로 사용됩니다. 항상 MajorVersion.MinorVersion.Patch 형식입니다. VM을 만들 때 최신을 사용하도록 지정하면 가장 높은 MajorVersion, 다음으로 MinorVersion, 다음으로 패치를 기준으로 최신 이미지가 선택됩니다.
  • 출처. 원본은 VM, 관리 디스크, 스냅샷, 관리형 이미지 또는 다른 이미지 버전일 수 있습니다.
  • 수명 주기 끝. 이미지 버전의 수명 종료 날짜를 나타냅니다. 수명 종료 날짜는 정보 제공용입니다. 사용자는 수명 종료 날짜가 지난 버전에서 VM을 계속 만들 수 있습니다.

일반화 이미지와 특수화 이미지

Azure Compute Gallery는 두 가지 운영 체제 상태를 지원합니다. 일반적으로 이미지를 만드는 데 사용되는 VM을 일반화한 후 이미지를 가져와야 합니다. 일반화는 VM에서 머신 및 사용자 관련 정보를 제거하는 프로세스입니다. Linux의 경우 waagent-deprovision 또는 -deprovision+user 매개 변수를 사용할 수 있습니다. Windows의 경우 Sysprep 도구가 사용됩니다.

특수화 VM은 머신 관련 정보와 계정을 제거하는 프로세스를 거치지 않았습니다. 또한 특수화 이미지로 만든 VM에는 osProfile이 연결되지 않습니다. 즉, 특수화 이미지는 이점도 있지만 몇 가지 제한이 있습니다.

  • 특수화 이미지로 만든 VM과 확장 집합은 더 빠르게 작동할 수 있습니다. 이러한 이미지는 이미 첫 번째 부팅을 거친 원본으로 만들기 때문에 이러한 이미지로 만든 VM은 더 빠르게 부팅됩니다.
  • VM에 로그인하는 데 사용할 수 있는 계정은 해당 VM이 생성된 특수화 이미지를 사용하여 만드는 VM에서도 사용할 수 있습니다.
  • VM은 이미지를 가져온 VM의 컴퓨터 이름을 사용합니다. 충돌을 방지하려면 컴퓨터 이름을 변경해야 합니다.
  • osProfilesecrets를 사용하여 중요한 정보를 VM에 전달하는 방식을 결정합니다. 이로 인해 KeyVault, WinRM 및 osProfilesecrets를 사용하는 기타 기능을 사용할 때 문제가 발생할 수 있습니다. 경우에 따라 MSI(관리되는 서비스 ID)를 사용하여 이러한 제한을 해결할 수도 있습니다.

리소스 업데이트

갤러리 리소스를 만든 후 변경할 수 있습니다. 다음과 같은 제한이 있습니다.

Azure Compute Gallery:

  • 설명

이미지 정의:

  • 권장 vCPU
  • 권장 메모리
  • 설명
  • 수명 주기 끝
  • ReleaseNotes

이미지 버전:

  • 지역 복제본 수
  • 대상 지역
  • 최신 항목에서 제외
  • 수명 주기 끝

공유

공유하려는 사용자에 따라 Azure Compute Gallery의 이미지를 공유하는 세 가지 주요 방법이 있습니다.

다음을 사용하여 공유: 사람 Groups 서비스 주체 특정 구독(또는) 테넌트 내의 모든 사용자 Azure의 모든 사용자와 공개적으로 공유
RBAC 공유 없음 아니요
RBAC + 직접 공유 갤러리 아니요
RBAC + 커뮤니티 갤러리 없음

ACG 이미지를 만드는 데 필요한 RBAC 권한:

ACG 이미지는 가상 머신, 디스크/스냅샷, VHD 등 다양한 원본에서 사용자가 만들 수 있습니다. 이 섹션에서는 Azure Compute Gallery 이미지를 만드는 데 필요한 다양한 사용자 권한을 간략하게 설명합니다. 필수 권한이 없으면 ACG 이미지를 만들 수 없음을 확인합니다.

  • 사용자가 ACG 이미지 버전을 만들려면 가상 머신에 대한 쓰기 권한이 필요합니다.
  • Azure SDK의 경우 properties.storageProfile.source.virtualMachineId 속성을 사용합니다. 이 속성에는 API 버전 2023-07-03 또는 .NET SDK의 버전 1.4.0(또는 그 이상)이 필요합니다.
소스 형식 필요한 권한
가상 머신 쓰기
디스크/스냅샷 쓰기
VHD 쓰기(listKeys)
관리되는 이미지 읽기
갤러리 이미지 읽기

RBAC 권한 부여에 대한 Azure 기본 제공 역할에 대한 추가 정보는 설명서를 참조하세요.

단순 복제

이미지 버전을 만들 때 개발 및 테스트를 위해 복제 모드를 단순하게 설정할 수 있습니다. 단순 복제는 이미지 복사를 건너뛰므로 이미지 버전이 빠르게 준비됩니다. 그러나 이는 해당 이미지 버전에서 많은 수의 VM을 배포할 수 없다는 의미이기도 합니다. 이는 이전 관리 이미지가 작동하는 방식과 유사합니다.

단순 복제는 자주 배포되지 않는 큰 이미지(최대 32TB)가 있는 경우에도 유용할 수 있습니다. 원본 이미지가 복사되지 않기 때문에 더 큰 디스크를 사용할 수 있습니다. 그러나 동시에 많은 수의 VM을 배포하는 데 사용할 수도 없습니다.

단순 복제용 이미지를 설정하려면 Azure CLI와 함께 --replication-mode Shallow를 사용합니다.

SDK 지원

다음 SDK를 사용하면 Azure Compute Gallery를 만들 수 있습니다.

템플릿

템플릿을 사용하여 Azure Compute Gallery 리소스를 만들 수 있습니다. 사용할 수 있는 몇 가지 빠른 시작 템플릿은 다음과 같습니다.

자주 묻는 질문

Azure Portal에서 액세스할 수 있는 구독 간에 Azure Compute Gallery 리소스를 모두 나열하려면 아래 단계를 따르세요.

  1. Azure Portal을 엽니다.
  2. 페이지를 아래로 스크롤하고 모든 리소스를 선택합니다.
  3. 모든 리소스를 나열하려는 모든 구독을 선택합니다.
  4. Azure Compute Gallery 형식의 리소스를 찾습니다.

사용 권한이 있는 구독 간에 Azure Compute Gallery 리소스를 나열하려면 Azure CLI에서 다음 명령을 사용하세요.

   az account list -otsv --query "[].id" | xargs -n 1 az sig list --subscription

예. 가지고 있는 이미지의 유형에 따라 3가지 시나리오가 있습니다.

시나리오 1: 관리되는 이미지가 있는 경우 이를 통해 이미지 정의와 이미지 버전을 만들 수 있습니다. 자세한 내용은 이미지 정의 및 이미지 버전 만들기를 참조하세요.

시나리오 2: 비관리형 이미지가 있는 경우 해당 이미지에서 관리형 이미지를 만든 다음, 관리형 이미지에서 이미지 정의와 이미지 버전을 만들 수 있습니다.

시나리오 3: 로컬 파일 시스템에 VHD가 있는 경우 VHD를 관리형 이미지에 업로드한 다음, 해당 이미지로 이미지 정의와 이미지 버전을 만들 수 있습니다.

특수화 디스크로 이미지 버전을 만들 수 있나요?

예, 특수화된 이미지로 VM을 만들 수 있습니다.

아니요, 갤러리 이미지 리소스를 다른 구독으로 이동할 수는 없습니다. 갤러리의 이미지 버전을 다른 지역에 복제하거나 다른 갤러리의 이미지를 복사할 수 있습니다.

21Vianet에서 운영하는 Azure나 Azure 독일, Azure Government Cloud 등의 클라우드 간에 이미지 버전을 복제할 수 있나요?

아니요, 클라우드 간에 이미지 버전을 복제할 수는 없습니다.

내 이미지 버전을 구독 간에 복제할 수 있나요?

아니요. 구독에서 지역 간에 이미지 버전을 복제하고 RBAC를 통해 다른 구독에서 사용할 수 있습니다.

Microsoft Entra 테넌트 간에 이미지 버전을 공유할 수 있나요?

예, RBAC를 사용하여 테넌트 간에 개별 버전을 공유할 수 있습니다. 그러나 대규모로 공유하려면 PowerShell 또는 CLI를 사용하여 "Azure 테넌트 간에 갤러리 이미지 공유"를 참조하세요.

대상 지역 간에 이미지 버전을 복제하려면 얼마나 걸리나요?

이미지 버전 복제 시간은 이미지의 크기와 이미지가 복제되는 지역 수에 따라 크게 달라집니다. 그러나 최상의 결과를 얻으려면 이미지를 작게 유지하고 원본 지역과 대상 지역을 가깝게 유지하는 것이 가장 좋습니다. -ReplicationStatus 플래그를 사용하여 복제의 상태를 확인할 수 있습니다.

원본 지역과 대상 지역 사이의 차이점은 무엇인가요?

원본 지역은 이미지 버전이 생성되는 지역이며, 대상 지역은 이미지 버전의 복사본이 저장되는 지역입니다. 각 이미지 버전에 하나의 원본 지역만 사용할 수 있습니다. 또한 이미지 버전을 만들 때 원본 지역 위치를 대상 지역 중 하나로 전달하세요.

이미지 버전을 만드는 동안 원본 영역을 지정하는 방법은 무엇인가요?

이미지 버전을 만들 때 CLI의 --location 인수와 PowerShell의 -Location 매개 변수를 사용하여 원본 지역을 지정할 수 있습니다. 이미지 버전을 만들려면 기본 이미지로 사용 중인 관리되는 이미지가 이미지 버전을 만들려는 위치와 동일한 위치에 있는지 확인하세요. 또한 이미지 버전을 만들 때 원본 지역 위치를 대상 지역 중 하나로 전달하세요.

각 지역에 만들 이미지 버전 복제본 수를 지정하는 방법은 무엇인가요?

각 지역에 만들 이미지 버전 복제본 수를 지정하는 방법은 두 가지가 있습니다.

  1. 지역당 만들려는 복제본의 수를 지정하는 지역당 복제본 수.
  2. 지역당 복제본 수가 지정되지 않은 경우 지역당 기본 개수인 일반적인 복제본 수입니다.

지역당 복제본 수를 지정하려면 다음과 같이 해당 지역에 만들려는 복제본 수와 위치를 전달합니다. 예를 들어 "미국 중남부=2"를 전달할 수 있습니다.

각 위치에 지역당 복제본 수가 지정되지 않은 경우 기본 복제본 수가 일반적인 복제본 수로 지정됩니다.

Azure CLI에서 일반적인 복제본 수를 지정하려면 az sig image-version create 명령에 --replica-count 인수를 사용합니다.

예, 전송할 수 있습니다. 하지만 리소스 그룹, 갤러리, 이미지 정의 및 이미지 버전을 같은 위치에 유지하는 것이 좋습니다.

Azure Compute Gallery 사용 요금은 없습니다(단, 이미지 버전을 저장할 때 발생하는 스토리지 요금과 원본 지역에서 대상 지역으로 이미지 버전을 복제할 때 발생하는 네트워크 송신 요금 제외).

이미지를 만들 때 어떤 API 버전을 사용해야 하나요?

갤러리, 이미지 정의 및 이미지 버전으로 작업하려면 API 버전 2018-06-01을 사용하는 것이 좋습니다. ZRS(영역 중복 스토리지)에는 버전 2019-03-01 이상이 필요합니다.

이미지 버전으로 VM 또는 Virtual Machine Scale Set를 만들려면 어떤 API 버전을 사용해야 하나요?

이미지 버전을 사용한 VM 및 Virtual Machine Scale Set 배포의 경우 API 버전 2018-04-01 이상을 사용하는 것이 좋습니다.

예, OS 유형, Hyper-V 생성 및 데이터 디스크 레이아웃이 이미지 간에 일치한다면 확장 집합 이미지 참조를 관리형 이미지에서 Azure Compute Gallery 이미지로 업데이트할 수 있습니다.

VM 이미지를 만드는 동안 새 속성을 사용하고 권한이 정확하게 부여되도록 코드를 업데이트하려면 어떻게 해야 하나요?

가상 머신 ID 필드의 경우 GallerySource(GalleryImageVersionStorageProfile.GallerySource.VirtualMachineID)에서 VirtualMachineId 필드를 사용합니다. 새 속성에는 api-version 2023-07-03 또는 .NET SDK 버전 1.4.0(또는 그 이상)이 필요합니다.

StorageProfile = new GalleryImageVersionStorageProfile()
            {
                GallerySource = new GalleryArtifactVersionFullSource()
                {
                    VirtualMachineId = new ResourceIdentifier(virtualMachineId),
                }
            },

VHD를 원본으로 사용하려면 OSDiskImage 또는 데이터 디스크 이미지(GalleryImageVersionStorageProfile.OSDiskImage.GallerySource.StorageAccountId)에서 GallerySource 아래에 있는 StorageAccountID 필드를 사용합니다. 새 속성에는 api 버전 2022-03-03이 필요합니다.

StorageProfile = new GalleryImageVersionStorageProfile()
            {
                OSDiskImage = new GalleryOSDiskImage()
                {
                    GallerySource = new GalleryDiskImageSource()
                    {
                        StorageAccountId = new ResourceIdentifier(storageAccountId),
                        Uri = new Uri(blobUri),
                    }
                }
            },

문제 해결

갤러리 리소스에 대한 작업을 수행하는 동안 문제가 발생한 경우 문제 해결 가이드에서 일반적인 오류 목록을 참조하세요.

또한 Q&A에서 azure-virtual-machines-images에 대한 질문을 게시하고 태그를 지정할 수 있습니다.

다음 단계

Azure Compute Gallery를 사용하여 이미지를 배포하는 방법을 알아봅니다.