9.4.2. Blue-Green 배포
Blue-Green 배포에는 두 가지 버전의 애플리케이션을 동시에 실행하고 프로덕션 내 버전(Green 버전)에서 최신 버전(파란색 버전)으로 트래픽을 이동하는 작업이 포함됩니다. 롤링 전략 또는 전환 서비스를 경로에서 사용할 수 있습니다.
많은 애플리케이션이 영구 데이터에 의존하기 때문에 N-1 호환성 을 지원하는 애플리케이션이 있어야 합니다. 즉, 데이터 계층의 두 복사본을 생성하여 데이터를 공유하고 데이터베이스, 저장소 또는 디스크 간에 실시간 마이그레이션을 구현해야 합니다.
새 버전을 테스트하는 데 사용되는 데이터를 떠올려 보십시오. 데이터가 프로덕션 데이터라면 새 버전의 버그로 인해 프로덕션 버전에 장애가 발생할 수 있습니다.
9.4.2.1. Blue-Green 배포 사용
Blue-Green 배포에서는 두 가지 배포 구성을 사용합니다. 둘 다 실행 중이고 프로덕션 중 하나는 경로에서 지정하는 서비스에 따라 달라지며 각 배포 구성이 다른 서비스에 노출됩니다. 새 버전의 새 경로를 생성하고 테스트할 수 있습니다. 준비되면 새 서비스를 가리키도록 프로덕션 경로의 서비스를 변경하고 새로운 blue, version이 활성화됩니다.
필요한 경우 서비스를 이전 버전으로 전환하여 이전 녹색 버전으로 롤백할 수 있습니다.
경로 및 두 서비스 사용
이 예에서는 안정적인 버전(Green 버전) 및 다른 하나는 최신 버전(Blue 버전)의 두 가지 배포 구성을 설정합니다.
경로는 서비스를 가리키며 언제든지 다른 서비스를 가리키도록 변경할 수 있습니다. 개발자는 프로덕션 트래픽이 라우팅되기 전에 새 서비스에 연결하여 코드의 새 버전을 테스트할 수 있습니다.
경로는 웹(HTTP 및 HTTPS) 트래픽을 위한 것이므로 이 기술은 웹 애플리케이션에 적합합니다.
예제 애플리케이션의 사본 두 개를 생성합니다.
$ oc new-app openshift/deployment-example:v1 --name=example-green $ oc new-app openshift/deployment-example:v2 --name=example-blue
이렇게 하면 두 개의 독립 애플리케이션 구성 요소가 생성됩니다.
example-green
서비스에서 v1 이미지를 실행하는 것과example-blue
서비스에서 v2 이미지를 사용합니다.이전 서비스를 가리키는 경로를 생성합니다.
$ oc expose svc/example-green --name=bluegreen-example
-
example-green.<project>.<router_domain>
에서 애플리케이션을 검색하여 v1 이미지가 표시되는지 확인합니다. 경로를 편집하고 서비스 이름을
example-blue
로 변경합니다.$ oc patch route/bluegreen-example -p '{"spec":{"to":{"name":"example-blue"}}}'
- 경로가 변경되었는지 확인하려면 v2 이미지가 표시될 때까지 브라우저를 새로 고칩니다.