3.5. 롤아웃 수동 중단
카나리아 배포를 사용하는 경우 롤아웃은 애플리케이션의 초기 카나리아 버전을 배포합니다. 수동으로 확인하거나 프로그래밍 방식으로 확인할 수 있습니다. 카나리아 버전을 확인하고 stable로 승격하면 모든 사용자가 새 안정 버전을 사용할 수 있습니다.
그러나 카나리아 버전에서 버그, 오류 또는 배포 문제가 발견되고 카나리아 롤아웃을 중단하고 애플리케이션의 안정적인 버전으로 롤백해야 하는 경우가 있습니다.
카나리아 롤아웃을 중단하면 새 카나리아 버전의 리소스가 삭제되고 이전 버전의 안정적인 애플리케이션을 복원합니다. 카나리아로 전달 중인 수신, 경로 또는 가상 서비스와 같은 모든 네트워크 트래픽은 원래의 안정적인 버전으로 돌아갑니다.
다음 예제 절차에서는 애플리케이션 의
새 카나리아 버전을 배포한 다음, 안정적인 것으로 완전히 승격되기 전에 이를 중단합니다.
프로세스
Argo Rollouts CLI에서 다음 명령을 실행하여 컨테이너 이미지 버전을 업데이트하고
argoproj/rollouts-demo:yellow
에서argoproj/rollouts-demo:red
로.spec.template.spec.containers.image
값을 수정합니다.$ oc argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:red -n <namespace> 1
- 1
Rollout
CR(사용자 정의 리소스)이 정의된 네임스페이스를 지정합니다.
출력 예
rollout "rollouts-demo" image updated
롤아웃에 배포된 컨테이너 이미지가 수정되고 롤아웃에서 새 카나리아 배포를 시작합니다.
- 롤아웃이 일시 중지된 상태에 도달할 때까지 기다립니다.
롤아웃이
rollouts-demo:red
카나리아 버전을 배포하고 다음 명령을 실행하여 일시 중지된 상태에 도달하는지 확인합니다.$ oc argo rollouts get rollout rollouts-demo --watch -n <namespace> 1
- 1
Rollout
CR이 정의된 네임스페이스를 지정합니다.
출력 예
Name: rollouts-demo Namespace: spring-petclinic Status: ॥ Paused Message: CanaryPauseStep Strategy: Canary Step: 1/8 SetWeight: 20 ActualWeight: 20 Images: argoproj/rollouts-demo:red (canary) argoproj/rollouts-demo:yellow (stable) Replicas: Desired: 5 Current: 5 Updated: 1 Ready: 5 Available: 5 NAME KIND STATUS AGE INFO ⟳ rollouts-demo Rollout ॥ Paused 17m ├──# revision:3 │ └──⧉ rollouts-demo-5747959bdb ReplicaSet ✔ Healthy 75s canary │ └──□ rollouts-demo-5747959bdb-fdrsg Pod ✔ Running 75s ready:1/1 ├──# revision:2 │ └──⧉ rollouts-demo-6cf78c66c5 ReplicaSet ✔ Healthy 9m45s stable │ ├──□ rollouts-demo-6cf78c66c5-zrgd4 Pod ✔ Running 9m44s ready:1/1 │ ├──□ rollouts-demo-6cf78c66c5-2ptpp Pod ✔ Running 4m58s ready:1/1 │ ├──□ rollouts-demo-6cf78c66c5-tmk6c Pod ✔ Running 4m38s ready:1/1 │ └──□ rollouts-demo-6cf78c66c5-zv6lx Pod ✔ Running 4m27s ready:1/1 └──# revision:1 └──⧉ rollouts-demo-687d76d795 ReplicaSet • ScaledDown 17m
다음 명령을 실행하여 롤아웃 업데이트를 중지합니다.
$ oc argo rollouts abort rollouts-demo -n <namespace> 1
- 1
Rollout
CR이 정의된 네임스페이스를 지정합니다.
출력 예
rollout 'rollouts-demo' aborted
Argo Rollouts 컨트롤러는 애플리케이션의 카나리아 리소스를 삭제하고 안정적인 버전으로 롤백합니다.
롤아웃을 중단한 후 다음 명령을 실행하여 카나리아
ReplicaSet
이 0 복제본으로 확장되었는지 확인합니다.$ oc argo rollouts get rollout rollouts-demo --watch -n <namespace> 1
- 1
Rollout
CR이 정의된 네임스페이스를 지정합니다.
출력 예
Name: rollouts-demo Namespace: spring-petclinic Status: ✖ Degraded Message: RolloutAborted: Rollout aborted update to revision 3 Strategy: Canary Step: 0/8 SetWeight: 0 ActualWeight: 0 Images: argoproj/rollouts-demo:yellow (stable) Replicas: Desired: 5 Current: 5 Updated: 0 Ready: 5 Available: 5 NAME KIND STATUS AGE INFO ⟳ rollouts-demo Rollout ✖ Degraded 24m ├──# revision:3 │ └──⧉ rollouts-demo-5747959bdb ReplicaSet • ScaledDown 7m38s canary ├──# revision:2 │ └──⧉ rollouts-demo-6cf78c66c5 ReplicaSet ✔ Healthy 16m stable │ ├──□ rollouts-demo-6cf78c66c5-zrgd4 Pod ✔ Running 16m ready:1/1 │ ├──□ rollouts-demo-6cf78c66c5-2ptpp Pod ✔ Running 11m ready:1/1 │ ├──□ rollouts-demo-6cf78c66c5-tmk6c Pod ✔ Running 11m ready:1/1 │ ├──□ rollouts-demo-6cf78c66c5-zv6lx Pod ✔ Running 10m ready:1/1 │ └──□ rollouts-demo-6cf78c66c5-mlbsh Pod ✔ Running 4m47s ready:1/1 └──# revision:1 └──⧉ rollouts-demo-687d76d795 ReplicaSet • ScaledDown 24m
롤아웃 상태는 애플리케이션이 이전 안정 버전으로 롤백되었지만 현재 롤아웃이 원하는 버전인
빨간색
이 아니며.spec.template.spec.containers.image
필드 내에 설정된 롤아웃이 없음을 나타냅니다.참고Degraded
상태는 애플리케이션의 상태를 반영하지 않습니다. 이는 원하는 컨테이너 이미지 버전과 실행 중인 컨테이너 이미지 버전이 일치하지 않음을 나타냅니다.다음 명령을 실행하여 컨테이너 이미지 버전을 이전 안정 버전,
노란색
으로 업데이트하고.spec.template.spec.containers.image
값을 수정합니다.$ oc argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:yellow -n <namespace> 1
- 1
Rollout
CR이 정의된 네임스페이스를 지정합니다.
출력 예
rollout "rollouts-demo" image updated
롤아웃은 분석 및 승격 단계를 건너뛰고 이전 안정된 버전,
노란색
및 빠른 속도로 롤백하여 안정적인ReplicaSet
배포를 추적합니다.다음 명령을 실행하여 롤아웃 상태가
Healthy
로 즉시 표시되는지 확인합니다.$ oc argo rollouts get rollout rollouts-demo --watch -n <namespace> 1
- 1
Rollout
CR이 정의된 네임스페이스를 지정합니다.
출력 예
Name: rollouts-demo Namespace: spring-petclinic Status: ✔ Healthy Strategy: Canary Step: 8/8 SetWeight: 100 ActualWeight: 100 Images: argoproj/rollouts-demo:yellow (stable) Replicas: Desired: 5 Current: 5 Updated: 5 Ready: 5 Available: 5 NAME KIND STATUS AGE INFO ⟳ rollouts-demo Rollout ✔ Healthy 63m ├──# revision:4 │ └──⧉ rollouts-demo-6cf78c66c5 ReplicaSet ✔ Healthy 55m stable │ ├──□ rollouts-demo-6cf78c66c5-zrgd4 Pod ✔ Running 55m ready:1/1 │ ├──□ rollouts-demo-6cf78c66c5-2ptpp Pod ✔ Running 50m ready:1/1 │ ├──□ rollouts-demo-6cf78c66c5-tmk6c Pod ✔ Running 50m ready:1/1 │ ├──□ rollouts-demo-6cf78c66c5-zv6lx Pod ✔ Running 50m ready:1/1 │ └──□ rollouts-demo-6cf78c66c5-mlbsh Pod ✔ Running 44m ready:1/1 ├──# revision:3 │ └──⧉ rollouts-demo-5747959bdb ReplicaSet • ScaledDown 46m └──# revision:1 └──⧉ rollouts-demo-687d76d795 ReplicaSet • ScaledDown 63m