이 문서에서는 카나리아 배포 전략을 구성하고 사용하는 방법을 설명합니다.
카나리아 배포란 무엇인가요?
카나리아 배포는 이미 배포된 버전과 새 버전 간에 트래픽을 분할하여 완전히 배포되기 전에 일부 사용자에게 배포하는 애플리케이션의 점진적 출시입니다.
지원되는 대상 유형
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)를 만듭니다.
커스텀
커스텀 카나리아 (서비스 네트워킹, 게이트웨이 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
상태로 되돌아갑니다.
다음 단계
카나리아 배포 빠른 시작 사용해 보기
카나리아 출시 수명 주기 관리 방법 알아보기
특정 타겟 환경과 관련된 가이드로 이동하세요.