카나리 배포
카나리 배포는 애플리케이션의 새 버전으로 업데이트되는 소규모 배포 전략인 지속적인 배포입니다.
지속적인 전달을 수용할 때, 조직은 어떤 유형의 배포 전략을 사용할지 결정해야 합니다. 가장 인기 있는 전략 중 하나는 카나리 배포로, 전체 Fleet의 일부가 먼저 새 버전으로 업데이트됩니다. 이 하위 집합은 비유적으로 석탄 광산의 카나리 역할을 합니다.
새 버전의 애플리케이션에 문제가 발생하면, 오직 소수의 사용자만 영향을 받고 변경 사항은 수정되거나 빠르게 되돌릴 수 있습니다.
사용 사례
카나리 배포는 기능을 오직 일부 파드군에 배포하고, 이 기능을 일시적으로 배포했을 때 사용자 기반의 비율에 따라 그 행동을 관찰하고 싶을 때 사용될 수 있습니다. 모든 것이 잘 작동하면, 문제가 없음을 알고 프로덕션에 기능을 배포할 수 있습니다.
카나리 배포는 백엔드 리팩토링, 성능 개선 또는 사용자 인터페이스가 변하지 않는 다른 변경 사항에 특히 필요합니다. 그러나 성능이 동일하게 유지되거나 개선되는지 확인하고 싶습니다. 개발자는 사용자와 관련된 변경 사항에 카나리를 사용할 때 주의해야 하며, 기본적으로 동일한 사용자로부터의 요청이 카나리와 비카나리 파드 간에 무작위로 분배되어 혼란이나 오류를 초래할 수 있습니다. 필요하다면, Kubernetes 서비스 정의에서 service.spec.sessionAffinity
를 ClientIP
로 설정하는 것을 고려할 수 있습니다만, 이는 본 문서의 범위를 벗어납니다.
카나리 인그레스를 통한 고급 트래픽 제어
카나리 배포는 카나리 인그레스와 함께 더욱 전략적으로 수행할 수 있습니다. 카나리 인그레스는 안정적인 배포와 카나리 배포 간의 수신 HTTP 요청을 무게, 세션, 쿠키 등의 요인에 따라 제어하는 고급 트래픽 라우팅 서비스입니다. GitLab은 이 서비스를 자동 배포 아키텍처에서 사용하여 사용자가 새로운 배포를 신속하고 안전하게 롤아웃할 수 있도록 합니다.
카나리 배포에서 카나리 인그레스를 설정하는 방법
카나리 인그레스는 자동 DevOps 파이프라인이 v2.0.0+
의 auto-deploy-image
를 사용하는 경우 기본적으로 설치됩니다. 카나리 인그레스는 새 카나리 배포를 만들 때 사용 가능하며, 카나리 배포가 프로덕션으로 승격될 때 파괴됩니다.
다음은 처음부터 설정하는 예시 흐름입니다:
-
Auto DevOps 활성화된 프로젝트를 준비합니다.
-
프로젝트 내에서 Kubernetes 클러스터를 설정합니다.
-
클러스터에 NGINX 인그레스를 설치합니다.
-
위에 할당된 인그레스 엔드포인트에 따라 기본 도메인을 설정합니다.
-
Auto DevOps 파이프라인에서
v2.0.0+
의auto-deploy-image
가 사용되는지 확인합니다.그렇지 않다면, 문서를 따라 이미지 버전을 지정합니다.
-
production
작업이 성공적으로 프로덕션 환경을 생성하는지 확인합니다. -
Auto DevOps 파이프라인을 위한
canary
배포 작업을 구성합니다. -
canary
작업이 성공적으로 수행되고 카나리 인그레스를 가진 카나리 배포가 생성되는지 확인합니다.
배포 보드에 카나리아 인그레스 배포 표시 (사용 중단)
경고:
이 기능은 사용 중단되었습니다. GitLab 14.5.
카나리아 배포를 보려면 배포 보드를 적절히 구성해야 합니다:
- 배포 보드 활성화 단계에 따라 진행하세요.
- 카나리아 배포를 추적하려면 Kubernetes 배포 및
포드를
track: canary
으로 라벨링해야 합니다. 빠르게 시작하려면 GitLab에서 제공하는 카나리아 배포용 자동 배포 템플릿을 사용할 수 있습니다.
배포에 따라 라벨은 stable
또는 canary
여야 합니다.
라벨이 비어 있거나 누락된 경우 GitLab은 트랙 라벨이 stable
이라고 가정합니다.
다른 트랙 라벨은 canary
(임시)로 간주됩니다.
이를 통해 GitLab은 배포가 안정적인지 여부를 파악할 수 있습니다.
위의 모든 내용이 설정되고 파이프라인이 최소 한 번 실행되면,
파이프라인 > 환경에서 환경 페이지로 이동하세요.
파이프라인이 실행되는 동안 배포 보드는 카나리아 포드를 명확하게 표시하여 각 환경 및 배포의 상태에 대한 빠르고 명확한 통찰력을 제공합니다.
카나리아 배포는 배포 보드에서 노란색 점으로 표시되므로
빠르게 인지할 수 있습니다.
현재 카나리아 인그레스의 트래픽 비율 확인 방법 (사용 중단)
경고:
이 기능은 사용 중단되었습니다. GitLab 14.5.
- 배포 보드에 방문하세요.
-
오른쪽에서 현재 비율을 확인하세요.
카나리아 인그레스의 트래픽 비율 변경 방법 (사용 중단)
경고:
이 기능은 사용 중단되었습니다. GitLab 14.5.
GraphiQL을 사용하거나
GraphQL API에 요청을 보내서 환경의 배포 보드에서 트래픽 비율을 변경할 수 있습니다.
배포 보드를 사용하려면:
- 프로젝트의 운영 > 환경으로 이동하세요.
- 오른쪽의 드롭다운 목록에서 새 비율을 설정하세요.
- 선택을 확인하세요.
다음은 GraphiQL을 사용하는 예시입니다:
- GraphiQL 탐색기를 방문하세요.
-
environmentsCanaryIngressUpdate
GraphQL 변형을 실행하세요:mutation { environmentsCanaryIngressUpdate(input:{ id: "gid://gitlab/Environment/29", # 귀하의 환경 ID. 환경 페이지의 URL에서 ID를 가져올 수 있습니다. weight: 45 # 새로운 트래픽 비율입니다. 예를 들어, `45`를 설정하면 45%의 트래픽이 카나리아 배포로 가고 55%의 트래픽이 안정적인 배포로 갑니다. }) { errors } }
- 요청이 성공하면
errors
응답은 빈 배열을 포함합니다. GitLab은 카나리아 인그레스의 비율 매개변수를 업데이트하기 위해 Kubernetes 클러스터에PATCH
요청을 보냅니다.