์ํฌ๋ก๋ ์ด์์๋ ์คํ ์ ์ ๋์์ ํ์ธํ๊ธฐ ์ํด Confidential Space ์ํฌ๋ก๋ VM ์ธ์คํด์ค๋ก ์ต์ ์ ์ ๋ฌํ ์ ์์ต๋๋ค. ์ผ๋ถ ํ๋๊ทธ์๋ ๋ณ๊ฒฝ๋์ง ์๋ ํ์ ๊ฐ์ด ์์ง๋ง ๋ค์์ ์ ํํด์ผ ํฉ๋๋ค.
VM ์ธ์คํด์ค๋ฅผ ํ๋ก๋์ ๋๋ ๋๋ฒ๊ทธ Confidential Space ์ด๋ฏธ์ง์ ๊ธฐ๋ฐํ ์ง ์ฌ๋ถ์ ๋๋ค.
AMD SEV, Intel TDX ๋๋ Intel TDX์ NVIDIA ์ปจํผ๋ด์ ์ปดํจํ (๋ฏธ๋ฆฌ๋ณด๊ธฐ)์ ์ฌ์ฉํ์ฌ ์ํฌ๋ก๋ ๋ฐ์ดํฐ๋ฅผ ๋น๊ณต๊ฐ๋ก ์ ์งํ ์ง ์ฌ๋ถ์ ๋๋ค.
์คํํ ์ํฌ๋ก๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง, Cloud Logging์ ๋ก๊น ํ ์ง ์ฌ๋ถ, ์ค์ ํ ํ๊ฒฝ ๋ณ์์ ๊ฐ์ ์ธ๋ถ์ ๋ณด๋ฅผ ํฌํจํ๋ VM ๋ฉํ๋ฐ์ดํฐ ๋ณ์๋ฅผ ์ ๋ฌํด์ผ ํฉ๋๋ค.
์ํฌ๋ก๋๋ฅผ ์คํํ๊ธฐ ์ํด VM์ ์ฐ๊ฒฐํ ์๋น์ค ๊ณ์ ๊ณผ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ปจํผ๋ด์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ด๋๊ฐ์ ์ธ ์ ์๋ ๊ถํ
VM ์ธ์คํด์ค๊ฐ ์คํ๋์ด์ผ ํ๋ ์์ญ์ ๋๋ค.
๋ค์์ ์ปจํผ๋ด์ VM์ ๋ง๋ค๊ณ WORKLOAD_CONTAINER_NAME๋ผ๋ Docker ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ์์์ ๋๋ค.
CPU ๊ธฐ๋ฐ ์ํฌ๋ก๋
gcloud compute instances create INSTANCE_NAME \
--confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
--machine-type=MACHINE_TYPE_NAME \
--maintenance-policy=MAINTENANCE_POLICY \
--shielded-secure-boot \
--image-project=confidential-space-images \
--image-family=IMAGE_FAMILY \
--metadata="^~^tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest" \
--service-account=WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com \
--scopes=cloud-platform \
--zone=ZONE_NAME \
--project=PROJECT_ID
๋ค์ ๊ฐ์ ์ ๊ณตํฉ๋๋ค.
INSTANCE_NAME
: ์ VM ์ธ์คํด์ค์ ์ด๋ฆ์ ๋๋ค.CONFIDENTIAL_COMPUTING_TECHNOLOGY
: ์ฌ์ฉํ ์ปจํผ๋ด์ ์ปดํจํ ๊ธฐ์ ์ ์ ํ์ ๋๋ค. ๋ค์ ๊ฐ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.SEV
TDX
MACHINE_TYPE_NAME
: VM ๋จธ์ ์ ํ์ ๋๋ค(์:n2d-standard-2
). ์ปจํผ๋ด์ VM ์ธ์คํด์ค์ ์ ํจํ ๋จธ์ ์ ํ์ ์ ํํ ์ปจํผ๋ด์ ์ปดํจํ ๊ธฐ์ (AMD SEV ๋๋ Intel TDX)์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. ๋จธ์ ์ ํ, CPU, ์์ญ์ ์ฐธ๊ณ ํ์ธ์.MAINTENANCE_POLICY
: SEV๋ฅผ ์ฌ์ฉํ๋ N2D ๋จธ์ ์ ํ์ ๊ฒฝ์ฐ ์ค์๊ฐ ๋ง์ด๊ทธ๋ ์ด์ ์ง์์ ์ํดMIGRATE
๋ก ์ค์ ํฉ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ๋จธ์ ์ ํ์ ๊ฒฝ์ฐ ๋ผ์ด๋ธ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ง์ํ์ง ์์ผ๋ฏ๋ก ์ด ๊ฐ์TERMINATE
๋ก ์ค์ ํฉ๋๋ค.IMAGE_FAMILY_NAME
: Confidential Space ์ด๋ฏธ์ง์ ๊ณ์ด์ ๋๋ค. ๋ค์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.confidential-space
ํ๋ก๋์ ์ํฌ๋ก๋๋๋ฒ๊ทธ ์ํฌ๋ก๋์ฉ
confidential-space-debug
WORKLOAD_AUTHOR_PROJECT
: ์ํฌ๋ก๋ ์ปจํ ์ด๋๊ฐ ์ ์ฅ๋ Artifact Registry ์ ์ฅ์๋ฅผ ํธ์คํ ํ๋ ํ๋ก์ ํธ์ ID์ ๋๋ค.REPOSITORY_NAME
: ์ํฌ๋ก๋ ์ปจํ ์ด๋๊ฐ ์ ์ฅ๋ Artifact Registry ์ ์ฅ์ ์ด๋ฆ์ ๋๋ค.WORKLOAD_CONTAINER_NAME
: ์ํฌ๋ก๋ ์ปจํ ์ด๋์ ์ด๋ฆ์ ๋๋ค.WORKLOAD_SERVICE_ACCOUNT_NAME
: ์ํฌ๋ก๋๋ฅผ ์คํํ๋ ์๋น์ค ๊ณ์ ์ ์ด๋ฆ์ ๋๋ค.WORKLOAD_OPERATOR_PROJECT_ID
: ์ํฌ๋ก๋๋ฅผ ์คํํ๋ ํ๋ก์ ํธ์ ID์ ๋๋ค.ZONE_NAME
: VM ์ธ์คํด์ค๊ฐ ์คํ๋๋ ์์ญ์ ๋๋ค(์:us-west1-b
). Confidential Space์๋ ํน์ ์์น์์ ์ ๊ณต๋๋ ๋ค์ ์๋น์ค๊ฐ ํ์ํฉ๋๋ค.์ฌ์ฉ ์ค์ธ ์ปจํผ๋ด์ ์ปดํจํ ๊ธฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ปจํผ๋ด์ VM
PROJECT_ID
: ์ ํ์ฌํญ. VM ์ธ์คํด์ค๋ฅผ ๋ง๋ค ํ๋ก์ ํธ์ ID์ ๋๋ค.
GPU ๊ธฐ๋ฐ ์ํฌ๋ก๋
์์ํ๊ธฐ ์ ์
์ปจํผ๋ด์ ์คํ์ด์ค๋ H100 GPU์์ NVIDIA ์ปจํผ๋ด์ ์ปดํจํ (ํ๋ฆฌ๋ทฐ)๋ง ์ง์ํฉ๋๋ค.
์์ฒญ ์ค์ธ ๋ฆฌ์์ค์ ๋ํด GPU ํ ๋น๋์ด ์ถฉ๋ถํ์ง ํ์ธํ๋ ค๋ฉด GPU ํ ๋น๋์ ํ์ธํ์ธ์. GPU๊ฐ ์๋ ์ปจํผ๋ด์ VM ์ธ์คํด์ค์ ๊ฒฝ์ฐ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ ์ ํ GPU ํ ๋น๋์ ์์ฒญํ์ธ์. GPU ํ ๋น๋์ ์์ฒญํ๋ ๊ฒฝ์ฐ ๊ฐ ๋ฆฌ์ ์ ์์ฑํ๋ ค๋ GPU ๋ชจ๋ธ์ ํ ๋น๋ ์ธ์๋ ๋ชจ๋ ๋ฆฌ์ ์ ์๋ ๋ชจ๋ ์ ํ์ ์ด GPU ์์ ์ ์ฉํ ์ ์ญ ํ ๋น๋(
GPUs (all regions)
)์ ์ถ๊ฐ๋ก ์์ฒญํด์ผ ํฉ๋๋ค.ํ ๋น๋ ์๋น๋ฅผ ์์๋ณด๋ ค๋ฉด GPU VM ๋ฐ ์ ์ ํ ๋ฐฐ์ ํ ๋น๋์ ์ฐธ๊ณ ํ์ธ์.
MIG์์ ํฌ๊ธฐ ์กฐ์ ์์ฒญ์ ๋ง๋ค๊ธฐ ์ํ ์ ํ์ฌํญ์ ์ฝ์ด๋ด ๋๋ค.
NVIDIA ์ปจํผ๋ด์ ์ปดํจํ (๋ฏธ๋ฆฌ๋ณด๊ธฐ)์ ํ์ํ ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํ๋ ค๋ฉด ๊ฐ์ด
true
์ธ ๋ฉํ๋ฐ์ดํฐ ๋ณ์tee-install-gpu-driver
๋ฅผ ์ ๋ฌํด์ผ ํฉ๋๋ค.NVIDIA ๋๋ผ์ด๋ฒ ๋ฐ CUDA ํดํท์ ๊ฒฝ์ฐ ๊ณต๊ฐ์ด 30GB ์ด์์ธ VM ๋ถํ ๋์คํฌ๊ฐ ๊ถ์ฅ๋ฉ๋๋ค.
GPU ๊ธฐ๋ฐ ์ํฌ๋ก๋ ๋ฐฐํฌ
GPU ๊ธฐ๋ฐ ์ํฌ๋ก๋๋ฅผ ๋ฐฐํฌํ๋ ค๋ฉด ์คํ ๋๋ flex-start(๋ฏธ๋ฆฌ๋ณด๊ธฐ) ํ๋ก๋น์ ๋ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์ปจํผ๋ด์ VM ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
์คํ
์คํ ํ๋ก๋น์ ๋ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ค๋ฉด ๊ฐ์๊ธฐ ์ต์ ํ VM ์ธ์คํด์ค๋ฅผ ๋ง๋์ธ์.
gcloud compute instances create INSTANCE_NAME \
--provisioning-model=SPOT \
--confidential-compute-type=TDX \
--machine-type=a3-highgpu-1g \
--maintenance-policy=TERMINATE \
--shielded-secure-boot \
--image-project=confidential-space-images \
--image-family=IMAGE_FAMILY_NAME \
--metadata="^~^tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest~tee-install-gpu-driver=true" \
--service-account=WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com \
--scopes=cloud-platform \
--boot-disk-size=30G \
--zone=ZONE_NAME \
--project=PROJECT_ID
๋ค์ ๊ฐ์ ์ ๊ณตํฉ๋๋ค.
INSTANCE_NAME
: ์ VM ์ธ์คํด์ค์ ์ด๋ฆ์ ๋๋ค.IMAGE_FAMILY_NAME
: Confidential Space ์ด๋ฏธ์ง์ ๊ณ์ด์ ๋๋ค. ๋ค์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.confidential-space-preview-cgpu
ํ๋ก๋์ ์ํฌ๋ก๋๋๋ฒ๊ทธ ์ํฌ๋ก๋์ฉ
confidential-space-debug-preview-cgpu
WORKLOAD_AUTHOR_PROJECT
: ์ํฌ๋ก๋๊ฐ ์คํ๋๋ ํ๋ก์ ํธ ID์ ๋๋ค.REPOSITORY_NAME
: Artifact Registry ์ ์ฅ์ ์ด๋ฆ์ ๋๋ค.WORKLOAD_CONTAINER_NAME
: ์ํฌ๋ก๋ ์ปจํ ์ด๋์ ์ด๋ฆ์ ๋๋ค.WORKLOAD_SERVICE_ACCOUNT_NAME
: ์ํฌ๋ก๋๋ฅผ ์คํํ๋ ์๋น์ค ๊ณ์ ์ ์ด๋ฆ์ ๋๋ค.WORKLOAD_OPERATOR_PROJECT_ID
: ์ํฌ๋ก๋๋ฅผ ์คํํ๋ ํ๋ก์ ํธ์ ID์ ๋๋ค.ZONE_NAME
: NVIDIA ์ปจํผ๋ด์ ์ปดํจํ ์ ์ง์ํ๋ ์์ญ(๋ฏธ๋ฆฌ๋ณด๊ธฐ) ์ค ํ๋์ ๋๋ค.PROJECT_ID
: ์ ํ์ฌํญ. VM ์ธ์คํด์ค๋ฅผ ๋ง๋ค ํ๋ก์ ํธ์ ID์ ๋๋ค.
์ ์ฐํ ์์
flex-start (๋ฏธ๋ฆฌ๋ณด๊ธฐ) ํ๋ก๋น์ ๋ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ค๋ฉด ์ธ์คํด์ค ํ ํ๋ฆฟ์ ๋ง๋ ๋ค์ ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน(MIG)์ ๋ง๋ญ๋๋ค.
์ธ์คํด์ค ํ ํ๋ฆฟ์ ๋ง๋ญ๋๋ค.
gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \ --provisioning-model=FLEX_START \ --confidential-compute-type=TDX \ --machine-type=a3-highgpu-1g \ --maintenance-policy=TERMINATE \ --shielded-secure-boot \ --image-project=confidential-space-images \ --image-family=IMAGE_FAMILY_NAME \ --metadata="^~^tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest~tee-install-gpu-driver=true" \ --service-account=WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com \ --scopes=cloud-platform \ --boot-disk-size=30G \ --reservation-affinity=none \ --max-run-duration=RUN_DURATION \ --instance-termination-action=DELETE \ --project=PROJECT_ID
๋ค์ ๊ฐ์ ์ ๊ณตํฉ๋๋ค.
INSTANCE_TEMPLATE_NAME
: ์ VM ์ธ์คํด์ค ํ ํ๋ฆฟ์ ์ด๋ฆ์ ๋๋ค.IMAGE_FAMILY_NAME
: Confidential Space ์ด๋ฏธ์ง์ ๊ณ์ด์ ๋๋ค. ๋ค์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.confidential-space-preview-cgpu
ํ๋ก๋์ ์ํฌ๋ก๋๋๋ฒ๊ทธ ์ํฌ๋ก๋์ฉ
confidential-space-debug-preview-cgpu
WORKLOAD_AUTHOR_PROJECT
: ์ํฌ๋ก๋๊ฐ ์คํ๋๋ ํ๋ก์ ํธ ID์ ๋๋ค.REPOSITORY_NAME
: Artifact Registry ์ ์ฅ์ ์ด๋ฆ์ ๋๋ค.WORKLOAD_CONTAINER_NAME
: ์ํฌ๋ก๋ ์ปจํ ์ด๋์ ์ด๋ฆ์ ๋๋ค.WORKLOAD_SERVICE_ACCOUNT_NAME
: ์ํฌ๋ก๋๋ฅผ ์คํํ๋ ์๋น์ค ๊ณ์ ์ ์ด๋ฆ์ ๋๋ค.WORKLOAD_OPERATOR_PROJECT_ID
: ์ํฌ๋ก๋๋ฅผ ์คํํ๋ ํ๋ก์ ํธ์ ID์ ๋๋ค.RUN_DURATION
: ์์ฒญ๋ VM ์ธ์คํด์ค๋ฅผ ์คํํ ๊ธฐ๊ฐ์ ๋๋ค. ๊ฐ๊ฐd
,h
,m
๋๋s
๋ฅผ ์ฌ์ฉํ์ฌ ์ผ, ์, ๋ถ ๋๋ ์ด ์์๋ก ๊ฐ ํ์์ ์ง์ ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด 30๋ถ์ ๊ฒฝ์ฐ30m
์, 1์ผ 2์๊ฐ 3๋ถ 4์ด์ ๊ฒฝ์ฐ1d2h3m4s
๋ฅผ ์ง์ ํฉ๋๋ค. ๊ฐ์ 10๋ถ~7์ผ ์ฌ์ด์ฌ์ผ ํฉ๋๋ค.PROJECT_ID
: ์ ํ์ฌํญ. VM ์ธ์คํด์ค๋ฅผ ๋ง๋ค ํ๋ก์ ํธ์ ID์ ๋๋ค.
instance-groups managed create
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์ญ MIG๋ฅผ ๋ง๋ญ๋๋ค.gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --template=INSTANCE_TEMPLATE_NAME \ --size=0 \ --zone=ZONE_NAME \ --default-action-on-vm-failure=do_nothing
๋ค์ ๊ฐ์ ์ ๊ณตํฉ๋๋ค.
INSTANCE_GROUP_NAME
: MIG ์ด๋ฆ์ ๋๋ค.INSTANCE_TEMPLATE_NAME
: GPU VM์ ์ธ์คํด์ค ํ ํ๋ฆฟ ์ด๋ฆ์ ๋๋ค.ZONE_NAME
: NVIDIA ์ปจํผ๋ด์ ์ปดํจํ ์ ์ง์ํ๋ ์์ญ(๋ฏธ๋ฆฌ๋ณด๊ธฐ) ์ค ํ๋์ ๋๋ค.
MIG์์ ํฌ๊ธฐ ์กฐ์ ์์ฒญ์ ๋ง๋ญ๋๋ค. ์ํ๋ GPU VM ์ธ์คํด์ค ์์ ํด๋น VM ์ธ์คํด์ค๋ฅผ ์คํํ ๊ธฐ๊ฐ์ ์ง์ ํฉ๋๋ค.
gcloud compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \ --resize-request=RESIZE_REQUEST_NAME \ --resize-by=COUNT \ --zone=ZONE_NAME
๋ค์ ๊ฐ์ ์ ๊ณตํฉ๋๋ค.
INSTANCE_GROUP_NAME
: MIG ์ด๋ฆ์ ๋๋ค.INSTANCE_TEMPLATE_NAME
: GPU VM ์ธ์คํด์ค์ ์ธ์คํด์ค ํ ํ๋ฆฟ ์ด๋ฆ์ ๋๋ค.ZONE_NAME
: NVIDIA ์ปจํผ๋ด์ ์ปดํจํ ์ ์ง์ํ๋ ์์ญ(๋ฏธ๋ฆฌ๋ณด๊ธฐ) ์ค ํ๋์ ๋๋ค.RESIZE_REQUEST_NAME
: ํฌ๊ธฐ ์กฐ์ ์์ฒญ์ ์ด๋ฆCOUNT
: ๊ทธ๋ฃน์ ํ ๋ฒ์ ๋ชจ๋ ์ถ๊ฐํ VM ์ธ์คํด์ค ์์ ๋๋ค.
์์ฑํ ํฌ๊ธฐ ์กฐ์ ์์ฒญ์ MIG๊ฐ ์์ฒญํ ๋ชจ๋ GPU VM ์ธ์คํด์ค๋ฅผ ๋ง๋ค ๋๊น์ง
ACCEPTED
์ํ๋ก ์ ์ง๋ฉ๋๋ค. ๊ทธ๋ฃน์ ๋ชจ๋ GPU VM ์ธ์คํด์ค๊ฐ ์์ฑ๋๋ฉด ์์ฒญ ์ํ๊ฐSUCCEEDED
๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.ํฌ๊ธฐ ์กฐ์ ์์ฒญ์ ์ถฉ๋ถํ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ VM ์ธ์คํด์ค๊ฐ MIG์ ์ถ๊ฐ๋๊ณ ์ํฌ๋ก๋๋ฅผ ์คํํ๊ธฐ ์ํด ์คํ๋ฉ๋๋ค. MIG์ ์๋ ์ธ์คํด์ค๋ฅผ ๋์ดํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE_NAME \ --project=PROJECT_ID
๋ค์ ๊ฐ์ ์ ๊ณตํฉ๋๋ค.
INSTANCE_GROUP_NAME
: MIG ์ด๋ฆ์ ๋๋ค.ZONE_NAME
: VM ์ธ์คํด์ค ๋ชฉ๋ก์ ๊ฐ์ ธ์ฌ ์ง์๋๋ ์์ญ์ ๋๋ค.PROJECT_ID
: ์ ํ์ฌํญ. VM ์ธ์คํด์ค ๋ชฉ๋ก์ ๊ฐ์ ธ์ฌ ํ๋ก์ ํธ์ ID์ ๋๋ค.
์ฐ๊ฒฐ๋ ์๋น์ค ๊ณ์
์ํฌ๋ก๋๋ฅผ ์คํํ๋ ค๋ฉด ์๋น์ค ๊ณ์ ์ ์ํฌ๋ก๋์ ์ปจํผ๋ด์ VM์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค. ์๋น์ค ๊ณ์ ์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํด์ผ ํฉ๋๋ค.
๋ค์ ์ญํ ์ด ์๋ ๊ฒฝ์ฐ
roles/confidentialcomputing.workloadUser
์ ํธ์ถํ์ฌ ์ฆ๋ช ํ ํฐ์ ์์ฑํฉ๋๋ค.roles/artifactregistry.reader
๋ฅผ ์ฌ์ฉํ์ฌ Artifact Registry์ ์ ์ฅ๋ ์ํฌ๋ก๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ต๋๋ค.roles/logging.logWriter
:STDOUT
๋ฐSTDERR
์ Cloud Logging์ผ๋ก ๋ฆฌ๋๋ ์ ํ๋ ค๋ ๊ฒฝ์ฐ
๋ฐ์ดํฐ ๊ณต๋์์ ์๊ฐ Cloud Storage ๋ฒํท์ด๋ BigQuery ํ ์ด๋ธ๊ณผ ๊ฐ์ ์์น์ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์์น์ ๋ํ ์ฝ๊ธฐ ์ก์ธ์ค ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค.
์ํฌ๋ก๋๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํด์ผ ํ๋ ์์น(์: Cloud Storage ๋ฒํท)์ ๋ํ ์ฐ๊ธฐ ์ก์ธ์ค ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. ๋ฐ์ดํฐ ๊ณต๋์์ ์์๊ฒ๋ ์ด ์์น์ ๋ํ ์ฝ๊ธฐ ์ก์ธ์ค ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค.
๋ํ ๋ฐ์ดํฐ ๊ณต๋์์ ์์ ์ํฌ๋ก๋ ์ด์์๋ ๋ค์์ ์ค์ ํด์ผ ํฉ๋๋ค.
๋ฐ์ดํฐ ๊ณต๋์์ ์๊ฐ ์ง์ ๋ฆฌ์์ค ์ก์ธ์ค ๋์ ์๋น์ค ๊ณ์ ๊ฐ์ฅ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์๋น์ค ๊ณ์ ์ ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ ํ ์ ๊ณต์ ์ฒด์ ์์ฑ ์กฐ๊ฑด์ผ๋ก ์ถ๊ฐํด์ผ ํฉ๋๋ค.
'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts
์ํฌ๋ก๋ ์ด์์๊ฐ ์๋น์ค ๊ณ์ ์ ๊ฐ์ฅํ๋ ค๋ฉด
roles/iam.serviceAccountUser
์ญํ ์ด ํ์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ํฌ๋ก๋๋ฅผ ์คํํ ์ ์๋๋ก ์ํฌ๋ก๋ VM ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
๋ฉํ๋ฐ์ดํฐ ๋ณ์
VM์ ๋ง๋ค ๋ ๋ณ์๋ฅผ --metadata
์ต์
์ ์ ๋ฌํ์ฌ Confidential Space ์ํฌ๋ก๋ VM ๋์์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ฌ๋ฌ ๋ณ์๋ฅผ ์ ๋ฌํ๋ ค๋ฉด ๋จผ์ --metadata
๊ฐ์ ^~^
ํ๋ฆฌํฝ์ค๋ฅผ ์ง์ ํ์ฌ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ค์ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ,
๊ฐ ๋ณ์ ๊ฐ์ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ๊ตฌ๋ถ ๊ธฐํธ๊ฐ ~
๋ก ์ค์ ๋ฉ๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
metadata="^~^tee-restart-policy=Always~tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest"
๋ค์ ํ์๋ ์ํฌ๋ก๋ VM์ ์ค์ ํ ์ ์๋ ๋ฉํ๋ฐ์ดํฐ ๋ณ์๊ฐ ์์ธํ ๋์ ์์ต๋๋ค.
๋ฉํ๋ฐ์ดํฐ ํค | ์ ํ | ์ค๋ช ๋ฐ ๊ฐ |
---|---|---|
์ํธ์์ฉ:
|
๋ฌธ์์ด |
ํ์ ์ ๋ ฅ๋์ ๋๋ค. ์ํฌ๋ก๋ ์ปจํ ์ด๋์ ์์น๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. ์
|
์ํธ์์ฉ:
|
JSON ๋ฌธ์์ด ๋ฐฐ์ด |
์ํฌ๋ก๋ ์ปจํ ์ด๋์ ์ถ๊ฐ Linux ๊ธฐ๋ฅ์ ์ถ๊ฐํฉ๋๋ค. ์
|
์ํธ์์ฉ:
|
๋ถ๋ฆฌ์ธ |
๊ธฐ๋ณธ๊ฐ์ ์
|
์ํธ์์ฉ:
|
JSON ๋ฌธ์์ด ๋ฐฐ์ด |
์ํฌ๋ก๋ ์ปจํ
์ด๋์ ์
|
์ํธ์์ฉ:
|
์ ์๋ ๋ฌธ์์ด |
confidential-space-launcher ํ๋ ์๋์์ ์ํฌ๋ก๋ ์ปจํ
์ด๋์ ์ ํจํ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ง๋ ฌ ์ฝ์์ ๋ก๊ทธ ๋ณผ๋ฅจ์ด ๋์ผ๋ฉด ์ํฌ๋ก๋ ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ์
|
|
์ ์ |
์
|
์ํธ์์ฉ:
|
๋ฌธ์์ด |
์ํฌ๋ก๋ ์ปจํ
์ด๋์์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค. ์ํฌ๋ก๋ ์์ฑ์๋ ํ๊ฒฝ ๋ณ์ ์ด๋ฆ์
์
|
์ํธ์์ฉ:
|
๋ฌธ์์ด |
์ํฌ๋ก๋ ์ด์์๊ฐ ๊ฐ์ฅํ ์ ์๋ ์๋น์ค ๊ณ์ ๋ชฉ๋ก์ ๋๋ค. ์ํฌ๋ก๋ ์ด์์๊ฐ ์๋น์ค ๊ณ์ ์ ๊ฐ์ฅํ๋๋ก ํ์ฉํด์ผ ํฉ๋๋ค. ์ผํ๋ก ๊ตฌ๋ถํ์ฌ ์ฌ๋ฌ ์๋น์ค ๊ณ์ ์ ๋์ดํ ์ ์์ต๋๋ค. ์
|
์ํธ์์ฉ:
|
๋ถ๋ฆฌ์ธ |
NVIDIA์ ์ปจํผ๋ด์ ์ปดํจํ GPU ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํ ์ง ์ฌ๋ถ์ ๋๋ค. NVIDIA ์ปจํผ๋ด์ ์ปดํจํ (๋ฏธ๋ฆฌ๋ณด๊ธฐ)์ ์ง์ํ๋ ๋จธ์ ์ ํ์ด ํ์ํฉ๋๋ค. ์
|
์ํธ์์ฉ:
|
๋ถ๋ฆฌ์ธ |
๊ธฐ๋ณธ๊ฐ์ ์
|
์ํธ์์ฉ:
|
๋ฌธ์์ด |
์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ๋ง์ดํธ ์ ์ ๋ชฉ๋ก์
๋๋ค. ๋ง์ดํธ ์ ์๋ ์
|
์ํธ์์ฉ:
|
์ ์๋ ๋ฌธ์์ด |
์ํฌ๋ก๋๊ฐ ์ค์ง๋ ๋ ์ปจํ ์ด๋ ๋ฐ์ฒ์ ๋ค์ ์์ ์ ์ฑ ์ ํจํ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด ๋ณ์๋ ํ๋ก๋์ Confidential Space ์ด๋ฏธ์ง์์๋ง ์ง์๋ฉ๋๋ค. ์
|
์ํธ์์ฉ:
|
๋ฌธ์์ด |
Sigstore Cosign์์ ์์ฑ๋ ์๋ช ์ ์ ์ฅํ๋ ์ผํ๋ก ๊ตฌ๋ถ๋ ์ปจํ ์ด๋ ์ ์ฅ์ ๋ชฉ๋ก์ ๋๋ค. ์
|
ํ์ฅ
ํ๋ก๋์ Confidential Space ์ํฌ๋ก๋์ ํ์ฅ ๋ฐ ๊ณ ๊ฐ์ฉ์ฑ์ ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์ ์ฐธ๊ณ ํ์ธ์.