배포 완료를 확인하기

이 문서에서는 Cloud Deploy 배포를 확인하는 방법을 설명합니다.

Cloud Deploy를 구성하여 대상에 배포한 애플리케이션이 올바르게 작동하는지 확인할 수 있습니다. 확인은 자체 테스트 이미지 또는 이미지를 사용하여 이루어지며 배포가 완료된 후 이러한 테스트를 실행하도록 Cloud Deploy를 구성합니다.

배포 확인 작동 방식

  1. 실행할 작업을 정의하여 배포를 확인하기 위해 배포 파이프라인에 하나 이상의 대상을 구성합니다.

  2. 애플리케이션이 배포되면 Cloud Deploy가 Cloud Deploy 실행 환경에서 확인 작업을 실행합니다.

    실행된 테스트의 성공 또는 실패는 확인의 성공 또는 실패를 나타냅니다.

    • 확인 성공은 컨테이너에서 생성된 종료 코드에 따라 결정됩니다.

      0은 성공을 나타냅니다. 0이 아닌 종료 코드는 실패를 나타냅니다. 예상되는 확인 결과를 생성하려면 컨테이너가 적절한 종료 코드로 종료되는지 확인합니다. 확인의 일환으로 컨테이너가 두 개 이상 실행되는 경우 확인이 성공하려면 모두 성공해야 합니다.

    • 확인이 실패하면 출시도 실패합니다.

    • 확인 중에 배포가 실패하면 출시를 검사하여 이를 확인할 수 있습니다.

      확인 상태를 포함하여 출시를 위한 Google Cloud 콘솔의 세부정보

  3. 실패한 확인을 무시하거나 다시 시도할 수 있습니다.

    진행 중인 확인 작업을 종료할 수도 있습니다.

확인에 사용되는 구성요소

출시 리소스에는 배포 확인을 지원하는 다음 객체가 포함됩니다.

  • 단계

    논리적으로 함께 그룹화된 출시의 작업 모음(예: 배포 또는 배포 및 확인)입니다.

  • 작업

    배포 또는 확인 등 출시에서 수행할 특정 작업입니다.

  • 작업 실행

    출시 리소스의 하위 항목인 작업 실행은 작업의 인스턴스입니다(예: 배포 시도).

Cloud Deploy 리소스에 대한 자세한 내용은 Cloud Deploy 서비스 아키텍처를 참고하세요.

배포 확인을 위한 Cloud Deploy 구성

Cloud Deploy 대상의 배포 확인을 사용 설정하려면 이 예시처럼 배포 파이프라인 진행의 지정된 대상에 verify 스탠자를 추가합니다.

apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
 name: my-demo-app
description: main application pipeline
serialPipeline:
 stages:
 - targetId: dev
   profiles: []
   strategy:
     standard:
       verify:
         tasks:
         - type: container
           image: "VERIFY_IMAGE"
           command: [COMMANDS_TO_RUN]
           args: [LIST_OF_ARGS]
           env: {VERIFY_TASK_ENV_MAP}

이 YAML에서

  • VERIFY_IMAGE

    확인 작업에 실행할 이미지의 이름입니다. 예를 들어 Artifact Registry 이미지의 경우 us-central1-docker.pkg.dev/gcp-project-id-12345/my-repository/my-app:v1.2입니다.

  • COMMANDS_TO_RUN

    해당 컨테이너에서 실행할 진입점 목록입니다. "/bin/sh"는 셸을 호출하기 위해 지정하는 일반적인 명령어입니다.

  • LIST_OF_ARGS

    명령어에 제공할 인수 목록입니다. 각 인수를 따옴표로 묶고 쉼표로 구분한 목록입니다. COMMAND_TO_RUN"/bin/sh"인 경우 인수 중 하나는 "-c"이며 또 다른 인수는 호출하는 셸에서 실행할 전체 명령어입니다.

    예를 들면 다음과 같습니다.

    command: ["/bin/sh"]
    args: ["-c", `echo "This command ran!"`]
    
  • VERIFY_TASK_ENV_MAP

    컨테이너에 전달된 환경 변수의 맵입니다(KEY:VAL 형식).

확인 작업은 자체 실행 환경 내에서 수행됩니다. 이 실행 환경을 VERIFY에 대해 RENDERDEPLOY와 동일한 방식으로 구성할 수 있습니다.

애플리케이션 클러스터에서 확인 실행

기본적으로 배포 확인은 Cloud Deploy 실행 환경에서 실행됩니다. 또한 애플리케이션이 실행되는 동일한 클러스터에서 확인을 실행하도록 Skaffold를 구성할 수 있습니다.

클러스터에서 확인 컨테이너를 실행하려면 skaffold.yamlverify 스탠자 아래에 확인 컨테이너를 구성해야 합니다. 정의된 각 컨테이너에 대해 executionMode.kubernetesCluster도 설정해야 합니다.

verify:
- name:
  container:
    name:
    image:
    command:
    args:
  executionMode:
    kubernetesCluster:

다음은 애플리케이션 클러스터에서 확인 컨테이너를 호출하기 위해 executionMode가 포함된 확인 스탠자 예시입니다.

