배포 파이프라인 관리

이 페이지에서는 다음 태스크를 포함해 배포 파이프라인을 관리하는 방법을 설명합니다.

  • 파이프라인, 출시, 롤아웃 및 타겟에 대한 정보 보기
  • 파이프라인에서 알림 사용
  • 출시 승인 및 거부

시작하기 전에

이 페이지에서는 하나 이상의 Google Cloud Deploy 전송 파이프라인이 사용 중이거나 사용할 준비가 되었다고 가정합니다.

Google Cloud Deploy는 Skaffold를 사용하여 매니페스트를 렌더링 및 배포하므로 Skaffold에 익숙하지 않은 경우 Skaffold 빠른 시작을 참조하여 기본 사항을 배울 수 있습니다.

전달 파이프라인 보기 및 수정

모든 프로젝트의 모든 Google Cloud Deploy 배포 파이프라인 목록을 볼 수 있습니다. 명령줄에서 나열할 수 있으며 Google Cloud 콘솔에서 목록을 볼 수 있습니다.

전달 파이프라인 목록 보기

콘솔

Google Cloud 콘솔에서 Google Cloud Deploy 배포 파이프라인 페이지로 이동하여 사용 가능한 배포 파이프라인 목록을 확인합니다.

배포 파이프라인 페이지 열기

배포 파이프라인 목록이 Google Cloud 콘솔에 표시됩니다.

파이프라인 목록을 보여주는 Google Cloud 콘솔의 배포 파이프라인 페이지

구성되었지만 Google Cloud Deploy 서비스로 등록되지 않은 배포 파이프라인은 표시되지 않습니다.

gcloud

다음 명령어는 현재 프로젝트의 모든 배포 파이프라인 목록을 반환합니다.

gcloud deploy delivery-pipelines list

다음과 비슷한 출력이 표시됩니다.

$ gcloud deploy delivery-pipelines list --region=$REGION
---
createTime: '2021-05-03T16:03:11.687046682Z'
description: main application pipeline
etag: a9721c6cf665fcc7
name: projects/try-cd-dev6/locations/us-central1/deliveryPipelines/my-demo-app-1
serialPipeline:
  stages:
  - targetId: qsdev
  - targetId: qsprod
uid: f0b8148d5ddf4071964803e278acb1da
updateTime: '2021-05-03T16:03:12.780948171Z'

이 출력에 표시된 것처럼 명령어는 2개의 타겟이 있는 1개의 파이프라인만 반환합니다.

전달 파이프라인 세부정보 보기

기존 전송 파이프라인의 경우 파이프라인 메타데이터 및 타겟의 진행 상황을 포함한 파이프라인 세부정보를 볼 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Google Cloud Deploy 배포 파이프라인 페이지로 이동하여 사용 가능한 배포 파이프라인 목록을 확인합니다.

    배포 파이프라인 페이지 열기

    배포 파이프라인 목록이 Google Cloud 콘솔에 표시됩니다.

    배포 파이프라인 목록

    구성되었지만 Google Cloud Deploy 서비스로 등록되지 않은 배포 파이프라인은 표시되지 않습니다.

  2. 세부정보를 확인할 배포 파이프라인의 이름을 클릭합니다.

Google Cloud 콘솔에서 배포 파이프라인 시각화와 파이프라인 메타데이터 및 상태를 보여줍니다.

파이프라인 시각화가 포함된 배포 파이프라인 세부정보 페이지

타겟 탭을 클릭하여 이 전송 파이프라인이 사용하는 타겟의 세부정보를 볼 수 있습니다.

파이프라인 시각화가 포함된 배포 파이프라인 세부정보 페이지

gcloud

다음 명령어는 지정된 배포 파이프라인의 세부정보를 반환합니다.

gcloud deploy delivery-pipelines describe <pipeline-name> --region=<region>

다음과 비슷한 출력이 표시됩니다.

