This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.5.3.5. blue-green 배포 전략을 사용하여 트래픽 라우팅 및 관리
blue-green 배포 전략을 사용하여 프로덕션 버전에서 새 버전으로 트래픽을 안전하게 다시 라우팅할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
-
OpenShift CLI(
oc)를 설치합니다.
절차
- 애플리케이션을 Knative 서비스로 생성하고 배포합니다.
다음 명령의 출력을 확인하여 서비스를 배포할 때 생성된 첫 번째 버전의 이름을 찾습니다.
oc get ksvc <service_name> -o=jsonpath='{.status.latestCreatedRevisionName}'$ oc get ksvc <service_name> -o=jsonpath='{.status.latestCreatedRevisionName}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령 예
oc get ksvc example-service -o=jsonpath='{.status.latestCreatedRevisionName}'$ oc get ksvc example-service -o=jsonpath='{.status.latestCreatedRevisionName}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
example-service-00001
$ example-service-00001Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 YAML을 서비스
spec에 추가하여 인바운드 트래픽을 버전으로 전송합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 얻은 URL 출력에서 앱을 볼 수 있는지 확인합니다.
oc get ksvc <service_name>
$ oc get ksvc <service_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
서비스의
template사양에서 하나 이상의 필드를 수정하고 재배포하여 애플리케이션의 두 번째 버전을 배포합니다. 예를 들어 서비스의image또는env환경 변수를 수정할 수 있습니다. 서비스 YAML 파일을 적용하거나 Knative(kn) CLI를 설치한 경우kn service update명령을 사용하여 서비스를 재배포할 수 있습니다. 다음 명령을 실행하여 서비스를 재배포할 때 생성된 두 번째 최신 버전의 이름을 찾습니다.
oc get ksvc <service_name> -o=jsonpath='{.status.latestCreatedRevisionName}'$ oc get ksvc <service_name> -o=jsonpath='{.status.latestCreatedRevisionName}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이때 서비스의 첫 번째 버전과 두 번째 버전이 모두 배포되고 실행됩니다.
다른 모든 트래픽을 첫 번째 버전으로 전송하면서 두 번째 버전에 대한 새 테스트 끝점을 생성하도록 기존 서비스를 업데이트합니다.
테스트 끝점을 사용하여 업데이트된 서비스 사양의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML 리소스를 다시 적용하여 이 서비스를 재배포하면 애플리케이션의 두 번째 버전이 준비됩니다. 기본 URL의 두 번째 버전으로 라우팅되는 트래픽이 없으며 Knative는 새로 배포된 버전을 테스트하기 위해
v2라는 새 서비스를 생성합니다.다음 명령을 실행하여 두 번째 버전에 대한 새 서비스의 URL을 가져옵니다.
oc get ksvc <service_name> --output jsonpath="{.status.traffic[*].url}"$ oc get ksvc <service_name> --output jsonpath="{.status.traffic[*].url}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 URL을 사용하여 트래픽을 라우팅하기 전에 애플리케이션의 새 버전이 예상대로 작동하는지 확인할 수 있습니다.
트래픽의 50%가 첫 번째 버전으로 전송되고 50%가 두 번째 버전으로 전송되도록 기존 서비스를 다시 업데이트합니다.
버전 간에 트래픽을 50/50으로 분할하는 업데이트된 서비스 사양 분할 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 모든 트래픽을 새 버전의 앱으로 라우팅할 준비가 되면 두 번째 버전으로 트래픽의 100%를 보내도록 서비스를 다시 업데이트합니다.
두 번째 버전으로 모든 트래픽을 전송하는 업데이트된 서비스 사양의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작은 정보버전을 롤백하지 않으려는 경우 첫 번째 버전을 트래픽의 0%로 설정하는 대신 제거할 수 있습니다. 라우팅할 수 없는 버전 오브젝트는 가비지 수집됩니다.
- 첫 번째 버전의 URL을 방문하여 이전 버전의 앱으로 더 이상 트래픽이 전송되지 않는지 확인합니다.