verify:
- name: integration-test-container
  container:
    name: integration-test-container
    image: integration-test-container
  executionMode:
    kubernetesCluster: {}

또한 배포 파이프라인 구성 내에서 verify 스탠자를 true로 설정해야 합니다.

다음은 dev 타겟에 확인이 사용 설정된 배포 파이프라인 정의의 예입니다.

apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
 name: my-demo-app
description: main application pipeline
serialPipeline:
 stages:
 - targetId: dev
   profiles: []
   strategy:
     standard:
       verify: true

이 기능은 GKE 배포에서만 사용할 수 있으며 Cloud Run에는 사용할 수 없습니다. Cloud Run에 대한 배포는 Cloud Deploy 실행 환경에서만 확인을 실행할 수 있습니다.

동시 배포의 경우 확인이 다중 대상에서 구성되며, 확인 컨테이너는 각 하위 대상에서 실행됩니다.

kubernetesClusterjobManifestPathoverrides 속성을 포함하여 확인 컨테이너의 매니페스트 및 재정의하려는 모든 값을 가리킬 수도 있습니다. (overrides는 대체할 값이 있는 Kubernetes 인라인 JSON을 사용합니다.) 자세히 알아보기

executionMode 스탠자는 선택사항입니다. 이를 생략하면 Skaffold가 Cloud Deploy 실행 환경에서 확인 컨테이너를 실행합니다.

확인 재시도

확인 작업이 실패하면 확인을 재시도하여 새 작업 실행을 만들 수 있습니다.

gcloud deploy rollouts retry-job ROLLOUT_NAME \
             --job-id=JOB_ID \
             --phase-id=PHASE_ID \
             --delivery-pipeline=PIPELINE_NAME \
             --release=RELEASE_NAME \
             --region=REGION

확인을 재시도하면 출시 상태가 FAILED에서 IN_PROGRESS로 변경됩니다.

확인 작업이 실패한 출시에서만 확인을 재시도할 수 있습니다.

사용 가능한 환경 변수

Cloud Deploy는 실행 환경에 다음 환경 변수도 제공하고 채웁니다. 이러한 환경 변수를 배포 후크, 작업 확인 또는 커스텀 타겟 렌더링 또는 배포의 일부로 사용할 수 있습니다.

  • ANTHOS_MEMBERSHIP

    ANTHOS 유형 대상의 경우 Anthos 멤버십의 완전하게 지정된 리소스 이름입니다.

  • CLOUD_RUN_LOCATION

    RUN 유형 대상의 경우 Cloud Run 서비스가 배포된 리전입니다.

  • CLOUD_RUN_PROJECT

    RUN 유형 대상의 경우 Cloud Run 서비스가 생성된 프로젝트입니다.

  • CLOUD_RUN_SERVICE

    RUN 유형 대상의 경우 배포된 Cloud Run 서비스의 이름입니다.

  • CLOUD_RUN_SERVICE_URLS

    RUN 유형 대상의 경우 최종 사용자가 서비스에 액세스하는 데 사용할 URL 또는 쉼표로 구분된 URL 목록입니다.Google Cloud 콘솔의 해당 서비스에 대한 Cloud Run 서비스 세부정보에서 이를 확인할 수 있습니다. URL은 Cloud Run 서비스가 성공적으로 배포된 후 Cloud Run에 의해 생성됩니다. 따라서 이 환경 변수는 postdeploy 후크와 작업 확인에서만 사용할 수 있습니다.

  • CLOUD_RUN_REVISION

    RUN 유형 대상의 경우 Cloud Run 서비스의 특정 버전입니다.

  • GKE_CLUSTER

    GKE 유형의 대상의 경우 Google Kubernetes Engine 클러스터의 완전히 지정된 리소스 이름입니다(예: projects/p/locations/us-central1/clusters/dev).

  • TARGET_TYPE

    대상의 특정 런타임 유형으로, GKE, ANTHOS, RUN입니다. 커스텀 대상의 경우 이 값이 설정되지 않습니다.

  • CLOUD_DEPLOY_LOCATION

    Cloud Deploy 리소스가 포함된 리전입니다.

  • CLOUD_DEPLOY_DELIVERY_PIPELINE

    배포 파이프라인의 ID입니다.

  • CLOUD_DEPLOY_TARGET

    타겟의 ID입니다.

  • CLOUD_DEPLOY_PROJECT

    Cloud Deploy 리소스가 포함된 프로젝트의 Google Cloud 프로젝트 번호입니다.

  • CLOUD_DEPLOY_PROJECT_ID

    프로젝트의 Google Cloud 프로젝트 ID입니다.

  • CLOUD_DEPLOY_RELEASE

    후크가 실행되는 출시 버전의 ID입니다.

  • CLOUD_DEPLOY_ROLLOUT

    후크 작업을 포함하는 출시의 ID입니다.

  • CLOUD_DEPLOY_JOB_RUN

    작업의 현재 실행을 나타내는 작업 실행의 ID입니다.

  • CLOUD_DEPLOY_PHASE

    배포 후크, 확인 작업 또는 맞춤 렌더링 또는 배포 작업을 포함하는 출시의 단계입니다.

다음 단계