$ gcloud deploy delivery-pipelines describe my-demo-app-1 --region=us-central1
Delivery Pipeline:
  createTime: '2021-05-03T16:03:11.687046682Z'
  description: main application pipeline
  etag: a9721c6cf665fcc7
  name: projects/try-cd-dev6/locations/us-central1/deliveryPipelines/my-demo-app-1
  serialPipeline:
    stages:
    - targetId: qsdev
    - targetId: qsprod
  uid: f0b8148d5ddf4071964803e278acb1da
  updateTime: '2021-05-03T16:03:12.780948171Z'
Targets:
- Target: qsdev
- Target: qsprod

이 출력에 표시된 것처럼 명령어는 파이프라인 하나의 세부정보를 반환합니다. stages 2개와 해당하는 Target 2개를 확인합니다.

출시 세부정보 및 렌더링 소스를 포함한 출시 버전 세부정보를 확인할 수도 있습니다. 또한 매니페스트와 Skaffold 구성을 포함한 렌더링된 아티팩트를 비교할 수 있습니다.

배포 롤백

타겟을 롤백하면 Google Cloud Deploy가 이전 출시 버전을 기준으로 새 rollout 리소스를 만듭니다.

gcloud

기본적으로 롤백은 표시된 타겟에 성공한 출시와 함께 마지막 출시를 사용하지만 --release을 사용하여 다른 출시를 선택할 수 있습니다.

롤백하려면 배포 파이프라인이 있는 디렉터리에서 다음 명령어를 실행합니다.

gcloud deploy targets rollback TARGET_NAME \
   --delivery-pipeline=PIPELINE_NAME \
   --release=RELEASE_NAME \
   --rollout-id=ROLLOUT_ID

위의 명령어에서 --release--rollout-id는 선택사항입니다. --release를 사용하여 롤백하려는 특정 출시 버전을 식별합니다. 이 옵션을 생략하면 Google Cloud Deploy에서 마지막으로 알려진 양호한 상태의 출시 버전을 지정된 대상에 사용합니다.

--rollout-id를 사용하여 생성된 rollout에 식별자를 할당합니다. 이를 생략하면 Google Cloud Deploy에서 생성된 rollout의 ID를 생성합니다.

Console

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

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

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

  3. 더보기 메뉴 더보기 메뉴를 클릭하고 출시 버전 롤백을 선택합니다.

    메뉴에서 출시 롤백을 선택합니다.

    롤백 양식이 표시됩니다.

    롤백 양식

  4. 출시 버전 필드에서 출시 버전을 선택합니다.

    이 버전이 롤백하려는 출시 버전입니다. 출시 이름은 선택한 출시 버전을 기반으로 채워집니다.

  5. 원하는 경우 출시 이름 및 출시 설명을 기본값에서 변경할 수 있습니다.

  6. 롤백을 클릭합니다.

    선택한 출시에서 새 출시가 생성되고 동일한 타겟에 배포됩니다.

추가 롤백

마지막으로 배포된 출시 버전보다 이전 버전으로 수동으로 롤백할 수 있습니다.

이전 출시 버전으로 gcloud deploy releases promote를 실행하고 출시 버전을 롤백할 타겟으로 설정된 --to-target 옵션을 포함합니다.

전달 파이프라인에 알림 사용

Google Cloud Deploy에서는 Pub/Sub을 사용하여 두 가지 목적으로 알림을 게시합니다.

  • Google Cloud Deploy를 타사 도구 및 워크플로 티켓팅 또는 테스트 인프라용 도구와 같은 기타 Google 도구와 통합할 수 있습니다.

  • 추가 비즈니스 로직으로 Google Cloud Deploy를 확장합니다.

자세한 안내는 Google Cloud Deploy 구독 알림을 참조하세요.

전달 파이프라인 승인 관리

모든 타겟에 대한 승인을 요구할 수 있으며 해당 타겟에 대한 출시를 승인 또는 거부할 수 있습니다.

Pub/Sub 및 Google Cloud Deploy API를 사용하여 워크플로 관리 시스템(예: ServiceNow) 또는 다른 시스템을 Google Cloud Deploy와 통합하여 프로그래매틱 방식으로 승인을 관리할 수 있습니다.

승인 필요

타겟의 승인을 요청하려면 타겟 구성에서 requireApprovaltrue로 설정합니다.

     apiVersion: deploy.cloud.google.com/v1
     kind: Target
     metadata:
      name:
     description:
     requireApproval: true

