출시 관리

Cloud Deploy 출시에는 단계가 포함됩니다. 단계는 출시에서 수행할 정렬된 논리적인 작업 그룹입니다.

각 단계에는 작업이 포함되며, 이러한 작업은 각 단계에서 수행할 작업입니다(예: deploy 또는 verify). 각 작업에는 0개 이상의 작업이 실행될 수 있습니다. 작업 실행은 작업의 인스턴스입니다. 작업이 실행되지 않았으면 작업이 실행되지 않습니다.

이 문서에서는 단계, 작업, 작업 실행과 이를 관리하는 방법을 설명합니다.

출시의 구조

출시는 출시 버전대상과 연결하는 Cloud Deploy 리소스입니다.

단계

출시는 하나 이상의 단계로 구성됩니다.

표준 배포 전략에는 stable 한 단계만 있습니다.

카나리아 배포 전략의 경우 구성된 각 비율에 대해 별도의 단계가 있습니다. 예를 들어 25%, 50%, 100%를 차례로 배포하는 카나리아를 구성하면 3단계가 됩니다.

  • canary-25
  • canary-50
  • stable

이러한 단계 이름은 표준입니다. 카나리아 단계는 canary-[PERCENTAGE]이고, 100% 단계라면 stable입니다. 그러나 수동 또는 커스텀 카나리아를 구성하면 단계 이름을 제어할 수 있습니다.

작업 및 작업 실행

각 출시 단계에는 하나 이상의 작업이 포함됩니다.

배포 인증이 사용 설정되지 않은 표준 배포 전략의 출시에는 1단계(stable)가 있습니다.

카나리아 출시의 경우 카나리아의 각 단계(예:canary-25 ,canary-50 ,stable)가 있고 각 단계에 대해deploy 작업이 있습니다. 확인이 사용 설정되면 각 단계에 verify 작업도 있습니다.

작업 실행은 작업의 인스턴스입니다. 예를 들어 deploy 작업의 작업 실행이 실행되고, 성공하면 해당 작업에 대한 추가 작업 실행이 없습니다. 실패하면 다른 작업 실행으로 재시도할 수 있습니다.

처음인 경우 단계 건너뛰기

일부 배포 전략(예: 카나리아)은 이전 버전과 새 버전 간에 트래픽을 할당합니다. 대상에 처음 배포하는 경우 이전 버전이 없으므로 트래픽을 할당할 수 없습니다.

이러한 이유로 카나리아를 처음 배포하면 카나리아 단계를 건너뛰고 stable 단계를 실행합니다. 그런 다음 애플리케이션이 배포되고 향후 카나리아 배포에 카나리아 단계가 포함됩니다.

애플리케이션이 이미 실행 중인 실제 상황에서는 일반적으로 카나리아 배포를 실행하므로 이 단계를 건너뛰는 것은 드물게 수행됩니다.

출시 내 상태

출시, 단계, 작업, 작업 실행 모두 상태가 있습니다. 이 섹션에서는 각 상태를 설명합니다.

출시 상태

출시의 상태는 다음 중 하나입니다.

  • APPROVAL_REJECTED

    출시에 승인이 필요했지만 승인이 거부되었습니다.

  • CANCELLED

    사용자가 취소한 출시의 터미널 상태입니다.

  • CANCELLING

    사용자가 출시를 취소했지만 취소가 처리를 완료하지 못했습니다.

  • HALTED

    동시 배포에서 하나 이상의 하위 출시가 실패하지만 하위 출시 중 하나라도 성공하는 경우, 현재 단계 이후에 단계가 더 있으면 컨트롤러 출시는 중단됩니다.

    다음 중 하나를 수행하여 중단된 컨트롤러 출시를 재개할 수 있습니다.

    • 컨트롤러 출시 취소

    • 하위 출시에서 실패한 작업 재시도 또는 무시

  • IN_PROGRESS

    작업 실행이 처리 중입니다.

  • FAILED

    작업이 실패했으며 사용자가 실패를 무시하지 않았습니다.

  • PENDING

    출시가 시작되지 않았습니다. 이 상태는 IN_PROGRESS 또는 CANCELED로 전환됩니다.

  • PENDING_APPROVAL

    출시에 승인이 필요하지만 아직 승인되지 않았습니다.

  • PENDING_RELEASE

    출시가 출시 버전이 렌더링되기를 기다리고 있습니다.

  • SUCCEEDED

    출시가 실패 없이 완료되었습니다.

