워크로드 배포


워크로드 운영자는 Confidential Space 워크로드 VM에 옵션을 전달하여 실행 전에 동작을 확인할 수 있습니다. 일부 플래그에는 변경되지 않는 필수 값이 있지만 다음과 같은 선택을 해야 합니다.

다음은 최신 프로덕션 Confidential Space 이미지를 기반으로 us-west1-b 영역에 컨피덴셜 VM을 만들고 WORKLOAD_CONTAINER_NAME라는 Docker 컨테이너를 실행하는 예시입니다.

gcloud compute instances create workload-vm-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=us-west1-b

이 예시에 사용된 옵션에 대해서는 다음 표에서 자세히 설명합니다.

플래그 설명
--confidential-compute-type

필수 항목입니다. Compute Engine에 컨피덴셜 VM 인스턴스를 만들 때 사용할 컨피덴셜 컴퓨팅 기술을 지정합니다.

CONFIDENTIAL_COMPUTING_TECHNOLOGY를 다음 값 중 하나로 바꿉니다.

컨피덴셜 컴퓨팅 기술은 선택한 이미지 계열과 일치해야 합니다.

--machine-type (선택사항) 컨피덴셜 VM 머신 유형 이름을 지정합니다. AMD SEV 및 Intel TDX(미리보기)를 지원하는 머신 유형은 지원되는 구성을 참고하세요.
--maintenance-policy SEV를 사용하는 N2D 머신 유형의 경우 라이브 마이그레이션 지원을 위해 이 값을 MIGRATE로 설정합니다. 다른 모든 머신 유형의 경우 라이브 마이그레이션을 지원하지 않으므로 이 값을 TERMINATE로 설정합니다.
--shielded-secure-boot 필수 항목입니다. Compute Engine이 인스턴스에 대해 보안 부팅을 사용하도록 지정합니다.
--image-project=confidential-space-images 필수 항목입니다. Compute Engine이 confidential-space-images 프로젝트에서 Confidential Space 이미지를 찾도록 지정합니다.

--image-family

필수 항목입니다. Compute Engine이 confidential-space-images 프로젝트에 포함된 최신 Confidential Space 이미지를 사용하도록 지정합니다.

기밀 데이터를 처리하는 최종 워크로드에 프로덕션 이미지를 사용하려면 IMAGE_FAMILY를 다음 값 중 하나로 바꿉니다.

  • confidential-space: AMD SEV용
  • confidential-space-preview-tdx: Intel TDX용(미리보기)

모니터링 및 디버깅에 디버그 이미지를 사용하려면 IMAGE_FAMILY를 다음 값 중 하나로 바꿉니다.

  • confidential-space-debug: AMD SEV용
  • confidential-space-debug-preview-tdx: Intel TDX용 (미리보기)

사용하는 이미지 계열은 선택한 기밀 컴퓨팅 기술과 일치해야 합니다.

--metadata

필수 항목입니다. 변수를 전달하여 Confidential Space VM 동작을 변경합니다. tee-image-reference 키와 값이 필요합니다. VM 인스턴스가 지정된 Confidential Space 이미지 위에서 지정된 Docker 컨테이너를 실행하도록 지정합니다.

사용 가능한 키/값 쌍은 메타데이터 변수를 참고하세요.

--service-account (선택사항) 워크로드를 실행하는 VM 인스턴스에 연결되고 다른 프로젝트의 워크로드 ID 풀에 연결된 서비스 계정을 명의 도용하는 서비스 계정입니다. 지정하지 않으면 기본 Compute Engine 서비스 계정이 사용됩니다.
--scopes=cloud-platform 필수 항목입니다. 액세스 범위를 설정합니다. cloud-platform 범위는 대부분의 Google Cloud 서비스에 대한 OAuth 범위이며, VM이 증명 확인자와 커뮤니케이션할 수 있습니다.
--zone

필수 항목입니다. VM 인스턴스가 실행되는 영역입니다. Confidential Space에는 특정 위치에서 제공되는 다음 서비스가 필요합니다.

연결된 서비스 계정

워크로드를 실행하려면 서비스 계정을 워크로드의 컨피덴셜 VM에 연결해야 합니다. 서비스 계정은 다음과 같이 설정해야 합니다.

  • 다음 역할이 필요합니다.

  • 데이터 공동작업자가 기밀 데이터를 저장하는 위치(예: Cloud Storage 버킷 또는 BigQuery 테이블)에 대한 읽기 액세스 권한이 있습니다.

  • 워크로드가 데이터를 출력해야 하는 위치(예: Cloud Storage 버킷)에 대한 쓰기 액세스 권한 데이터 공동작업자에게는 이 위치에 대한 읽기 액세스 권한이 있어야 합니다.