자세한 내용은 배포 파이프라인 구성을 참조하세요.

출시가 승인 대기 중인 경우 cd-approvals Pub/Sub 주제를 구독하는 사용자 또는 시스템이 알림을 받은 후 출시를 승인하거나 거부할 수 있습니다.

출시 승인 또는 거부

roles/clouddeploy.approver 역할이 있는 모든 사용자 또는 서비스 계정은 승인이 필요한 타겟에 대한 Google Cloud Deploy 출시를 승인할 수 있습니다.

서비스 알림을 사용하여 승인이 필요한 알림을 받은 통합 워크플로 관리 시스템에서 Google Cloud Deploy API를 사용하여 출시를 승인하거나 거부할 수 있습니다.

수동 승인 또는 거부

콘솔

  1. Google Cloud 콘솔에서 Google Cloud Deploy 배포 파이프라인 페이지로 이동하여 사용 가능한 배포 파이프라인 목록을 확인합니다.

    배포 파이프라인 페이지 열기

    배포 파이프라인 목록이 Google Cloud 콘솔에 표시됩니다. 구성되었지만 Google Cloud Deploy 서비스로 등록되지 않은 배포 파이프라인은 표시되지 않습니다.

  2. 배포 파이프라인 이름을 클릭합니다.

    파이프라인 시각화가 표시됩니다. 승인이 대기 중이고 roles/clouddeploy.approver 역할 또는 이에 상응하는 권한이 있는 경우 시각화에 검토 링크가 포함됩니다.

    승인 대기 중인 배포 파이프라인 시각화

  3. Review(검토)를 클릭합니다.

    승인 대기 중인 출시 목록이 표시됩니다.

    승인 대기 중인 파이프라인 출시

  4. Review(검토)를 클릭합니다.

    출시 승인 화면이 표시됩니다.

    승인 대기 중인 출시 세부정보

    Manifest diff 탭에는 현재 배포된 버전(있는 경우)에서 현재 승인(또는 거부)하는 버전에서 렌더링된 매니페스트의 변경사항이 표시됩니다.

  5. 승인 또는 거부를 클릭합니다.

    승인하면 애플리케이션이 대상에 배포됩니다. 거부하면 애플리케이션이 배포되지 않으며 다시 승격하지 않는 한 나중에 승인할 수 없습니다.

gcloud

roles/clouddeploy.approver 역할을 가진 사용자는 수동으로 출시를 승인하거나 거부할 수 있습니다. 승인하는 방법은 다음과 같습니다.

gcloud deploy rollouts approve rollout-name --delivery-pipeline=pipeline-name --region=region --release=release-name

거부하는 방법은 다음과 같습니다.

gcloud deploy rollouts reject rollout-name --delivery-pipeline=pipeline-name --region=region --release=release-name

배포 파이프라인 정지

배포 파이프라인을 정지할 수 있습니다. 파이프라인을 정지하면 다음 작업에 더 이상 파이프라인을 사용할 수 없습니다.

  • 출시 버전 만들기

  • 출시 버전 승격

  • 출시 버전 롤백

  • 출시 버전 재배포

  • 출시 승인 또는 거부

다음과 같은 이유로 배포 파이프라인을 정지할 수 있습니다.

  • 출시 버전에 문제가 있으며 문제가 발견될 때까지 해당 파이프라인에 대한 추가 작업을 막으려고 합니다.

  • 연말연시 쇼핑 성수기에 조직에서 연말연시 중단을 관찰하려는 경우가 예에 해당합니다.

