카나리 배포
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
카나리 배포는 인기 있는 지속적 배포 전략으로, 플릿의 일부가 애플리케이션의 새 버전으로 업데이트됩니다. 지속적 배포를 채택할 때 조직은 어떤 유형의 배포 전략을 사용할지 결정해야 합니다. 새 버전의 애플리케이션에 문제가 있는 경우 소수의 사용자만 영향을 받으며 변경 사항을 수정하거나 빠르게 되돌릴 수 있습니다.
카나리 배포는 인기 있는 지속적 배포 전략으로, 플릿의 일부가 애플리케이션의 새 버전으로 업데이트됩니다.
지속적 배포를 채택할 때 조직은 어떤 유형의 배포 전략을 사용할지 결정해야 합니다. 가장 인기 있는 전략 중 하나는 카나리 배포로, 플릿의 일부가 먼저 새 버전으로 업데이트됩니다. 이 서브셋인 카나리는 비유적인 탄광의 카나리아 역할을 합니다.
새 버전의 애플리케이션에 문제가 있는 경우 소수의 사용자만 영향을 받으며 변경 사항을 수정하거나 빠르게 되돌릴 수 있습니다.
사용 사례#
카나리 배포는 임시로 배포된 기능을 방문하는 사용자 기반의 일부를 모니터링하면서 일부 포드 플릿에만 기능을 제공하려는 경우에 사용할 수 있습니다. 모든 것이 잘 작동하면 기능을 프로덕션에 배포해도 문제가 없다는 것을 알고 배포할 수 있습니다.
카나리 배포는 사용자 인터페이스는 변경되지 않지만 성능이 동일하게 유지되거나 개선되는지 확인하려는 백엔드 리팩토링, 성능 개선 또는 기타 변경 사항에도 특히 필요합니다. 개발자는 사용자 인터페이스 변경 사항에 카나리를 사용할 때 주의해야 합니다. 기본적으로 동일한 사용자의 요청이 카나리와 비카나리 포드 사이에 무작위로 분산되어 혼란이나 오류가 발생할 수 있기 때문입니다. 필요한 경우 Kubernetes 서비스 정의에서 service.spec.sessionAffinity를 ClientIP로 설정하는 것을 고려할 수 있지만, 이는 이 문서의 범위를 벗어납니다.
Canary Ingress를 사용한 고급 트래픽 제어#
카나리 배포는 가중치, 세션, 쿠키 등의 요인에 따라 안정적인 배포와 카나리 배포 사이의 들어오는 HTTP 요청을 제어하는 고급 트래픽 라우팅 서비스인 Canary Ingress를 사용하면 더 전략적으로 활용할 수 있습니다. GitLab은 사용자가 새로운 배포를 빠르고 안전하게 배포할 수 있도록 Auto Deploy 아키텍처에서 이 서비스를 사용합니다.
카나리 배포에서 Canary Ingress를 설정하는 방법#
Auto DevOps 파이프라인이 v2.0.0+의 auto-deploy-image를 사용하는 경우 Canary Ingress가 기본적으로 설치됩니다.
Canary Ingress는 새 카나리 배포를 만들 때 사용할 수 있게 되며 카나리 배포가 프로덕션으로 승격될 때 삭제됩니다.
처음부터 설정하는 예시는 다음과 같습니다:
- Auto DevOps가 활성화된 프로젝트를 준비합니다.
- 프로젝트에 Kubernetes 클러스터를 설정합니다.
- 클러스터에 NGINX Ingress를 설치합니다.
- 위에서 할당된 Ingress 엔드포인트를 기반으로 기본 도메인을 설정합니다.
- Auto DevOps 파이프라인에서
v2.0.0+의auto-deploy-image가 사용되는지 확인합니다. 사용되지 않으면 설명서에 따라 이미지 버전을 지정합니다. - 새 Auto DevOps 파이프라인을 실행하고
productionjob이 성공하고 프로덕션 환경이 생성되는지 확인합니다. - Auto DevOps 파이프라인에 대한
canary배포 job을 구성합니다. - 새 Auto DevOps 파이프라인을 실행하고
canaryjob이 성공하고 Canary Ingress로 카나리 배포가 생성되는지 확인합니다.
배포 보드에 Canary Ingress 배포 표시 (더 이상 사용되지 않음)#
이 기능은 GitLab 14.5에서 더 이상 사용되지 않음.
카나리 배포를 보려면 배포 보드를 올바르게 구성해야 합니다:
- 배포 보드를 활성화하는 단계를 따릅니다.
- 카나리 배포를 추적하려면 Kubernetes 배포와 포드에
track: canary를 레이블로 지정해야 합니다. 빠르게 시작하려면 GitLab에서 제공하는 카나리 배포용 Auto Deploy 템플릿을 사용할 수 있습니다.
배포에 따라 레이블은 stable 또는 canary여야 합니다.
레이블이 비어 있거나 없으면 GitLab은 트랙 레이블이 stable이라고 가정합니다.
다른 모든 트랙 레이블은 canary(임시)로 간주됩니다.
이를 통해 GitLab은 배포가 안정적인지 카나리(임시)인지 확인할 수 있습니다.
배포 보드를 구성하고 파이프라인이 최소 한 번 실행된 후 Pipelines > Environments 아래의 환경 페이지로 이동합니다. 파이프라인이 실행되면 배포 보드에서 카나리 포드가 명확하게 표시되어 각 환경 및 배포 상태를 빠르고 명확하게 파악할 수 있습니다.
카나리 배포는 배포 보드에서 노란색 점으로 표시되어 빠르게 알아볼 수 있습니다.

Canary Ingress의 현재 트래픽 가중치를 확인하는 방법 (더 이상 사용되지 않음)#
이 기능은 GitLab 14.5에서 더 이상 사용되지 않음.
-
배포 보드를 방문합니다.
-
오른쪽에서 현재 가중치를 확인합니다.

Canary Ingress의 트래픽 가중치를 변경하는 방법 (더 이상 사용되지 않음)#
이 기능은 GitLab 14.5에서 더 이상 사용되지 않음.
GraphiQL을 사용하거나 GraphQL API에 요청을 보내 환경의 배포 보드에서 트래픽 가중치를 변경할 수 있습니다.
배포 보드를 사용하려면:
- 프로젝트의 Operate > Environments로 이동합니다.
- 오른쪽의 드롭다운 목록으로 새 가중치를 설정합니다.
- 선택을 확인합니다.
GraphiQL을 사용한 예시:
-
GraphiQL Explorer를 방문합니다.
-
environmentsCanaryIngressUpdateGraphQL 뮤테이션을 실행합니다:mutation { environmentsCanaryIngressUpdate(input:{ id: "gid://gitlab/Environment/29", # 환경 ID. 환경 페이지 URL에서 ID를 가져올 수 있습니다. weight: 45 # 새 트래픽 가중치. 예를 들어 `45`로 설정하면 트래픽의 45%가 카나리 배포로 가고 55%가 안정적인 배포로 갑니다. }) { errors } } -
요청이 성공하면
errors응답에 빈 배열이 포함됩니다. GitLab은 Kubernetes 클러스터에PATCH요청을 보내 Canary Ingress의 가중치 매개변수를 업데이트합니다.