단계 상태

단계는 다음과 같습니다.

  • PENDING

    출시의 다른 단계가 완료되기를 기다리는 단계입니다.

  • IN_PROGRESS

    단계가 시작되었습니다.

  • SUCCEEDED

    단계가 성공적으로 완료되었습니다.

  • FAILED

    단계의 작업이 실패했으며 사용자가 실패를 무시하도록 선택하지 않았습니다.

  • ABORTED

    이전 단계가 실패했습니다.

  • SKIPPED

    카나리아와 같은 배포 전략을 실행하는 경우 트래픽을 분할할 애플리케이션의 실행 버전이 아직 없는 경우 Cloud Deploy는 stable 단계로 건너뜁니다. 이 경우 상태는 SKIPPED로 설정됩니다.

작업 상태

작업 상태는 다음과 같습니다.

  • ABORTED

    단계가 실패하면 후속 단계가 취소됩니다.

    작업이 실패하고 실패가 무시되지 않으면 후속 작업이 취소됩니다. 예를 들어 단계에 배포 작업 및 확인 작업이 포함되어 있고 배포 작업이 실패하면 확인 작업이 취소됩니다.

  • DISABLED

    단계의 일부 작업이 사용 중지될 수 있습니다. 예를 들어 확인 사용 설정 여부에 관계없이 단계에 항상 인증 작업이 포함됩니다. 확인이 사용 설정되지 않은 경우 확인 작업이 DISABLED로 설정됩니다.

  • FAILED

    이 작업의 작업 실행이 실패했으며 사용자가 실패를 무시하도록 선택하지 않았습니다.

    사용자가 이 작업의 작업 실행을 종료하도록 선택했습니다.

  • IGNORED

    이 작업의 작업 실행이 실패하고 사용자가 실패를 무시하도록 선택했습니다.

  • IN_PROGRESS

    이 작업에 대한 작업이 현재 실행 중입니다.

  • PENDING

    다른 단계 또는 작업이 완료되지 않았기 때문에 이 작업에 대한 작업 실행이 대기 중입니다.

  • SKIPPED

    카나리아와 같은 배포 전략을 실행하는 경우 트래픽을 분할할 애플리케이션의 실행 버전이 아직 없는 경우 Cloud Deploy는 stable 단계로 건너뜁니다. 이 경우 건너뛴 단계에 있는 작업의 상태가 SKIPPED로 설정됩니다.

  • SUCCEEDED

    작업 실행이 성공적으로 완료되었고, 단계의 다음 작업이 시작되었거나, 다음 단계가 시작되었거나, 시작될 준비가 되었거나(사용자 입력 대기 중) 출시가 완료되었습니다.

작업 실행 상태

  • FAILED

    실행 중에 작업 실행이 실패했습니다.

  • IN_PROGRESS

    작업 실행이 시작되었지만 완료되지 않았습니다.

  • TERMINATED

    사용자가 작업 실행을 종료했습니다.

  • TERMINATING

    사용자가 작업 실행을 종료했지만 아직 종료가 완료되지 않았습니다.

  • SUCCEEDED

    작업이 실패하거나 사용자가 종료하지 않고 성공적으로 완료되면 SUCCEEDED 상태가 됩니다.

출시 관리

Google Cloud 콘솔 또는 Google Cloud SDK를 사용하여 Cloud Deploy 출시로 다음을 수행할 수 있습니다.

카나리아 배포 전략과 함께 동시 배포를 사용하는 경우 이 문서를 참조하세요.

출시 진행

'표준'이 아닌 배포 전략을 사용하도록 구성된 대상의 경우 출시를 단계별로 진행해야 합니다.

예를 들어 50% 및 stable(100%) 단계만 있는 간단한 카나리아 배포를 수행하도록 구성된 대상이 있는 경우 canary-50 단계에서 stable(100%) 단계로 출시를 한 번 진행해야 합니다.