또한 데이터 공동작업자와 워크로드 운영자는 다음을 설정해야 합니다.

  • 데이터 공동작업자는 서비스 계정을 워크로드 ID 풀 제공업체에 속성 조건으로 추가해야 합니다.

    '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에 설정할 수 있는 메타데이터 변수가 자세히 나와 있습니다.

메타데이터 키 유형 설명 및 값

tee-image-reference

다음과 상호작용:

문자열

필수 항목입니다. 워크로드 컨테이너의 위치를 가리킵니다.

예시
tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest

tee-cmd

다음과 상호작용:

JSON 문자열 배열

워크로드 컨테이너의 Dockerfile에 지정된 CMD 안내를 재정의합니다.

예시
tee-cmd="[\"params1\", \"params2\"]"

tee-container-log-redirect

다음과 상호작용:

정의된 문자열

confidential-space-launcher 필드 아래에서 워크로드 컨테이너의 STDOUTSTDERR을 Cloud Logging 또는 시리얼 콘솔로 출력합니다.

유효한 값은 다음과 같습니다.

  • false: (기본값) 로깅이 발생하지 않습니다.
  • true: 직렬 콘솔 및 Cloud Logging에 출력합니다.
  • cloud_logging: Cloud Logging에만 출력합니다.
  • serial: 직렬 콘솔에만 출력합니다.

직렬 콘솔의 로그 양이 많으면 워크로드 성능에 영향을 줄 수 있습니다.

예시
tee-container-log-redirect=true

tee-dev-shm-size-kb

정수

/dev/shm 공유 메모리 마운트의 크기(KB)를 설정합니다.

예시
tee-dev-shm-size-kb=65536

tee-env-ENVIRONMENT_VARIABLE_NAME

다음과 상호작용:

문자열

워크로드 컨테이너에서 환경 변수를 설정합니다. 워크로드 작성자는 allow_env_override 출시 정책에 환경 변수 이름을 추가해야 합니다. 그렇지 않으면 환경 변수가 설정되지 않습니다.

예시
tee-env-example-env-1='value-1'~tee-env-example-env-2='value-2'

tee-impersonate-service-accounts

다음과 상호작용:

문자열

워크로드 운영자가 가장할 수 있는 서비스 계정 목록입니다. 워크로드 운영자가 서비스 계정을 가장하도록 허용해야 합니다.

쉼표로 구분하여 여러 서비스 계정을 나열할 수 있습니다.

예시
tee-impersonate-service-accounts=SERVICE_ACCOUNT_NAME_1@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com,SERVICE_ACCOUNT_NAME_2@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com

tee-monitoring-memory-enable

다음과 상호작용:

불리언

기본값은 false입니다. true로 설정하면 메모리 사용량 모니터링이 사용 설정됩니다. 컨피덴셜 VM에서 수집한 측정항목은 guest/memory/bytes_used 유형이며 Cloud Logging 또는 측정항목 탐색기에서 볼 수 있습니다.

예시
tee-monitoring-memory-enable=true

tee-mount

다음과 상호작용:

문자열

세미콜론으로 구분된 마운트 정의 목록입니다. 마운트 정의는 쉼표로 구분된 키-값 쌍 목록으로 구성되며 type, source, destination가 필요합니다. destination는 절대 경로여야 하고 type/sourcetmpfs여야 합니다.

예시
type=tmpfs,source=tmpfs,destination=/tmp/tmpfs,size=12345;type=tmpfs,source=tmpfs,destination=/run/workload

tee-restart-policy

다음과 상호작용:

정의된 문자열

워크로드가 중지될 때 컨테이너 런처의 다시 시작 정책

유효한 값은 다음과 같습니다.

  • Never(기본)
  • Always
  • OnFailure

이 변수는 프로덕션 Confidential Space 이미지에서만 지원됩니다.

예시
tee-restart-policy=OnFailure

tee-signed-image-repos

다음과 상호작용:

문자열

Sigstore Cosign에서 생성된 서명을 저장하는 쉼표로 구분된 컨테이너 저장소 목록입니다.

예시
tee-signed-image-repos=us-docker.pkg.dev/projectA/repo/example,us-docker.pkg.dev/projectB/repo/example,us-docker.pkg.dev/projectC/repo/example

확장

프로덕션 Confidential Space 워크로드의 확장 및 고가용성은 관리형 인스턴스 그룹을 참고하세요.