Menu Close

6.4.4. Blue-Green 배포

Blue-Green 배포에는 두 가지 버전의 애플리케이션을 동시에 실행하고 프로덕션 내 버전(Blue 버전)에서 최신 버전(Green 버전)으로 트래픽을 이동하는 작업이 포함됩니다. 롤링 전략 또는 전환 서비스를 경로에서 사용할 수 있습니다.

대다수의 애플리케이션이 영구 데이터에 의존하기 때문에 N-1 호환성을 지원하는 애플리케이션이 있어야 합니다. 그러면 데이터 계층 복사본을 두 개 생성하여 데이터를 공유하고 데이터베이스, 저장소 또는 디스크 간 실시간 마이그레이션을 구현할 수 있습니다.

새 버전을 테스트하는 데 사용되는 데이터를 떠올려 보십시오. 데이터가 프로덕션 데이터라면 새 버전의 버그로 인해 프로덕션 버전에 장애가 발생할 수 있습니다.

6.4.4.1. Blue-Green 배포 설정

Blue-Green 배포에서는 두 개의 Deployment 오브젝트를 사용합니다. 둘 다 실행되고 프로덕션의 항목은 경로에서 지정하는 서비스에 따라 달라지며 각 Deployment 오브젝트는 다른 서비스에 노출됩니다.

참고

경로는 웹(HTTP 및 HTTPS) 트래픽을 위한 것이므로 이 기술은 웹 애플리케이션에 적합합니다.

새 버전의 새 경로를 생성하고 테스트할 수 있습니다. 준비되었을 때 새 서비스를 가리키도록 프로덕션 경로의 서비스를 변경하면 새(Green) 버전이 활성화됩니다.

필요한 경우 서비스를 이전 버전(Blue)으로 전환하여 롤백할 수 있습니다.

프로세스

  1. 독립된 애플리케이션 구성 요소 두 개를 생성합니다.

    1. example-blue 서비스에서 v1 이미지를 실행하는 예제 애플리케이션의 복사본을 생성합니다.

      $ oc new-app openshift/deployment-example:v1 --name=example-blue
    2. example-green 서비스에서 v2 이미지를 사용하는 두 번째 복사본을 생성합니다.

      $ oc new-app openshift/deployment-example:v2 --name=example-green
  2. 이전 서비스를 가리키는 경로를 생성합니다.

    $ oc expose svc/example-blue --name=bluegreen-example
  3. bluegreen-example-<project>.<router_domain> 에서 애플리케이션을 검색하여 v1 이미지가 표시되는지 확인합니다.
  4. 경로를 편집하고 서비스 이름을 example-green으로 변경합니다.

    $ oc patch route/bluegreen-example -p '{"spec":{"to":{"name":"example-green"}}}'
  5. 경로가 변경되었는지 확인하려면 v2 이미지가 표시될 때까지 브라우저를 새로 고칩니다.