๊ฐ€์ƒ ์–ดํ”Œ๋ผ์ด์–ธ์Šค ๊ฐ€์ ธ์˜ค๊ธฐ


๊ฐ€์ƒ ์–ดํ”Œ๋ผ์ด์–ธ์Šค๋Š” ๊ฐ€์ƒ ๋จธ์‹ (VM) ์ธ์Šคํ„ด์Šค์˜ ๋””์Šคํฌ ์ด๋ฏธ์ง€ ๋ฐ ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ์ด ํฌํ•จ๋œ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค.

๊ฐ€์ƒ ์–ดํ”Œ๋ผ์ด์–ธ์Šค์— ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํ˜•์‹์€ OVF ํ˜•์‹์ž…๋‹ˆ๋‹ค. ๊ฐ€์ƒ ์–ดํ”Œ๋ผ์ด์–ธ์Šค๋ฅผ OVF ํ˜•์‹์œผ๋กœ ํŒจํ‚ค์ง•ํ•˜๋ฉด OVF ํŒจํ‚ค์ง€๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. OVF ํŒจํ‚ค์ง€๋Š” ํ•˜๋‚˜์˜ .ovf ์„ค๋ช…์ž ํŒŒ์ผ๊ณผ ๋””์Šคํฌ ๋“ฑ์˜ ๊ธฐํƒ€ ๋ฆฌ์†Œ์Šค ์ปฌ๋ ‰์…˜์ด ํฌํ•จ๋œ ํด๋”์ž…๋‹ˆ๋‹ค. OVF ํŒจํ‚ค์ง€๊ฐ€ ๋‹จ์ผ ํŒŒ์ผ๋กœ ๋ณด๊ด€์ฒ˜๋ฆฌ๋˜๋ฉด ์ด๋ฅผ OVA ํŒŒ์ผ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€์—์„œ๋Š” Compute Engine์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ƒ ์–ดํ”Œ๋ผ์ด์–ธ์Šค์—์„œ ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋‹จ๊ณ„๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

์ง€์›๋˜๋Š” ํŒŒ์ผ ํ˜•์‹

Compute Engine์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ๋จธ์‹  ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Open Virtualization Format(OVF): ๋™์ผํ•œ ๋ฒ„ํ‚ท์— ์žˆ๋Š” ํ•˜๋‚˜์˜ OVF ํŒŒ์ผ๊ณผ ๊ฐ€์ƒ ๋จธ์‹  ๋””์Šคํฌ(VMDK) ํŒŒ์ผ

  • Open Virtual Appliance(OVA): OVF ํŒŒ์ผ๊ณผ ๋””์Šคํฌ ํŒŒ์ผ์ด ํฌํ•จ๋œ ํ•˜๋‚˜์˜ OVA ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. Compute Engine์€ ๋‹ค์Œ ๋””์Šคํฌ ํŒŒ์ผ ํ˜•์‹์˜ OVA ๋จธ์‹  ์ด๋ฏธ์ง€ ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

    • ๊ฐ€์ƒ ๋จธ์‹  ๋””์Šคํฌ(VMDK)
    • QEMU copy-on-write(QCOW)
    • QEMU copy-on-write 2(QCOW2)
    • QEMU ํ–ฅ์ƒ๋œ ๋””์Šคํฌ ํ˜•์‹(QED)
    • VPC
    • ๊ฐ€์ƒ ๋””์Šคํฌ ์ด๋ฏธ์ง€(VDI)
    • ๊ฐ€์ƒ ํ•˜๋“œ ๋””์Šคํฌ v2(VHDX)

์ œํ•œ์‚ฌํ•ญ

๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ œํ•œ์‚ฌํ•ญ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • 4์„ธ๋Œ€ ๋จธ์‹  ์‹œ๋ฆฌ์ฆˆ๋Š” Google Cloud Hyperdisk ๋ณผ๋ฅจ์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ARM ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜ ๋จธ์‹  ์ด๋ฏธ์ง€๋Š” ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†Œ์Šค VM์—์„œ๋Š” ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    • ์—ฐ๊ฒฐ๋œ ๋””์Šคํฌ๊ฐ€ 200TB๋ฅผ ์ดˆ๊ณผ
    • A4, A3, C3D, H3 ๋˜๋Š” Z3 ๋จธ์‹  ์œ ํ˜•

๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค

Compute Engine์„ ์‚ฌ์šฉํ•˜์—ฌ ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ Compute Engine ๋จธ์‹  ์ด๋ฏธ์ง€๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ๊ฐ€์ ธ์˜ฌ ๋จธ์‹  ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ค€๋น„
  2. ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ ์„ ํƒ
  3. Compute Engine์œผ๋กœ ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ

๊ฐ€์ ธ์˜ฌ ๋จธ์‹  ํŒŒ์ผ ์ค€๋น„

๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ Compute Engine ์ด๋ฏธ์ง€๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋จผ์ € ๊ฐ€์ ธ์˜ฌ ๋จธ์‹  ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ์ค€๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ž‘์—…์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Cloud Storage์— ๋จธ์‹  ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ถ”๊ฐ€

๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ Compute Engine ๋จธ์‹  ์ด๋ฏธ์ง€๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋จผ์ € Cloud Storage์— ๋จธ์‹  ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ๊ฐ์ฒด ์—…๋กœ๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋ ค๋ฉด ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๋ ค๋Š” Google Cloud ์™€ ๋™์ผํ•œ ๋ฒ„ํ‚ท์— ๋จธ์‹  ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ํ•„์ˆ˜ ๊ถŒํ•œ ๋ถ€์—ฌ

๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ Compute Engine ๋จธ์‹  ์ด๋ฏธ์ง€๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋‹ค์Œ ํ‘œ์— ์„ค๋ช…๋œ ๋Œ€๋กœ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

์—ญํ•  ๊ถŒํ•œ ํ•„์š” ์„ค๋ช…
์Šคํ† ๋ฆฌ์ง€ ๊ฐ์ฒด ๋ทฐ์–ด roles/storage.objectViewer ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ(service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com)์˜ ๊ธฐ๋ณธ Migrate to Virtual Machines ์„œ๋น„์Šค ๊ณ„์ •์— ๊ฐ€์ ธ์˜ฌ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š” ๋ฒ„ํ‚ท์˜ roles/storage.objectViewer ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ถŒํ•œ์„ ์‚ฌ์šฉํ•˜๋ฉด Migrate to Virtual Machines๊ฐ€ ์†Œ์Šค ์ด๋ฏธ์ง€์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
VM Migration ๊ด€๋ฆฌ์ž roles/vmmigration.admin ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ์†Œ์Šค ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์‚ฌ์šฉ์ž ๊ณ„์ •์— roles/vmmigration.admin ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
VM Migration ์„œ๋น„์Šค ๊ณ„์ • roles/vmmigration.serviceAgent ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ(service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com)์˜ ๊ธฐ๋ณธ Migrate to Virtual Machines ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ์˜ roles/vmmigration.serviceAgent ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด service-1234567890@gcp-sa-vmmigration.iam.gserviceaccount.com์ด ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ Migrate to Virtual Machines ์„œ๋น„์Šค ๊ณ„์ •์ธ ๊ฒฝ์šฐ ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ์ด ์„œ๋น„์Šค ๊ณ„์ •์— roles/vmmigration.serviceAgent ์—ญํ• ์„ ๋ถ€์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์ƒ ํ”„๋กœ์ ํŠธ ์„ ํƒ

๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋ ค๋ฉด ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ๋Š” ๋จธ์‹  ์ด๋ฏธ์ง€์˜ ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ ์ถ”๊ฐ€๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Compute Engine์œผ๋กœ ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ

