배포 확인하기

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

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

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

배포 확인 작동 방식

  1. 확인을 위해 Skaffold를 구성합니다.

    이 구성은 테스트를 실행하는 데 사용할 컨테이너 이미지와 해당 컨테이너 이미지에서 실행할 특정 명령어(예: 스크립트)를 식별합니다.

  2. 배포를 확인하기 위해 배포 파이프라인에 하나 이상의 대상을 구성합니다.

    이 구성으로 해당 대상에 확인을 사용 설정할 수 있습니다.

  3. 출시가 배포되면(skaffold apply) Google Cloud Deploy가 자체 실행 환경에서 skaffold verify 명령어를 실행합니다.

  4. Skaffold는 skaffold.yamlverify 스탠자에 지정된 하나 이상의 테스트를 호출하여 배포된 애플리케이션에 실행합니다.

  5. 테스트 중 하나라도 실패하면 확인이 실패합니다.

    • 확인에 실패했기 때문에 출시도 실패합니다.

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

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

  6. 실패한 확인을 다시 시도할 수 있습니다.

확인에 사용되는 구성요소

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

  • 단계

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

  • 작업

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

  • 작업 실행

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

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

배포 확인으로 생성된 알림

Google Cloud Deploy는 Pub/Sub 메시지를 생성하고 다음 이벤트가 발생할 경우 게시합니다.

  • 작업 실행 생성, 업데이트, 삭제

    이 알림은 clouddeploy-resources 주제에 게시되며 다음 속성을 포함합니다.

    • Resource
    • ResourceType(JobRun)
    • Action(Create, Update, Delete)
    • ProjectNumber
    • Location
    • TargetId
    • DeliveryPipelineId
    • ReleaseId
    • RolloutId
    • JobRunId

다음은 clouddeploy-resources 주제에 게시된 작업 실행 생성에 대한 Pub/Sub 메시지의 예시입니다.

{
    "ackId": "UAYWLF1GSFE3GQhoUQ5PXiM_NSAoRRAGAE8CKF15MFcrQVh9Dz4NGXJ9YXRiWRIJBkUHeF9cEQ1iXE5EB0nq0KDVV1dKXxYGAExQeVhbHQVoWVh0Bnn7h5nK-8HjYwk9OqKarPdtO4PY2fNHZiI9XhJLLD5-My5FQV5AEkw4G0RJUytDCypYEU4EISE-MD5FU0Q",
    "message": {
      "attributes": {
        "Action": "Create",
        "DeliveryPipelineId": "dv-pipeline",
        "JobRunId": "634f8c6f-30c3-49ca-af80-68dc24d4cc5d",
        "Location": "us-central1",
        "ProjectNumber": "253401481285",
        "ReleaseId": "test-release-100",
        "Resource": "projects/253401481285/locations/us-central1/deliveryPipelines/dv-pipeline/releases/test-release-100/rollouts/test-release-100-to-dev-0001/jobRuns/634f8c6f-30c3-49ca-af80-68dc24d4cc5d",
        "ResourceType": "JobRun",
        "RolloutId": "test-release-100-to-dev-0001"
      },
      "messageId": "5572937706805411",
      "publishTime": "2022-09-07T14:00:46.040Z"
    }
  },
  • 작업 실행 시작, 성공, 실패

    이 알림은 clouddeploy-operations 주제에 게시되며 다음 속성을 포함합니다.

    • Resource
    • ResourceType(JobRun)
    • Action(Start, Succeed, Failure)
    • ProjectNumber
    • Location
    • TargetId
    • DeliveryPipelineId
    • ReleaseId
    • RolloutId
    • JobRunId
    • PhaseId
    • JobId
    • JobType(Deploy 또는 Verify)

다음은 clouddeploy-operations 주제에 게시되는 실패한 작업 실행에 대한 Pub/Sub 메시지의 예시입니다.

{
    "ackId": "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUUBAgUBXx9cEFPdVhec2hRDRlyfWB9aVsbCAUXU3cJURsHaE5tdR-6xcvaS0NVb18UAgRFWndfXhMEblhfcy-fkK3HwvT9U0AvOemNgdZpe6jHiulvZiM9XxJLLD5-My5FQV5AEkw4G0RJUytDCypYEU4EISE-MD5FUw",
    "message": {
      "attributes": {
        "Action": "Failure",
        "DeliveryPipelineId": "dv-pipeline",
        "JobId": "verify",
        "JobRunId": "b389224a-c259-4a00-ab75-c22e48bc3136",
        "JobType": "Verify",
        "Location": "us-central1",
        "PhaseId": "stable",
        "ProjectNumber": "253401481285",
        "ReleaseId": "test-release-101",
        "Resource": "projects/253401481285/locations/us-central1/deliveryPipelines/dv-pipeline/releases/test-release-101/rollouts/test-release-101-to-dev-0001/jobRuns/b389224a-c259-4a00-ab75-c22e48bc3136",
        "ResourceType": "JobRun",
        "RolloutId": "test-release-101-to-dev-0001",
        "TargetId": "dev"
      },
      "messageId": "5573609905896436",
      "publishTime": "2022-09-07T15:35:37.906Z"
    }
  },

배포 확인을 위한 Google Cloud Deploy 구성

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

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
 - targetId: prod
   profiles: []
   strategy:
     standard:
       verify: false

이 구성에서 배포 확인은 dev 대상에서 사용 설정되지만 prod 대상에서는 사용 설정되지 않습니다. verify: falseverify 속성 또는 전체 strategy 스탠자를 생략하는 것과 같습니다.

확인 작업은 자체 실행 환경 내에서 실행됩니다. 이 실행 환경은 RENDERDEPLOY에서와 마찬가지로 VERIFY에 대해 구성할 수 있습니다.

배포 확인을 위한 Skaffold 구성

대상의 배포 확인을 사용 설정하려면 배포의 skaffold.yaml 구성 파일에 verify 스탠자가 있어야 합니다. 대상별로 다른 프로필을 사용하는 경우 특정 Skaffold 프로필의 스탠자일 수 있습니다.

verify 스탠자는 확인(예: 통합 테스트)을 위해 실행할 컨테이너를 식별합니다.

다음은 verify 스탠자를 포함하는 skaffold.yaml의 예시입니다.

apiVersion: skaffold/v3alpha1
kind: Config
build:
  artifacts:
    - image: integration-test
      context: integration-test
manifests:
  rawYaml:
  - kubernetes.yaml
deploy:
  kubectl: {}
verify:
- name: verify-integration-test
  container:
    name: integration-test
    image: integration-test
    command: ["./test-systems.sh"]
- name: verify-endpoint-test
  container:
    name: alpine
    image: alpine
    command: ["/bin/sh"]
    args: ["-c", "wget $ENDPOINT_URL"]

이 간단한 예시에서는 사용할 컨테이너를 식별하는 verify 스탠자와 해당 컨테이너에서 실행할 테스트 스크립트를 보여줍니다.

확인 재시도

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

gcloud alpha 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로 변경됩니다.

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

사용 가능한 환경 변수

Google Cloud Deploy는 테스트에 사용할 수 있는 VERIFY 실행 환경에서 다음 환경 변수를 제공하고 채웁니다.

  • TARGET_TYPE

    대상의 특정 런타임 유형입니다. GKE, ANTHOS 또는 RUN입니다.

  • GKE_CLUSTER

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

  • ANTHOS_MEMBERSHIP

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

  • CLOUD_RUN_LOCATION

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

  • CLOUD_RUN_PROJECT

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