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 구매 계획 정보 제공을 참조하세요.아키텍처
- x64 또는 ARM64 아키텍처
기능을 사용하면 갤러리 유형에 따라 이미지에서 지원되는 추가 기능 및 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의 컴퓨터 이름을 사용합니다. 충돌을 방지하려면 컴퓨터 이름을 변경해야 합니다.
osProfile
은secrets
를 사용하여 중요한 정보를 VM에 전달하는 방식을 결정합니다. 이로 인해 KeyVault, WinRM 및osProfile
의secrets
를 사용하는 기타 기능을 사용할 때 문제가 발생할 수 있습니다. 경우에 따라 MSI(관리되는 서비스 ID)를 사용하여 이러한 제한을 해결할 수도 있습니다.
리소스 업데이트
갤러리 리소스를 만든 후 변경할 수 있습니다. 다음과 같은 제한이 있습니다.
Azure Compute Gallery:
- 설명
이미지 정의:
- 권장 vCPU
- 권장 메모리
- 설명
- 수명 주기 끝
- ReleaseNotes
이미지 버전:
- 지역 복제본 수
- 대상 지역
- 최신 항목에서 제외
- 수명 주기 끝
공유
공유하려는 사용자에 따라 Azure Compute Gallery의 이미지를 공유하는 세 가지 주요 방법이 있습니다.
다음을 사용하여 공유: | 사람 | Groups | 서비스 주체 | 특정 구독(또는) 테넌트 내의 모든 사용자 | Azure의 모든 사용자와 공개적으로 공유 |
---|---|---|---|---|---|
RBAC 공유 | 예 | 네 | 네 | 없음 | 아니요 |
RBAC + 직접 공유 갤러리 | 예 | 네 | 네 | 네 | 아니요 |
RBAC + 커뮤니티 갤러리 | 예 | 네 | 네 | 없음 | 예 |
ACG 이미지를 만드는 데 필요한 RBAC 권한은 다음과 같습니다.
ACG 이미지는 가상 머신, 디스크/스냅샷 및 VHD를 비롯한 다양한 원본의 사용자가 만들 수 있습니다. 이 섹션에서는 Azure Compute 갤러리 이미지를 만드는 데 필요한 다양한 사용자 권한을 간략하게 설명합니다. 필요한 권한이 없는 식별자는 ACG 이미지를 만들 수 없습니다.
- 사용자는 ACG 이미지 버전을 만들려면 Virtual Machine에 대한 쓰기 권한이 필요합니다.
- 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 Compute Gallery 리소스를 나열하는 방법은 무엇인가요?
- 기존 이미지를 Azure Compute Gallery로 이동할 수 있나요?
- 특수화 디스크로 이미지 버전을 만들 수 있나요?
- Azure Compute Gallery 리소스를 만든 후 다른 구독으로 이동할 수 있나요?
- 21Vianet에서 운영하는 Microsoft Azure, Azure 독일 또는 Azure Government Cloud 등의 클라우드 간에 이미지 버전을 복제할 수 있나요?
- 이미지 버전을 구독 간에 복제할 수 있나요?
- Microsoft Entra 테넌트 간에 이미지 버전을 공유할 수 있나요?
- 대상 지역 간에 이미지 버전을 복제하려면 얼마나 걸리나요?
- 원본 지역과 대상 지역의 차이점은 무엇인가요?
- 이미지 버전을 만드는 동안 원본 영역을 지정하는 방법은 무엇인가요?
- 각 지역에 만들 이미지 버전 복제본 수를 지정하는 방법은 무엇인가요?
- 이미지 정의 및 이미지 버전을 만드는 위치와 다른 위치에 갤러리를 만들 수 있나요?
- Azure Compute Gallery 사용 요금은 어떻게 되나요?
- 이미지를 만들 때 어떤 API 버전을 사용해야 하나요?
- 이미지 버전으로 VM 또는 Virtual Machine Scale Set를 만들려면 어떤 API 버전을 사용해야 하나요?
- 관리형 이미지를 사용하여 만든 Virtual Machine Scale Set가 Azure Compute Gallery 이미지를 사용하도록 업데이트할 수 있나요?
- 새 속성을 사용하도록 코드를 업데이트하고 VM 이미지를 만드는 동안 사용 권한이 정확하게 부여되도록 하려면 어떻게 해야 하나요?
구독 간에 모든 Azure Compute Gallery 리소스를 나열하는 방법은 무엇인가요?
Azure Portal에서 액세스할 수 있는 구독 간에 Azure Compute Gallery 리소스를 모두 나열하려면 아래 단계를 따르세요.
- Azure Portal을 엽니다.
- 페이지를 아래로 스크롤하고 모든 리소스를 선택합니다.
- 모든 리소스를 나열하려는 모든 구독을 선택합니다.
- Azure Compute Gallery 형식의 리소스를 찾습니다.
사용 권한이 있는 구독 간에 Azure Compute Gallery 리소스를 나열하려면 Azure CLI에서 다음 명령을 사용하세요.
az account list -otsv --query "[].id" | xargs -n 1 az sig list --subscription