gcloud

gcloud deploy rollouts advance ROLLOUT_NAME \
                               --release=RELEASE_NAME \
                               --delivery-pipeline=PIPELINE_NAME \
                               --region=REGION

각 항목의 의미는 다음과 같습니다.

ROLLOUT_NAME은 다음 단계로 진행하려는 현재 출시의 이름입니다.

RELEASE_NAME은 이 출시가 속한 출시 버전의 이름입니다.

PIPELINE_NAME은 이 출시 버전의 배포를 관리하는 데 사용하는 배포 파이프라인의 이름입니다.

REGION은 출시 버전이 생성된 리전의 이름입니다(예: us-central1). 필수 항목입니다.

gcloud deploy rollouts advance 명령어에 대한 자세한 내용은 Google Cloud SDK 참조를 확인하세요.

콘솔

  1. 배포 파이프라인 페이지를 엽니다.

  2. 배포 파이프라인 목록에 표시된 파이프라인을 클릭합니다.

    배포 파이프라인 세부정보 페이지에는 배포 파이프라인의 진행 상태가 그래픽으로 표시됩니다.

  3. 출시 탭의 배포 파이프라인 세부정보에서 출시 이름을 클릭합니다.

    해당 출시의 출시 세부정보 페이지가 표시됩니다.

    Google Cloud 콘솔의 출시 세부정보

    이 예시에서 출시에 canary-50 단계와 stable 단계가 있습니다. 출시에는 더 많은 단계 또는 다른 단계가 있을 수 있습니다.

  4. 고급 출시를 클릭합니다.

    출시는 다음 단계로 진행됩니다.

출시 취소

완료되지 않은 모든 출시를 취소할 수 있습니다. 또한 실패한 출시를 취소하여 추가 작업(예: 무시 또는 재시도)을 방지할 수 있습니다. 출시는 다음 상태 중 하나여야 합니다.

  • FAILED
  • HALTED
  • IN_PROGRESS
  • PENDING
  • PENDING_APPROVAL
  • PENDING_RELEASE

출시를 취소하면 대기 중인 모든 작업 실행이 완료될 때까지 롤아웃이 CANCELLING 상태가 됩니다. 기다리지 않고 대기 중인 작업 실행을 종료할 수 있습니다. 출시가 CANCELLED 상태가 되면 더 이상 진행하거나 수정할 수 없습니다.

출시를 취소하려면 다음 안내를 따르세요.

gcloud

gcloud deploy rollouts cancel ROLLOUT_NAME \
                               --release=RELEASE_NAME \
                               --delivery-pipeline=PIPELINE_NAME \
                               --region=REGION

각 항목의 의미는 다음과 같습니다.

ROLLOUT_NAME은 다음 단계로 진행하려는 현재 출시의 이름입니다.

RELEASE_NAME은 이 출시가 속한 출시 버전의 이름입니다.

PIPELINE_NAME은 이 출시 버전의 배포를 관리하는 데 사용하는 배포 파이프라인의 이름입니다.

REGION은 출시 버전이 생성된 리전의 이름입니다(예: us-central1). 필수 항목입니다.

gcloud deploy rollouts cancel 명령어에 대한 자세한 내용은 Google Cloud SDK 참조를 확인하세요.

콘솔

  1. 배포 파이프라인 페이지를 엽니다.

  2. 배포 파이프라인 목록에 표시된 파이프라인을 클릭합니다.

    배포 파이프라인 세부정보 페이지에는 배포 파이프라인의 진행 상태가 그래픽으로 표시됩니다.

  3. 출시 탭의 배포 파이프라인 세부정보에서 출시 이름을 클릭합니다.

    해당 출시의 출시 세부정보 페이지가 표시됩니다.

    Google Cloud 콘솔의 출시 세부정보

    이 예시에서 출시에 canary-50 단계와 stable 단계가 있습니다. 출시에는 더 많은 단계 또는 다른 단계가 있을 수 있습니다.

  4. 출시 취소를 클릭합니다.

    출시가 취소됩니다.

