Cloud Deploy 알림 사용

이 페이지에서는 알림 구독 방법을 포함해 Cloud Deploy 서비스 알림을 사용하는 방법을 설명합니다.

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

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

  • 추가 비즈니스 로직으로 Google Cloud Deploy를 확장할 수 있습니다.

사용 가능한 주제

Cloud Deploy는 다음 Google Pub/Sub 주제 집합에 메시지를 게시합니다.

  • clouddeploy-resources

    Cloud Deploy 코어 리소스(자동화, 커스텀 대상 유형, 배포 파이프라인, 작업 실행, 출시 버전, 출시, 대상)에 대한 작업(만들기, 업데이트, 삭제)이 있는 경우

  • clouddeploy-operations

    • Cloud Deploy에서 Skaffold 구성을 렌더링하는 경우
    • Cloud Deploy가 대상(Start, Succeed, Failure, Terminated(작업 실행), Cancelled(출시))에 배포되는 경우
  • clouddeploy-approvals

    • Cloud Deploy에 출시에 대한 승인(또는 거부)이 필요한 경우
    • 출시가 승인 또는 거부된 경우
  • clouddeploy-advances

    • Cloud Deploy 출시가 한 단계에서 다음 단계로 진행되는 경우
    • 출시를 진행할 준비가 된 경우

Pub/Sub 구독에 푸시 또는 풀 모델을 사용할 수 있습니다.

Cloud Deploy 서비스 알림 수신

Cloud Deploy 서비스 알림을 수신하려면 다음 안내를 따르세요.

  1. Cloud Deploy API를 사용 설정합니다.

    Cloud Deploy API 사용 설정

    Cloud Deploy 서비스 에이전트 서비스 계정은 Cloud Deploy API를 처음 호출할 때 프로젝트에 자동으로 추가됩니다. 이 서비스 계정을 사용하면 Pub/Sub를 사용해서 Cloud Deploy 서비스 알림을 수신할 수 있습니다.

    서비스 계정 이름의 형식은 다음과 같습니다. 여기서 project-number는 프로젝트 번호입니다.

     service-project-number@gcp-sa-clouddeploy.iam.gserviceaccount.com
    

    IAM 페이지에 여전히 Cloud Deploy 서비스 에이전트 서비스 계정이 표시되지 않거나 Pub/Sub 알림을 수신할 수 없으면 이 서비스 계정을 프로젝트에 추가합니다.

    1. Google Cloud 콘솔에서 IAM 페이지를 엽니다.

      IAM 페이지 열기

    2. 추가를 클릭합니다.

    3. 다음 주 구성원을 추가합니다. 여기서 project-number는 프로젝트 번호입니다.

      service-project-number@gcp-sa-clouddeploy.iam.gserviceaccount.com
      
    4. 역할로 Service Management > Cloud Deploy 서비스 에이전트를 선택합니다.

    5. 저장을 클릭합니다.

  2. Pub/Sub API를 사용 설정합니다.

    Pub/Sub API 사용 설정

  3. 수신하려는 알림 유형을 기준으로 Pub/Sub 주제를 만듭니다.

    gcloud pubsub topics create clouddeploy-resources
    gcloud pubsub topics create clouddeploy-operations
    gcloud pubsub topics create clouddeploy-approvals
    gcloud pubsub topics create clouddeploy-advances
    

    Pub/Sub 주제 관리에 대해 자세히 알아보려면 주제 및 구독 관리를 참조하세요.

Cloud Deploy 서비스 알림 구독

알림 구독에는 여러 옵션이 있습니다. 예를 들어 엔드포인트로 메시지를 푸시하거나 구독을 폴링하는 Python 앱을 작성할 수 있습니다.

Cloud Deploy 서비스 알림을 위한 Pub/Sub 구독 설정 방법을 보려면 Pub/Sub 구독자 가이드를 참조하세요. 또한 구독자 애플리케이션을 더 쉽게 개발할 수 있게 해주는 Pub/Sub 클라이언트 라이브러리에 대해 알아볼 수도 있습니다.

필드 값

이 섹션에서는 Cloud Deploy Pub/Sub 메시지에서 필드에 사용 가능한 값을 보여줍니다.

Action의 경우

이러한 알림에서 Action에 가능한 값은 다음과 같습니다.

  • 리소스의 경우

    • Create
    • Update
    • Delete
  • 작업의 경우:

    • Start
    • Succeed
    • Failure
    • Terminated
    • Cancelled
  • 승인의 경우:

    • Required
    • Approved
    • Rejected
  • 고급의 경우:

    • Required
    • Advanced

ResourceType의 경우

