맞춤 카나리아 배포

이 문서에서는 Cloud Deploy를 사용하여 모든 대상 유형에 애플리케이션을 배포하기 위해 커스텀 카나리아 배포를 구성하고 사용하는 방법을 설명합니다.

커스텀 카나리아 배포의 작동 방식

맞춤 카나리아 배포 전략을 사용하여 배포할 때 Cloud Deploy는 선택한 트래픽 균형 조정 구성을 용이하게 하기 위해 매니페스트를 수정하지 않습니다. 대신 각 카나리아 단계의 타겟 런타임에 적용되는 매니페스트를 제공해야 합니다.

필수 권한 필요

Cloud Deploy를 사용하는 데 필요한 다른 Identity and Access Management 권한 외에도 카나리아 배포에 필요할 수 있는 추가 작업을 수행하기 위해 다음 권한이 필요합니다.

  • clouddeploy.rollouts.advance
  • clouddeploy.rollouts.ignoreJob
  • clouddeploy.rollouts.cancel
  • clouddeploy.rollouts.retryJob
  • clouddeploy.jobRuns.get
  • clouddeploy.jobRuns.list
  • clouddeploy.jobRuns.terminate

이러한 권한이 포함된 사용 가능한 역할에 대한 자세한 내용은 IAM 역할 및 권한을 참조하세요.

skaffold.yaml 준비

skaffold.yaml 파일은 매니페스트가 렌더링되고 배포되는 방식을 정의합니다. 맞춤 카나리아 배포의 경우 선택한 트래픽 균형 조정 구성을 용이하게 하기 위해 각 카나리아 단계와 연결된 프로필을 정의해야 합니다. 이러한 프로필은 전달 파이프라인 전략 구성의 단계에 매핑됩니다.

다음은 맞춤 카나리아에서 사용하는 skaffold.yaml 구성의 예입니다.

apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: canary-25
  manifests:
    rawYaml:
    - canary-25-resources.yaml
- name: canary-50
  manifests:
    rawYaml:
    - canary-50-resources.yaml
- name: stable
  manifests:
    rawYaml:
    - stable-resources.yaml

커스텀 카나리아 구성

커스텀 카나리아 구성을 사용하면 배포 파이프라인 정의에 다음을 지정합니다.

  • 출시 단계 이름

    완전 자동화된 카나리아에서 Cloud Deploy는 단계 이름을 지정합니다(예: canary-25, canary-75, stable). 그러나 커스텀 카나리아를 사용하면 이 카나리아 단계의 모든 단계에서 고유하고 리소스 ID 제한을 준수하는 한 각 단계에 이름을 지정할 수 있습니다. 하지만 최종(100%) 단계 이름은 stable이어야 합니다.

  • 단계별 백분율 목표

    단계별로 별도로 백분율을 지정합니다.

  • 단계에 사용할 Skaffold 프로필

    각 단계 또는 동일한 프로필 또는 모든 조합에 대해 별도의 Skaffold 프로필을 사용할 수 있습니다. 각 프로필은 서로 다른 Cloud Run 서비스 정의를 사용할 수 있습니다. 또한 지정된 단계에 대해 하나를 초과하는 프로필을 사용할 수 있습니다. Cloud Deploy는 이를 결합합니다.

  • 단계에 확인 작업이 있는지 여부

    확인을 사용 설정하는 경우 확인에 사용할 skaffold.yaml구성해야 합니다.

  • 단계에 배포 전 또는 배포 후 작업이 있는지 여부

    배포 전 또는 배포 후 작업을 사용 설정할 경우 이러한 작업의 skaffold.yaml구성해야 합니다.

커스텀 카나리아 구성 요소

다음 YAML에서는 완전 커스텀 카나리아 배포 단계 구성을 보여줍니다.

strategy:
  canary:
    # Custom configuration for each canary phase
    customCanaryDeployment:
      phaseConfigs:
      - phaseId: "PHASE1_NAME"
        percentage: PERCENTAGE1
        profiles: [ "PROFILE_NAME" ]
        verify: true | false
        predeploy:
          actions: "PREDEPLOY_ACTION"
        postdeploy:
          actions: "POSTDEPLOY_ACTION"
      - 
      - phaseId: "stable"
        percentage: 100
        profiles: [ "LAST_PROFILE_NAME" ]
        verify: true|false
        predeploy:
          actions: "PREDEPLOY_ACTION"
        postdeploy:
          actions: "POSTDEPLOY_ACTION"

이 YAML에서

  • PHASE1_NAME

    단계 이름입니다. 각 단계 이름은 고유해야 합니다.

  • [ "PROFILE_NAME" ]

    단계에 사용할 프로필의 이름입니다. 각 단계에 동일한 프로필을 사용하거나 단계마다 다른 프로필을 사용하거나 이를 조합하여 사용할 수 있습니다. 또한 프로필을 하나 넘게 지정할 수 있습니다. Cloud Deploy는 지정된 모든 프로필과 함께 전체 단계에서 사용되는 프로필 또는 매니페스트를 사용합니다.

  • stable

    마지막 단계의 이름은 stable이어야 합니다.

  • PERCENTAGE1

    첫 번째 단계에 배포할 백분율입니다. 각 단계에는 고유한 백분율 값이 있어야 하며 해당 값은 전체 백분율(예: 10.5 아님)이어야 하며 단계는 오름차순이어야 합니다.

  • verify: true|false

    단계에 대해 확인 작업을 포함할지 여부를 Cloud Deploy에 알려줍니다. 확인을 사용할 각 단계에 대해 Scaffold는 해당 단계에 대해 렌더링 및 배포에 지정된 동일한 프로파일을 확인에 사용합니다.

  • PREDEPLOY_ACTION

    skaffold.yaml에서 배포 전에 실행할 맞춤 액션을 정의하는 데 사용한 ACTION_NAME과 동일합니다.

  • POSTDEPLOY_ACTION

    skaffold.yaml에서 배포 후 실행할 맞춤 액션을 정의하는 데 사용한 ACTION_NAME과 동일합니다.

마지막 단계의 백분율은 100이어야 합니다. 이 customCanaryDeployment 스탠자에서 구성한 순서에 따라 단계가 실행되지만 백분율 값이 오름차순이 아닌 경우 배포 파이프라인을 등록하는 명령어가 실패하고 오류가 발생합니다.

커스텀 카나리아 구성에는 runtimeConfig 스탠자가 포함되지 않습니다. runtimeConfig를 포함하면 커스텀 자동 카나리아로 간주됩니다.

다음 단계