호스트 VM에서 맞춤 시작 스크립트 실행

Cloud Workstations를 사용하면 워크스테이션 컨테이너가 시작되기 전에 호스트 워크스테이션 VM에서 커스텀 시작 스크립트를 실행할 수 있습니다. 이는 VM 수준 구성을 실행하거나 워크스테이션 컨테이너 외부에서 실행해야 하는 추가 소프트웨어를 설치하는 데 유용합니다.

호스트 VM에서 커스텀 시작 스크립트를 실행하는 것은 고급 기능입니다. 시작 스크립트를 사용하는 대신 컨테이너 이미지를 맞춤설정하는 것이 좋습니다.

시작 스크립트를 사용하기로 선택한 경우 호스트 VM은 COS를 기반으로 정기적인 운영체제 업데이트를 수신하므로 스크립트가 Container-Optimized OS (COS) 이미지 변경사항과 계속 호환되도록 하세요.

시작하기 전에

계정에 로그인합니다. Google Cloud 를 처음 사용하는 경우 Google Cloud, 계정을 만들어 실제 시나리오에서 제품이 어떻게 작동하는지 평가하세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.

Google Cloud CLI를 설치합니다. 설치 후 Google Cloud CLI를 초기화하려면 다음 명령어를 실행합니다.

gcloud init

외부 ID 공급업체 (IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

Google Cloud CLI를 설치합니다. 설치 후 Google Cloud CLI를 초기화하려면 다음 명령어를 실행합니다.

gcloud init

외부 ID 공급업체 (IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

시작 스크립트 준비

호스트 워크스테이션 VM에서 실행할 시작 스크립트를 만듭니다. 스크립트를 작성할 때는 다음 가이드라인을 준수하세요.

  1. Cloud Workstations는 워크스테이션이 제대로 작동하도록 호스트 워크스테이션 VM에서 지정된 워크스테이션 컨테이너와 여러 시스템 컨테이너를 실행합니다. 모든 컨테이너는 containerd 런타임과 crictl 클라이언트를 사용하여 실행됩니다.
  2. 시작 스크립트에서 실행하는 추가 컨테이너는 containerd를 사용하여 실행합니다. 워크스테이션 컨테이너 내에서 실행되는 Docker 데몬과의 간섭을 방지하기 위해 호스트 VM에서 Docker가 사용 중지됩니다.
  3. 시작 스크립트에서 실행되는 호스트 수준 컨테이너는 기본 워크스테이션 컨테이너와 상호작용할 수 없습니다. 이러한 직접 상호작용은 ID 및 액세스 관리 (IAM) 검사를 우회하므로 지원되지 않습니다.

Cloud Storage에 시작 스크립트 저장

스크립트를 Cloud Storage 버킷에 업로드하고 워크스테이션과 연결된 서비스 계정에서 스크립트에 액세스할 수 있는지 확인합니다.

  1. 스크립트를 버킷에 업로드합니다.

    gcloud storage cp LOCAL_SCRIPT_PATH gs://BUCKET_NAME/SCRIPT_NAME
    

    다음을 바꿉니다.

    • LOCAL_SCRIPT_PATH: 시작 스크립트 파일의 로컬 경로입니다.
    • BUCKET_NAME: Cloud Storage 버킷 이름입니다.
    • SCRIPT_NAME: 버킷에서 스크립트 파일에 지정할 이름입니다.
  2. 워크스테이션 구성에서 사용하는 서비스 계정에 버킷 및 스크립트 파일에 액세스할 수 있는 권한이 있는지 확인합니다. 또는 스크립트에 공개적으로 액세스할 수 있습니다.

워크스테이션 구성 만들기

커스텀 시작 스크립트를 사용하려면 워크스테이션 구성을 만들고 스크립트의 Cloud Storage URI를 지정합니다.

콘솔

워크스테이션 구성을 만들 때 커스텀 시작 스크립트를 구성하려면 다음 단계를 따르세요.

  1. 콘솔에서 워크스테이션 구성 페이지로 이동합니다. Google Cloud

    워크스테이션 구성으로 이동

  2. 추가 만들기 를 클릭합니다.

  3. 기본 정보 페이지에서 구성 이름을 입력하고 워크스테이션 클러스터를 선택한 후 계속 을 클릭합니다.

  4. 머신 설정 페이지에서 머신 설정을 구성하고 계속 을 클릭합니다.

  5. 환경 설정 페이지에서 고급 컨테이너 옵션 섹션을 펼칩니다.

  6. 커스텀 시작 스크립트 필드에 시작 스크립트의 Cloud Storage 경로 (예: gs://BUCKET_NAME/SCRIPT_NAME)를 입력합니다.

  7. 나머지 단계를 완료하고 만들기 를 클릭합니다.

REST

REST API를 사용하여 커스텀 시작 스크립트를 구성하려면 워크스테이션 구성을 만들고 host.gceInstance 메시지의 startupScriptUri 필드를 스크립트의 Cloud Storage URI로 설정합니다.

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
       "host": {
         "gceInstance": {
           "poolSize": 1,
           "startupScriptUri": "gs://BUCKET_NAME/SCRIPT_NAME",
           "serviceAccount": "SERVICE_ACCOUNT"
         }
       }
     }' \
     https://workstations.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/workstationClusters/CLUSTER_ID/workstationConfigs?workstation_config_id=CONFIG_ID

다음을 바꿉니다.

  • SERVICE_ACCOUNT: 워크스테이션 구성과 연결된 서비스 계정의 이메일 주소입니다.
  • PROJECT_ID: 프로젝트 ID입니다. Google Cloud
  • LOCATION: 워크스테이션 클러스터가 있는 리전입니다.
  • CLUSTER_ID: 워크스테이션 클러스터의 ID입니다.
  • CONFIG_ID: 새 워크스테이션 구성에 할당할 ID입니다.

스크립트 실행 확인

스크립트가 올바르게 실행되었는지 확인하려면 다음 방법 중 하나를 사용하세요.

  • 직렬 포트 3 출력 로그: 스크립트에서 생성된 출력 로그는 직렬 포트 3 출력으로 자동 전송됩니다. 워크스테이션에 할당된 VM의 이름을 찾으려면 플랫폼 로그를 참고하세요.
  • VM에 SSH: 필요한 경우 워크스테이션 VM에 SSH로 연결 하여 스크립트를 추가로 디버그할 수 있습니다.
  • 준비 상태 확인: 시작 스크립트는 최선의 방법이며 워크스테이션 시작을 차단하지 않습니다. 스크립트가 실행되는 데 시간이 오래 걸리거나 실패하더라도 워크스테이션은 준비 상태로 표시될 수 있습니다. 스크립트가 완료될 때까지 워크스테이션이 준비 상태로 표시되지 않도록 하려면 준비 상태 확인을 구현하는 것이 좋습니다.

다음 단계