배포 파이프라인을 정지하려면 다음 안내를 따르세요.

  1. 배포 파이프라인 구성 파일에 다음 속성을 포함합니다.

    suspended: true
    

    이 속성은 다음과 같이 최상위 수준으로 이동합니다.

    apiVersion: deploy.cloud.google.com/v1
    kind: DeliveryPipeline
    metadata:
     Name: my-app
    description: main application pipeline
    suspended: true
    serialPipeline:
     stages:
       - targetId: dev
         profiles: []
       - targetId: staging
         profiles: []
       - targetId: prod
         profiles: []
    
  2. 배포 파이프라인을 등록합니다.

    gcloud deploy apply --file=PIPELINE_CONFIG --region=REGION --project=PROJECT_ID
    

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

    • PIPELINE_CONFIG

      배포 파이프라인 구성 파일의 이름이며 일반적으로 clouddeploy.yaml입니다. 필수 항목입니다.

    • REGION

      배포 파이프라인이 생성된 리전의 이름입니다(예: us-central1). 필수 항목입니다.

    • PROJECT_ID

      배포 파이프라인이 생성된 프로젝트의 프로젝트 ID입니다. 필수 항목입니다.

배포 파이프라인이 이제 정지 상태이므로 출시 버전 생성, 승격, 롤백, 재배포와 출시 승인이 방지됩니다.

파이프라인이 정지되므로 승격과 같은 작업이 방지됩니다.

정지된 배포 파이프라인에서 출시

배포 파이프라인을 정지할 때 진행 중이거나 큐에 추가된 출시가 있는 경우 해당 출시는 취소되지 않고 계속해서 완료됩니다. 하지만 출시 버전을 만들거나 승격할 수 없으므로 재개될 때까지 해당 파이프라인을 사용하여 새로운 출시를 만들 수 없습니다.

파이프라인 정지에 필요한 IAM 권한

배포 파이프라인 정지에 필요한 IAM 권한은 다음 역할에 포함되어 있습니다.

  • roles/clouddeploy.admin

  • roles/clouddeploy.operator

  • roles/clouddeploy.developer

정지된 배포 파이프라인 재개

정지된 배포 파이프라인을 다시 사용 설정하려면 다음 안내를 따르세요.

  1. 배포 파이프라인 구성 파일에서 suspended: true 속성을 삭제하거나 false로 설정합니다.

  2. 구성을 적용합니다.

    gcloud deploy apply --file=PIPELINE_CONFIG --region=REGION --project=PROJECT_ID
    

정지된 파이프라인 확인

잠긴 배포 파이프라인은 Google Cloud 콘솔 배포 파이프라인 뷰에서 이름 옆에 자물쇠 아이콘이 표시됩니다.

배포 파이프라인이 정지되었음을 나타내는 자물쇠 아이콘

이미 사용 중인 전달 파이프라인 변경

배포 파이프라인을 변경하려면 배포 파이프라인 정의를 수정하면 됩니다.

하지만 Google Cloud Deployment가 파이프라인과 타겟 및 관리하는 출시 버전 간의 관계를 처리하는 방식으로 인해 예상한 결과가 표시되지 않을 수 있습니다.

releaserollout 리소스는 release가 생성될 때 정의된 파이프라인과 영구적으로 연결됩니다. 출시 버전이 생성된 후에 배포 파이프라인 구성(대상 정의 포함)을 변경하면 해당 출시 버전이 더 이상 정의와 일치하지 않게 됩니다.

이러한 방식으로 리소스를 유지하면 대상 전체에서 일관되게 작동할 수 있으며 구성 변경으로 인해 중단되지 않습니다. 하지만 이는 의도한 동작이 아닐 수 있으며, 이 경우 업데이트된 파이프라인을 사용하여 배포할 새 출시 버전을 만들면 됩니다.

이러한 불일치가 있고 출시 버전 승격과 같은 특정 작업을 수행하려고 하면 Google Cloud Deploy에서 경고를 반환합니다.

자세한 내용은 출시 버전별 파이프라인 인스턴스를 참조하세요.

전달 파이프라인 삭제

하위 리소스(출시 또는 출시)가 없는 전송 파이프라인이 있는 경우 다음 명령어를 실행하여 삭제할 수 있습니다.

gcloud deploy delivery-pipelines delete PIPELINE_NAME

삭제하려는 파이프라인에 연결된 출시 버전 또는 출시가 있는 경우 파이프라인과 하위 리소스를 삭제하려면 --force 플래그를 포함해야 합니다.

gcloud deploy delivery-pipelines delete PIPELINE_NAME --force

다음 단계