Google Cloud CLI ๋˜๋Š” REST API ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ Compute Engine์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด Compute Engine์—์„œ ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ์— VM ๋˜๋Š” ๋””์Šคํฌ์™€ ๊ฐ™์€ ์ž„์‹œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž„์‹œ ๋ฆฌ์†Œ์Šค๋Š” ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

gcloud

Google Cloud CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Compute Engine์— ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋‹ค์Œ ์š”์ฒญ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

gcloud alpha migration vms machine-image-imports create IMAGE_NAME \
--source-file=SOURCE_FILE \
--location=REGION_ID \
--target-project=projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • IMAGE_NAME: ๋งŒ๋“ค๋ ค๋Š” ๋จธ์‹  ์ด๋ฏธ์ง€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„ ์ง€์ • ๊ทœ์น™์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฆ„ ์ง€์ • ๊ทœ์น™์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  • SOURCE_FILE: ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. gs://bucket/folder/file ํ˜•์‹์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„ํ‚ท ๋‚ด๋ถ€์˜ ๊ฐ์ฒด ๊ฒฝ๋กœ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๊ฐ์ฒด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณด๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. .ovf ๋ฐ .ova ํŒŒ์ผ์—์„œ๋งŒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • REGION_ID: ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค. ๋จธ์‹  ์ด๋ฏธ์ง€๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฉ€ํ‹ฐ ๋ฆฌ์ „์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ์ „์— ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด singleRegionStorage๊ฐ€ true๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๋ฆฌ์ „ ๋ชฉ๋ก์€ ๋ฆฌ์ „ ๋ฐ ์˜์—ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  • HOST_PROJECT_ID: ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • TARGET_PROJECT: ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ๋ฅผ ์•„์ง ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜์œผ๋ฉด ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ ์ถ”๊ฐ€์— ๋‚˜์˜จ ์•ˆ๋‚ด์— ๋”ฐ๋ผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • REGION_ID: ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค. ๋จธ์‹  ์ด๋ฏธ์ง€๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฉ€ํ‹ฐ ๋ฆฌ์ „์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ์ „์— ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด singleRegionStorage๊ฐ€ true๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๋ฆฌ์ „ ๋ชฉ๋ก์€ ๋ฆฌ์ „ ๋ฐ ์˜์—ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ž์„ธํ•œ ๋‚ด์šฉ์€ gcloud migration vms machine-image-imports์„ ์ฐธ์กฐํ•˜์„ธ์š”.

REST API