작업 실행 종료

현재 진행 중인 작업 실행을 종료할 수 있습니다. 예를 들어 작업 실행이 너무 오래 걸리거나 예상대로 작동하지 않는 것으로 보이는 경우 이를 수행할 수 있습니다. 작업을 종료하려면 작업이 IN_PROGRESS여야 합니다.

gcloud

gcloud deploy job-runs terminate JOB_RUN_ID \
                               --release=RELEASE_NAME \
                               --delivery-pipeline=PIPELINE_NAME \
                               --rollout=ROLLOUT_NAME \
                               --region=REGION

각 항목의 의미는 다음과 같습니다.

JOB_RUN_ID는 종료하려는 작업 실행의 (UUID)입니다. Cloud Deploy의 Google Cloud 콘솔의 출시 페이지에서 작업 실행 ID를 찾을 수 있습니다.

Google Cloud 콘솔의 출시 세부정보에 있는 작업 실행 ID

gcloud deploy rollouts describe 명령어를 사용하여 작업 실행 ID를 가져올 수도 있습니다.

RELEASE_NAME은 이 작업 실행이 속한 출시 버전의 이름입니다.

PIPELINE_NAME은 이 출시 버전의 배포를 관리하는 데 사용하는 배포 파이프라인의 이름입니다.

ROLLOUT_NAME은 이 작업 실행이 속한 출시의 이름입니다.

REGION은 출시 버전이 생성된 리전의 이름입니다(예: us-central1). 필수 항목입니다.

gcloud deploy job-runs terminate 명령어에 대한 자세한 내용은 Google Cloud SDK 참조를 확인하세요.

콘솔

  1. 배포 파이프라인 페이지를 엽니다.

  2. 배포 파이프라인 목록에 표시된 파이프라인을 클릭합니다.

    배포 파이프라인 세부정보 페이지에는 배포 파이프라인의 진행 상태가 그래픽으로 표시됩니다.

  3. 출시 탭의 배포 파이프라인 세부정보에서 출시 이름을 클릭합니다.

    해당 출시의 출시 세부정보 페이지가 표시됩니다.

    Google Cloud 콘솔의 출시 세부정보

    이 예시에서 출시에 canary-50 단계와 stable 단계가 있습니다. 출시에는 더 많은 단계 또는 다른 단계가 있을 수 있습니다.

  4. 단계에서 작업 실행을 종료할 작업이 포함된 포함하는 단계를 클릭합니다.

  5. 작업 실행에서 종료하려는 특정 작업 실행을 선택한 후 종료를 클릭합니다.

    작업 실행이 종료되고 단계 표에 표시된 것처럼 작업 상태가 Failure로 표시됩니다.

작업 실행을 종료한 후에는 작업이 실패한 것으로 간주되며 다음 중 하나를 수행할 수 있습니다.

  • 이를 그대로 두고 실패한 출시 무시
  • 작업 재시도
  • 작업을 무시하고 출시의 다음 작업 또는 단계로 계속 진행

작업 무시

실패한 작업을 무시하고 단계의 다음 작업으로 즉시 이동할 수 있습니다. 사용자 또는 다른 사람이 해당 작업에 대해 작업 실행을 종료한 등의 이유로 작업이 실패했을 수 있습니다.

실패한 작업은 실패한 단계 및 실패한 출시를 의미합니다. 하지만 실패를 무시하면 단계와 출시를 둘 다 진행할 수 있으며 결국 SUCCEEDED 상태가 될 수 있습니다.

gcloud

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

각 항목의 의미는 다음과 같습니다.

ROLLOUT_NAME은 이 작업 실행이 속한 출시의 이름입니다.

RELEASE_NAME은 이 작업이 포함된 현재 출시 버전의 이름입니다.

PIPELINE_NAME은 이 출시 버전의 배포를 관리하는 데 사용하는 배포 파이프라인의 이름입니다.

JOB_ID은 무시할 작업의 이름입니다(예: DEPLOY). Google Cloud 콘솔에서 출시의 단계 테이블에서 작업 이름을 찾을 수 있습니다.

실패한 작업 실행이 있는 Google Cloud 콘솔의 단계 표

