이 문서에서는 카나리아 배포 전략을 구성하고 사용하는 방법을 설명합니다.
카나리아 배포란 무엇인가요?
카나리아 배포는 이미 배포된 버전과 새 버전 간에 트래픽을 분할하여 완전히 배포되기 전에 일부 사용자에게 배포하는 애플리케이션의 점진적 출시입니다.
지원되는 대상 유형
Cloud Deploy에서 카나리아 배포는 다음을 포함하여 모든 대상 유형을 지원합니다.
- Google Kubernetes Engine 및 GKE Enterprise 
- Cloud Run (작업 아님, 서비스만) 
카나리아는 다중 대상에서도 작동합니다.
카나리아 배포 전략을 사용하는 이유는 무엇인가요?
카나리아 배포를 사용하면 애플리케이션을 부분적으로 출시할 수 있습니다. 이렇게 하면 모든 사용자에게 새 버전의 애플리케이션을 제공하기 전에 안정성을 확인할 수 있습니다.
예를 들어 GKE 또는 GKE Enterprise에 배포하는 경우 제한된 수의 포드에 애플리케이션의 새 버전을 배포할 수 있습니다. 이전 버전은 계속 실행되지만 더 많은 트래픽이 새 포드로 전송됩니다.
Cloud Run에 배포하는 경우 Cloud Run은 구성한 백분율에 따라 자체적으로 이전 버전과 새 버전 간에 트래픽을 분할합니다.
카나리아 유형
Cloud Deploy를 사용하면 다음 유형의 카나리아 배포를 구성할 수 있습니다.
- 자동 - 자동 카나리아 배포 (서비스 네트워킹, 게이트웨이 API 또는 Cloud Run의 경우)의 경우 점진적 배포를 표현하는 일련의 백분율로 Cloud Deploy를 구성합니다. Cloud Deploy는 추가 작업을 자동으로 수행해서 이전 및 신규 버전 사이에 트래픽 백분율을 할당합니다. 
- 커스텀 자동 - 커스텀 자동화 카나리아 (서비스 네트워킹, 게이트웨이 API 또는 Cloud Run)의 경우 다음을 제공할 수 있습니다. - 단계 이름
- 백분율 목표
- 단계에 사용할 Skaffold 프로필
- 확인 작업 포함 여부
- 사전 배포 또는 사후 배포 작업을 포함할지 여부 또는 둘 다 포함할지 여부
 - 하지만 트래픽 균형 조정 정보를 제공할 필요가 없습니다. Cloud Deploy에서 필요한 리소스 (서비스 네트워킹, 게이트웨이 API 또는 Cloud Run)를 만듭니다. 
- 커스텀 - 커스텀 카나리아를 사용하면 다음을 포함하여 각 카나리아 단계를 개별적으로 구성할 수 있습니다. - 단계 이름
- 백분율 목표
- 단계에 사용할 Skaffold 프로필
- 확인 작업 포함 여부
- 사전 배포 또는 사후 배포 작업을 포함할지 여부 또는 둘 다 포함할지 여부
 - 또한 완전 커스텀 카나리아의 경우 모든 트래픽 분산 구성을 제공합니다. - 커스텀 카나리아에서는 모든 대상 유형이 지원됩니다. 
카나리아 배포 단계
카나리아 배포용 출시 버전을 만들면 각 카나리아 증분 단계와 100%를 위한 최종 stable 단계로 출시가 생성됩니다.
예를 들어 카나리아를 25%, 50%, 75% 단위로 구성하는 경우 출시 단계는 다음과 같습니다.
- canary-25
- canary-50
- canary-75
- stable
출시 단계, 작업, 작업 실행에 대한 자세한 내용은 출시 관리를 참조하세요.
카나리아 배포 전략으로 동시 배포 사용
동시 배포를 사용하여 카나리아 배포를 실행할 수 있습니다. 즉, 점진적으로 배포하는 대상에서 하위 대상을 2개 이상 구성할 수 있습니다. 예를 들어 별도의 리전의 클러스터에 동시에 점진적으로 배포할 수 있습니다.
동시 카나리아와 단일 대상 카나리아의 차이점
- 단일 대상 카나리아 배포와 마찬가지로 GKE 대상에 배포하는 경우 매니페스트에 Kubernetes 배포 구성과 Kubernetes 서비스 구성이 필요합니다. 
- 단일 대상 카나리아 배포와 마찬가지로 배포 파이프라인 구성에는 해당 단계에 대한 단계 정의 내에 - strategy.canary스탠자가 포함되어야 합니다.
- 출시 버전을 만들면 컨트롤러 출시와 하위 출시가 생성됩니다. - 컨트롤러와 하위 출시 유형 모두 구성된 모든 카나리아 백분율에 대해 별도의 단계가 있으며 카나리아 100%에 대한 - stable단계가 있습니다.
- 하위 출시를 진행할 수 없습니다. - 컨트롤러 출시만 진행할 수 있습니다. 컨트롤러 출시를 다음 단계로 진행하면 하위 항목 출시도 Cloud Deploy에서 진행됩니다. 
- 컨트롤러 출시에서 실패한 작업은 재시도할 수 없습니다. - 하위 출시에서만 작업을 재시도할 수 있습니다. 
- 컨트롤러 출시에서는 실패한 작업을 무시할 수 없습니다. - 하위 출시에서만 실패한 작업을 무시할 수 있습니다. 
- 컨트롤러 출시를 취소할 수 있지만 하위 출시를 취소할 수 없습니다. 
- 컨트롤러 출시가 아닌 하위 출시에서만 작업 실행을 종료할 수 있습니다. 
카나리아에서 동시 출시가 실패할 경우 취해야 할 조치
하위 출시가 실패하면 하위 출시에서 발생하는 상황에 따라 컨트롤러 출시가 다른 상태로 전환될 수 있습니다.
- 하나 이상의 하위 출시가 실패하지만 하위 출시 중 하나라도 여전히 - IN_PROGRESS인 경우, 컨트롤러 출시가- IN_PROGRESS상태로 유지됩니다.
- 하나 이상의 하위 출시가 실패하지만 하위 출시 중 하나라도 성공하는 경우, 현재 단계 이후 단계가 더 있으면 컨트롤러 출시는 - HALTED됩니다.- stable단계인 경우 컨트롤러 출시는- FAILED입니다.- HALTED를 사용하면 실패한 하위 출시 내의 실패한 작업을 무시 또는 재시도할 수 있거나 컨트롤러 출시를 취소하여 하위 출시에서 추가 작업을 방지할 수 있습니다.
- 컨트롤러 출시가 실패한 하위 출시로 인해 - HALTED상태이고 하위 출시에서 실패한 작업을 무시하면 컨트롤러 출시가- IN_PROGRESS상태로 되돌아갑니다.
다음 단계
- 카나리아 배포 빠른 시작 사용해 보기 
- 카나리아 출시 수명 주기 관리 방법 알아보기 
- 특정 타겟 환경과 관련된 가이드로 이동하세요.