ResourceType에 사용 가능한 값은 다음과 같습니다.

  • DeliveryPipeline
  • Target
  • Release
  • Rollout
  • JobRun

샘플 메시지

다음 예시는 Cloud Deploy 주제에서 Pub/Sub 메시지의 몇 가지 유형을 보여줍니다.

전달 파이프라인 만들기

다음은 새로운 deliveryPipeline 만들기에 대한 응답으로 clouddeploy-resources에 게시된 Pub/Sub 메시지 예시입니다.

{
  "ackId":   "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQBQgUBXx9cEFMdVhddmhRDRlyfWByY11AAgVMVnldURsHaE5tdR_Wg6LHS0NVaF4TBgpGVX5fXx0IYVtedi_m7r_2wPXOXkAvOYXL6Mtpe735h9xvZiM9XxJLLD5-IzRFQV5AEkwoAURJUytDCypYEU4EISE-MD5FUw",
  "message": {
    "attributes": {
      "Action": "Create",
      "Resource": "projects/120123456789/locations/us-central1/deliveryPipelines/etest",
      "ResourceType": "DeliveryPipeline",
      "Location": "us-central1",
      "DeliveryPipelineId": "etest",
      "ProjectNumber": "120123456789",

    },
    "messageId": "2407836004659723",
    "publishTime": "2021-05-17T21:24:48.204Z"
  }
}

렌더링 시작

다음은 출시 버전이 렌더링되었음을 알리는 clouddeploy-operations에 게시된 Pub/Sub 메시지의 예시입니다.

{
  "ackId": "U0RQBhYsXUZIUTcZCGhRDk9eIz81IChFFwYIFAV8fXBBTHVeXHRoUQ0Zcn1gcmNfR1MLFlN5WFEaB2hObXUfioKix0tDVWheEwYKRVZ3W1kdBGFVXH0v_qD5rMP1zl5AKDnZyujLaXudkqxfZiM9XxJLLD5-PTNFQV5AEkw2BkRJUytDCypYEU4EISE-MD5F",
  "message": {
    "attributes": {
      "Action": "Start",
      "Resource": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2",
      "ResourceType": "Release"
      "Location": "us-central1",
      "DeliveryPipelineId": "etest",
      "ProjectNumber": "120123456789",
      "ReleaseId": "f2",
    },
    "messageId": "2407805942699908",
    "publishTime": "2021-05-17T21:28:04.201Z"
  }
}

승인 필요

다음은 출시에 승인이 필요함을 알리는 clouddeploy-approvals에 게시된 Pub/Sub 메시지의 예시입니다.

{
   "ackId": "RVNEUAYWLF1GSFE3GQhoUQ5PXiM_NSAoRRILUxNRXHQBWhBpWF8aB1ENGXJ8ZnxtCRBVU0FWf1VbEQ16bVxti6C2rERfQXduWhQJBkBXd11aHQhoXF9dotnkpeTv2kFwYSuN8_7mSH_Mo6AYZiA9XBJLLD5-IzZFQV5AEkwoA0RJUytDCypYEU4EISE-MD4",
   "message": {
     "attributes": {
       "Action": "Required",
       "Rollout": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2/rollouts/rollout-123"
       "ReleaseId": "f2",
       "RolloutId": "rollout-123",
       "TargetId": "prod",
       "Location": "us-central1",
       "ProjectNumber": "120123456789",
     },
     "messageId": "2407845492165003",
     "publishTime": "2021-05-17T21:31:25.143Z"
   }
 }

출시 진행

다음은 출시가 한 단계에서 다음 단계로 진행되었음을 알리는 clouddeploy-advances에 게시되는 Pub/Sub 메시지의 예시입니다.

{
  "ackId": "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUSAwVPAihdeTFXKkFZdWhRDRlyfWB9bV4UUFZMV38OURoHaE5tdR_z4ILjS0NVbVkQBApEUHldXhkEa1RcfC-a0fmv1OzMV0AvOaCoyO9pe77r3NluZiM9XhJLLD5-Jz1FQV5AEkwsCERJUytDCypYEU4EISE-MD5FUw",
  "message": {
    "attributes": {
      "Action": "Advanced",
      "Location": "us-central1",
      "PhaseId": "stable",
      "ProjectNumber": "120123456789",
      "ReleaseId": "rollout-123",
      "Rollout": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2/rollouts/rollout-123",
      "RolloutId": "rollout-123",
      "TargetId": "prod"
    },
    "messageId": "7335813725293809",
    "publishTime": "2023-04-03T15:16:30.425Z"
  }
}

이 메시지에서 PhaseId는 출시가 진행된 단계를 식별합니다.

다음 단계