PHASE_ID는 무시하는 작업이 포함된 단계의 이름입니다.

REGION은 출시 버전이 생성된 리전의 이름입니다(예: us-central1).

gcloud deploy rollouts ignore-job 명령어에 대한 자세한 내용은 Google Cloud SDK 참조를 확인하세요.

콘솔

  1. 배포 파이프라인 페이지를 엽니다.

  2. 배포 파이프라인 목록에 표시된 파이프라인을 클릭합니다.

    배포 파이프라인 세부정보 페이지에는 배포 파이프라인의 진행 상태가 그래픽으로 표시됩니다.

  3. 출시 탭의 배포 파이프라인 세부정보에서 출시 이름을 클릭합니다.

    해당 출시의 출시 세부정보 페이지가 표시됩니다.

  4. 무시할 실패한 작업을 선택합니다.

  5. 실패 무시 버튼을 클릭합니다.

    실패한 작업 실행은 무시되고 작업이 성공한 것처럼 출시가 계속됩니다. 즉, 동일한 단계에 다른 작업이 있는 경우 실행됩니다. 그렇지 않으면 출시가 다음 단계로 진행될 수 있습니다.

Google Cloud 콘솔에서 실패한 작업 무시 가능

실패한 작업 재시도

실패한 작업 실행을 다시 시도할 수 있습니다. 다음과 같은 이유로 작업이 실패할 수 있습니다.

  • 작업 실행을 완료할 수 없습니다.

    예를 들어 권한 실패가 있을 수 있습니다.

  • 사용자가 해당 작업에서 작업 실행을 종료했습니다.

    작업 실행을 종료하면 작업이 실패하여 다시 시도할 수 있습니다.

  • 인증 테스트에 실패했습니다.

    확인 작업의 경우 확인 테스트가 실패했습니다. 확인 작업이 올바르게 완료되더라도 확인 테스트 중 하나가 실패하면 다시 확인 작업에 전파됩니다. 이 경우 애플리케이션에서 실패한 테스트를 디버깅하는 과정에서 작업을 다시 시도하세요.

실패한 작업을 재시도하려면 다음 안내를 따르세요.

gcloud

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

각 항목의 의미는 다음과 같습니다.

JOB_NAME은 재시도하려는 작업의 이름입니다. 예를 들어 확인에 실패한 후 확인 작업을 다시 시도하는 경우 verify입니다.

RELEASE_NAME은 이 작업 실행이 속한 출시 버전의 이름입니다.

PIPELINE_NAME은 이 출시 버전의 배포를 관리하는 데 사용하는 배포 파이프라인의 이름입니다.

ROLLOUT_NAME은 이 작업 실행이 속한 출시의 이름입니다.

PHASE_ID은 이 작업이 속한 단계의 이름입니다. 예를 들면 canary-50 또는 stable입니다.

REGION은 출시 버전이 생성된 리전의 이름입니다(예: us-central1). 필수 항목입니다.

gcloud deploy rollouts retry-job 명령어에 대한 자세한 내용은 Google Cloud SDK 참조를 확인하세요.

콘솔

  1. 배포 파이프라인 페이지를 엽니다.

  2. 배포 파이프라인 목록에 표시된 파이프라인을 클릭합니다.

    배포 파이프라인 세부정보 페이지에는 배포 파이프라인의 진행 상태가 그래픽으로 표시됩니다.

  3. 출시 탭의 배포 파이프라인 세부정보에서 출시 이름을 클릭합니다.

    해당 출시의 출시 세부정보 페이지가 표시됩니다.

  4. 단계 및 작업에서 재시도하려는 작업이 포함된 단계를 클릭합니다.

  5. 재시도할 작업을 선택합니다.

  6. 재시도를 클릭하고 확인합니다.

    Google Cloud 콘솔의 출시 세부정보

    작업 실행이 다시 실행되고 단계 표에 표시된 것처럼 작업 상태가 '진행 중'입니다. 같은 단계에 다른 작업이 있으면 실행됩니다. 그렇지 않으면 출시가 다음 단계로 진행될 수 있습니다.

다음 단계