REST API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ Compute Engine์œผ๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ๋‹ค์Œ ์š”์ฒญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    POST https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports?imageImportId=IMPORT_NAME
    {
    "cloudStorageUri": "SOURCE_FILE",
    "machineImageTargetDefaults": {
    "imageName": "IMAGE_NAME",
    "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT",
    ...
    }
    }
    

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • HOST_PROJECT_ID: ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
    • REGION_ID: ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค. ๋จธ์‹  ์ด๋ฏธ์ง€๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฉ€ํ‹ฐ ๋ฆฌ์ „์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ์ „์— ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด singleRegionStorage๊ฐ€ true๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๋ฆฌ์ „ ๋ชฉ๋ก์€ ๋ฆฌ์ „ ๋ฐ ์˜์—ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
    • SOURCE_FILE: ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. gs://bucket/folder/file ํ˜•์‹์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„ํ‚ท ๋‚ด๋ถ€์˜ ๊ฐ์ฒด ๊ฒฝ๋กœ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๊ฐ์ฒด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณด๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. .ova ๋ฐ .ovf ํŒŒ์ผ์—์„œ๋งŒ ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • IMAGE_NAME: ๋งŒ๋“ค๋ ค๋Š” ๋จธ์‹  ์ด๋ฏธ์ง€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„ ์ง€์ • ๊ทœ์น™์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฆ„ ์ง€์ • ๊ทœ์น™์„ ์ฐธ์กฐํ•˜์„ธ์š”.
    • TARGET_PROJECT: ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ๋ฅผ ์•„์ง ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜์œผ๋ฉด ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ ์ถ”๊ฐ€์— ๋‚˜์˜จ ์•ˆ๋‚ด์— ๋”ฐ๋ผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    ์ด ์˜ˆ์‹œ์—์„œ IMPORT_NAME์€ ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ID์ž…๋‹ˆ๋‹ค. Compute Engine์œผ๋กœ ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด Migrate to Virtual Machines์—์„œ ๋จผ์ € ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฆฌ์†Œ์Šค๋Š” ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. IMPORT_NAME์„ ์‚ฌ์šฉํ•˜๋ฉด ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๋กœ ๊ฐ€์ ธ์˜จ ๋จธ์‹  ์ด๋ฏธ์ง€์˜ ๋งํฌ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ๋งŒ๋“ค๊ธฐ ์š”์ฒญ์ด ์ง€์›๋˜๋Š” ํ•„๋“œ์˜ ์ „์ฒด ๋ชฉ๋ก์€ ๋‹ค์Œ ํ‘œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ํ•„๋“œ ์ด๋ฆ„ ์„ค๋ช…
    cloudStorageUri ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. gs://bucket/folder/file ํ˜•์‹์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„ํ‚ท ๋‚ด๋ถ€์˜ ๊ฐ์ฒด ๊ฒฝ๋กœ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๊ฐ์ฒด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณด๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
    .ovf ๋ฐ .ova ํŒŒ์ผ์—์„œ๋งŒ ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    machineImageTargetDefaults.targetProject ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ API ์ฐธ์กฐ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT
    ์ด ์˜ˆ์‹œ์—์„œ ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    • HOST_PROJECT_ID: ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
    • TARGET_PROJECT: ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.
    machineImageTargetDefaults.machine_image_name ๋งŒ๋“ค๋ ค๋Š” ๋จธ์‹  ์ด๋ฏธ์ง€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„ ์ง€์ • ๊ทœ์น™์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„ ์ง€์ • ๊ทœ์น™์„ ์ฐธ์กฐํ•˜์„ธ์š”.
    machineImageTargetDefaults.description (์„ ํƒ์‚ฌํ•ญ) ๋จธ์‹  ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.
    machineImageTargetDefaults.machine_type (์„ ํƒ์‚ฌํ•ญ) ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ๋จธ์‹ ์ž…๋‹ˆ๋‹ค. ๋จธ์‹  ์œ ํ˜•์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด Compute Engine์ด ์†Œ์Šค ๋จธ์‹  ์ด๋ฏธ์ง€์˜ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ด€๋ จ ๋จธ์‹  ์œ ํ˜•์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    machineImageTargetDefaults.labels ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ๋ฆฌ์†Œ์Šค์— ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ๋ผ๋ฒจ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”. ๋ฆฌ์†Œ์Šค ๋ผ๋ฒจ ์ง€์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.
    machineImageTargetDefaults.tags ๋จธ์‹  ์ด๋ฏธ์ง€์— ์—ฐ๊ฒฐํ•  ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค์˜ ํƒœ๊ทธ ๊ด€๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
    machineImageTargetDefaults.additionalLicenses ์œ ํšจํ•œ URL ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ ธ์˜จ ๋จธ์‹  ์ด๋ฏธ์ง€์—์„œ ๋งŒ๋“  VM ์ธ์Šคํ„ด์Šค์— ๋ผ์ด์„ ์Šค๋ฅผ ์ตœ๋Œ€ 10๊ฐœ๊นŒ์ง€ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ URL ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ผ์ด์„ ์Šค๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
    machineImageTargetDefaults.service_account ๋จธ์‹  ์ด๋ฏธ์ง€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ์˜ ์„œ๋น„์Šค ๊ณ„์ •์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋จธ์‹  ์ด๋ฏธ์ง€์—๋Š” ์„œ๋น„์Šค ๊ณ„์ •์ด ํ• ๋‹น๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    ๋จธ์‹  ์ด๋ฏธ์ง€์—์„œ Compute Engine ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์ด ์ธ์Šคํ„ด์Šค์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ธ์Šคํ„ด์Šค์— ๋‹ค๋ฅธ gcloud CLI ์„œ๋น„์Šค ๋ฐ API์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Compute Engine ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค ๋ฐ API์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ์— ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ํ›„ ์—ฌ๊ธฐ์— ์„œ๋น„์Šค ๊ณ„์ •์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ VM์„ ์„œ๋น„์Šค ๊ณ„์ •์œผ๋กœ ์‹คํ–‰๋˜๋„๋ก ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.
    Compute Engine ์ธ์Šคํ„ด์Šค์— ์„œ๋น„์Šค ๊ณ„์ •์„ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด Compute Engine ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ์‚ฌ์šฉ์ž ๊ณ„์ •์— ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ ์„œ๋น„์Šค ๊ณ„์ •์˜ ๊ถŒํ•œ ๊ตฌ์„ฑ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
    machineImageTargetDefaults.shielded_instance_config (์„ ํƒ์‚ฌํ•ญ) ์ด ์ธ์Šคํ„ด์Šค์—์„œ ๋ณด์•ˆ VM์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ VM์€ ๋ฃจํŠธํ‚ท๊ณผ ๋ถ€ํŠธํ‚ท์„ ์ฐจ๋‹จํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋ณด์•ˆ ์ œ์–ด ์„ธํŠธ๋กœ ๊ฐ•ํ™”ํ•œ ๊ฐ€์ƒ ๋จธ์‹ (VM)์ž…๋‹ˆ๋‹ค. ๋ณด์•ˆ VM์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
    machineImageTargetDefaults.singleRegionStorage ๋จธ์‹  ์ด๋ฏธ์ง€ storageLocations๋ฅผ ๋ฆฌ์ „์œผ๋กœ ์ง€์ •ํ•˜๋ ค๋ฉด ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ false๋กœ ์„ค์ •ํ•˜๋ฉด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฉ€ํ‹ฐ ๋ฆฌ์ „์ด ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.
    machineImageTargetDefaults.skip_os_adaptation OS ์กฐ์ •์„ ๊ฑด๋„ˆ๋›ฐ๋ ค๋ฉด ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    Google Cloud์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์ ธ์˜จ ๋จธ์‹  ์ด๋ฏธ์ง€์—์„œ ๋งŒ๋“  VM์˜ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ์„ OS ์กฐ์ •์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Compute Engine์€ ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค์—์„œ ์ž๋™์œผ๋กœ OS ์กฐ์ •์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Google Cloud์—์„œ ์‹คํ–‰๋˜๋„๋ก VM ์ธ์Šคํ„ด์Šค ์กฐ์ •์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
    machineImageTargetDefaults.osAdaptationParameters.licenseType ๋จธ์‹  ์ด๋ฏธ์ง€์— ์‚ฌ์šฉํ•  ๋ผ์ด์„ ์Šค ์œ ํ˜•์ž…๋‹ˆ๋‹ค. Compute Engine์—์„œ๋Š” ๋ฐฐํฌ๋œ VM์— ์‚ฌ์šฉํ•œ ๋งŒํผ๋งŒ ์ง€๋ถˆ(PAYG) ๋ผ์ด์„ ์Šค์™€ ์‚ฌ์šฉ์ž ๋ผ์ด์„ ์Šค ์‚ฌ์šฉ(BYOL)์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ VM์˜ ๊ธฐ๋ณธ ๋ผ์ด์„ ์Šค ์œ ํ˜•์€ ์ง€์›๋˜๋Š” ์šด์˜์ฒด์ œ์˜ ์„ค๋ช…๋Œ€๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ์šด์˜์ฒด์ œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ Compute Engine์— ์˜ํ•ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
    ์šด์˜์ฒด์ œ์—์„œ ๋ผ์ด์„ ์Šค ์œ ํ˜•์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ ๋ผ์ด์„ ์Šค ์œ ํ˜•์„ ์žฌ์ •์˜ํ•˜์—ฌ PAYG ๋˜๋Š” BYOL์˜ ๋ผ์ด์„ ์Šค ์œ ํ˜•์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    machineImageTargetDefaults.osAdaptationParameters.network_interfaces Compute Engine์„ ์‚ฌ์šฉํ•˜๋ฉด ์„ ํƒ์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค(NIC)๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ํฌํ•จ๋œ ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ VPC ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋˜๋ฏ€๋กœ ๋จธ์‹  ์ด๋ฏธ์ง€๊ฐ€ gcloud CLI ๋‚ด ์—ฌ๋Ÿฌ VPC ๋„คํŠธ์›Œํฌ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ๊ณ ๋ ค์‚ฌํ•ญ์— ์œ ์˜ํ•˜์„ธ์š”.
    • ๋™์ผํ•œ VPC ๋„คํŠธ์›Œํฌ์— ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์ด ์ €์žฅ๋  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ VM์˜ ์ธ์Šคํ„ด์Šคํ™”๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
    • Compute Engine ์ธ์Šคํ„ด์Šค๊ฐ€ ๋จธ์‹  ์ด๋ฏธ์ง€์—์„œ ์ธ์Šคํ„ด์Šคํ™”๋œ ํ›„์—๋Š” test-clone ๋˜๋Š” cut-over๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค์—์„œ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋Œ€์ƒ ์„ธ๋ถ€์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ด test-clone ๋˜๋Š” cut-over๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.
      • ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•˜์—ฌ Compute Engine ์ธ์Šคํ„ด์Šค์— ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜ต์…˜๊ณผ ๋™์ผํ•œ ์˜ต์…˜์„ ๋ชจ๋‘ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๋Ÿฌ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํฌํ•จ๋œ ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
    machineImageTargetDefaults.osAdaptationParameters.generalize ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ์ผ๋ฐ˜ํ™”ํ•˜๋ ค๋ฉด ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    ๋จธ์‹  ์ด๋ฏธ์ง€์—์„œ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋ฉด Windows์—์„œ ์ผ๋ถ€ ๊ณ ์œ ํ•œ ์ •๋ณด๋ฅผ ์ธ์Šคํ„ด์Šค์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ํ™”๋Š” ๋™์ผํ•œ ๋จธ์‹  ์ด๋ฏธ์ง€์—์„œ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ์ด ์ •๋ณด๋ฅผ ์‚ญ์ œํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค.
    machineImageTargetDefaults.encryption ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค ์ค‘์— ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  Google-owned and Google-managed encryption key ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ธฐ๋ณธ ์ €์žฅ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ๊ณ ๊ฐ ๊ด€๋ฆฌ ์•”ํ˜ธํ™” ํ‚ค(CMEK)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋จธ์‹  ์ด๋ฏธ์ง€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด๋Ÿฌํ•œ ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•˜๋ฉฐ ์†Œ์œ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud KMS ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ๋ณดํ˜ธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
    CMEK๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” ๋‹ค์Œ ํ‘œ์— ์„ค๋ช…๋œ ๋Œ€๋กœ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ์—ญํ•  ๊ถŒํ•œ ํ•„์š” ์„ค๋ช…
    Cloud VM Migration ์„œ๋น„์Šค ๊ณ„์ • roles/vmmigration.serviceAgent ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค ์ค‘์— ์ƒ์„ฑ๋œ ๋จธ์‹  ์ด๋ฏธ์ง€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋„๋ก Compute Engine ์„œ๋น„์Šค ๊ณ„์ •์— ์ด ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
    Compute Engine ์„œ๋น„์Šค ์—์ด์ „ํŠธ roles/compute.serviceAgent Compute Engine ์„œ๋น„์Šค ์—์ด์ „ํŠธ์— ์ด ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์—ฌ ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค ์ค‘์— ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ ์ƒ˜ํ”Œ ์‘๋‹ต๊ณผ ์œ ์‚ฌํ•œ ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    {
      "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID",
      "metadata": {
        "createTime": "2023-10-31T09:12:26.94928636Z",
        "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME",
        "verb": "create",
        "apiVersion": "v1",
        "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata"
      }
    }
    
  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ํด๋งํ•˜์—ฌ ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID
    

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • HOST_PROJECT_ID: ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
    • REGION_ID: ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค. ๋จธ์‹  ์ด๋ฏธ์ง€๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฉ€ํ‹ฐ ๋ฆฌ์ „์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ์ „์— ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด singleRegionStorage๊ฐ€ true๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๋ฆฌ์ „ ๋ชฉ๋ก์€ ๋ฆฌ์ „ ๋ฐ ์˜์—ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
    • OPERATION_ID: ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ž‘์—…์˜ ์ž‘์—… ID์ž…๋‹ˆ๋‹ค.

    ๋‹ค์Œ ์ƒ˜ํ”Œ ์‘๋‹ต๊ณผ ์œ ์‚ฌํ•œ ์ž‘์—… ์™„๋ฃŒ ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

      {
        "done": true,
        "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID",
        "response": {
          "@type": "type.googleapis.com/google.cloud.vmmigration.v1.ImageImport",
          "name": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME",
          "cloudStorageUri": "SOURCE_FILE",
          "createTime": "2023-10-31T09:04:04.413664947Z",
          "machineImageTargetDefaults": {
            "imageName": "IMAGE_NAME",
            "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
          },
          "recentImageImportJobs": [
            {
              "name": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job",
              "diskImageTargetDetails": {
               "imageName": "IMAGE_NAME",
               "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
            },
             "state": "PENDING"
           }
          ]
        },
        "metadata": {
          "createTime": "2023-10-31T09:04:04.416740716Z",
          "endTime": "2023-10-31T09:05:36.79987142Z",
          "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME",
          "verb": "create",
          "apiVersion": "v1",
          "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata"
        }
      }
    
  3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

    GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports/IMPORT_NAME/imageImportJobs/image-import-job
    

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • HOST_PROJECT_ID: ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
    • REGION_ID: ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค. ๋จธ์‹  ์ด๋ฏธ์ง€๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฉ€ํ‹ฐ ๋ฆฌ์ „์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ์ „์— ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด singleRegionStorage๊ฐ€ true๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๋ฆฌ์ „ ๋ชฉ๋ก์€ ๋ฆฌ์ „ ๋ฐ ์˜์—ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
    • IMPORT_NAME: ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ID์ž…๋‹ˆ๋‹ค. Compute Engine์œผ๋กœ ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด Migrate to Virtual Machines์—์„œ ๋จผ์ € ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฆฌ์†Œ์Šค๋Š” ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. IMPORT_NAME์„ ์‚ฌ์šฉํ•˜๋ฉด ๋จธ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๋กœ ๊ฐ€์ ธ์˜จ ๋จธ์‹  ์ด๋ฏธ์ง€์˜ ๋งํฌ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋‹ค์Œ ์ƒ˜ํ”Œ ์‘๋‹ต๊ณผ ์œ ์‚ฌํ•œ ์ž‘์—… ์™„๋ฃŒ ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    {
      "createTime":"2023-10-31T09:12:27.053788394Z",
      "createdResources":[
        "https://www.googleapis.com/compute/v1/projects/USER_PROJECT/global/images/IMAGE_NAME"
      ],
      "diskImageTargetDetails": {
        "imageName":"IMAGE_NAME",
        "targetProject":"projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
      },
      "endTime":"2023-10-31T09:16:50.224865783Z",
      "name":"projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job",
      "state":"SUCCEEDED"
    }
    

๋‹ค์Œ ๋‹จ๊ณ„