Cloud Run에 컨테이너 배포

기본적으로 제공되는 향상된 Linux 서비스 관리자를 사용하여 컨테이너 워크로드를 마이그레이션하면 컨테이너를 추가로 변경하지 않아도 Cloud Run에서 컨테이너를 배포할 수 있습니다.

Cloud Run에 컨테이너를 배포하려면 다음 안내를 따르세요.

  1. Migrate to Containers 버전 1.15.0을 설치합니다.

  2. 기존 런타임과 마찬가지로 마이그레이션 소스를 추가하고 마이그레이션을 생성합니다.

  3. 필요에 따라 마이그레이션 계획을 맞춤설정합니다.

    1. 마이그레이션 계획을 다운로드합니다. 마이그레이션 계획은 AppXGenerateArtifactsFlow로 표시됩니다.

      예를 들어 이름이 'my-migration'인 마이그레이션의 경우 다음을 실행합니다.

      migctl migration get my-migration
    2. 다운로드한 마이그레이션 계획 my-migration.yaml을 텍스트 편집기에서 엽니다.

    3. 향상된 Linux 서비스 관리자를 확인합니다. v2kServiceManager 플래그는 기본적으로 true로 설정됩니다. 하지만 Migrate to Containers에서 서비스 관리자로 지원되지 않는 시스템 서비스를 감지하면 알림이 표시되고 v2kServiceManager 플래그가 false로 설정됩니다. 플래그가 false로 설정되었으면 마이그레이션에 서비스를 지원하는 기존 런타임이 사용됩니다.

      다음 알림은 지원되지 않는 서비스와 함께 제공됩니다.

      Service is not supported by v2k service manager, therefore legacy runtime
      will be used instead of v2k service manager, and migrated workload would
      not fit running on Autopilot clusters of Cloudrun.

      지원되지 않는 서비스를 찾았으면 플래그를 수동으로 true로 설정할 수도 있습니다. 이 경우 생성된 이미지에 실행될 수 없는 지원되지 않는 서비스를 보관하도록 선택하거나 마이그레이션 계획에서 삭제하여 서비스를 제외시킬 수 있습니다.

      새 서비스 관리자를 사용 설정하려면 플래그를 true로 설정합니다.

      v2kServiceManager: true
      
    4. 마이그레이션 계획 맞춤설정의 설명대로 마이그레이션에 필요한 다른 맞춤설정을 수행합니다.

    5. 수정이 완료되면 수정된 파일을 저장합니다.

    6. 수정된 마이그레이션 계획을 업로드합니다.

      migctl migration update my-migration --main-config my-migration.yaml
  4. 기존 런타임과 마찬가지로 마이그레이션 아티팩트를 생성하고 검토합니다.

  5. services-config.yaml 파일을 수정하여 컨테이너의 초기화 속성을 구성합니다. 파일을 저장하고 변경사항을 적용해서 컨테이너 이미지를 다시 빌드합니다.

    services.yaml 파일 편집 방법에 대한 자세한 내용은 services-config.yaml 사용을 참조하세요.

  6. 마이그레이션 아티팩트를 생성한 후 편집기에서 deployment_spec.yaml 파일을 열어 컨테이너 이미지의 위치를 확인합니다. 예를 들어 다음과 비슷한 내용이 표시됩니다.

    spec:
      containers:
      - image: gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL

    여기서 gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL은 컨테이너 이미지의 위치를 지정합니다.

  7. 다음 명령어를 사용하여 Cloud Run에 컨테이너를 배포합니다.

    gcloud run deploy my-runtime
        --image gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
        --region REGION --platform managed
        --set-env-vars=HC_V2K_SERVICE_MANAGER=true --port PORT 

    --set-env-vars 속성은 HC_V2K_SERVICE_MANAGER 환경 변수를 true로 설정하여 향상된 Linux 서비스 관리자를 사용 설정합니다.

    --port 속성은 요청이 컨테이너로 전송되는 포트를 지정합니다. 기본 포트는 8080입니다.

예시: Cloud Run에 빠른 시작 컨테이너 배포

현재의 빠른 시작 가이드를 사용하여 간단한 웹 서버가 포함된 컨테이너를 마이그레이션한 후 Cloud Run에 배포합니다. 빠른 시작 프로세스에서 변경해야 하는 유일한 사항은 다음과 같습니다.

  1. 마이그레이션 계획을 검토하는 VM 마이그레이션의 3단계에서 마이그레이션 계획의 v2kServiceManagertrue로 설정한 다음 계획을 저장합니다.

    v2kServiceManager: true
    
  2. 마이그레이션이 완료되면 편집기에서 deployment_spec.yaml 파일을 열어 컨테이너의 위치를 확인합니다. 예를 들어 다음과 비슷한 내용이 표시됩니다.

    spec:
      containers:
      - image: gcr.io/PROJECT_NAME/quickstart-instance:LABEL
  3. 마이그레이션된 워크로드 배포 섹션에서 다음 명령어를 사용하여 컨테이너 이미지를 Cloud Run에 배포합니다.

    gcloud run deploy my-runtime
        --image gcr.io/PROJECT_NAME/quickstart-instance:LABEL
        --region REGION --platform managed
        --set-env-vars=HC_V2K_SERVICE_MANAGER=true --port 80 

    마이그레이션된 컨테이너의 웹 서버는 포트 80의 요청을 리슨하므로 컨테이너를 배포할 때 해당 포트를 지정해야 합니다.

    Cloud Run 서비스의 URL이 포함된 다음과 같은 응답이 표시됩니다.

    Allow unauthenticated invocations to [my-runtime] (y/N)?  y
    
    Deploying container to Cloud Run service [my-runtime] in project [PROJECT_NAME] region [REGION]
    Deploying new service... Done.
      ✓ Creating Revision…
      ✓ Routing traffic…
        Setting IAM Policy…
    Done.
    Service [my-runtime] revision [my-runtime-00001-sas] has been deployed and is serving 100 percent of traffic.
    Service URL: https://my-runtime-s5ahdq-uc.a.run.app
  4. Cloud Shell에서 서비스 URL로 사용자 인증 정보를 전달하여 컨테이너에 요청합니다.

    curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://my-runtime-s5ahdq-uc.a.run.app

    이제 'Hello World!' 페이지가 표시됩니다.

다음 단계