맞춤 카나리아 배포

이 문서에서는 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는 이를 결합합니다.

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

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

커스텀 카나리아 구성 요소

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

strategy:
  canary:
    # Custom configuration for each canary phase
    customCanaryDeployment:
      phaseConfigs:
      - phaseId: "PHASE1_NAME"
        percentage: PERCENTAGE1
        profiles: [ "PROFILE_NAME" ]
        verify:
          tasks: [TASKS]
        predeploy:
          tasks: [TASKS]
        postdeploy:
          tasks: [TASKS]
      - 
      - phaseId: "stable"
        percentage: 100
        profiles: [ "LAST_PROFILE_NAME" ]
        verify:
          tasks: [TASKS]
        predeploy:
          tasks: [TASKS]
        postdeploy:
          tasks: [TASKS]

이 YAML에서

  • PHASE1_NAME

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

  • [ "PROFILE_NAME" ]

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

  • stable

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

  • PERCENTAGE1

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

  • verify 스탠자를 구성하여 배포 확인을 사용 설정할 수 있습니다. 이렇게 하면 verify 작업이 단계에 추가됩니다.

  • predeploy 스탠자를 구성하여 사전 배포 후크를 사용 설정할 수 있습니다. 이렇게 하면 predeploy 작업이 단계에 추가됩니다.

  • postdeploy 스탠자를 구성하여 postdeploy hooks를 사용 설정할 수 있습니다. 이렇게 하면 postdeploy 작업이 단계에 추가됩니다.

  • verify, predeploy, postdeploy 아래의 tasks 속성은 해당 작업의 일부로 실행할 하나 이상의 작업으로 구성됩니다. 구성된 작업은 정의된 순서대로 순차적으로 실행됩니다.

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

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

다음 단계