3.5. 롤아웃 수동 중단


카나리아 배포를 사용하는 경우 롤아웃은 애플리케이션의 초기 카나리아 버전을 배포합니다. 수동으로 확인하거나 프로그래밍 방식으로 확인할 수 있습니다. 카나리아 버전을 확인하고 stable로 승격하면 모든 사용자가 새 안정 버전을 사용할 수 있습니다.

그러나 카나리아 버전에서 버그, 오류 또는 배포 문제가 발견되고 카나리아 롤아웃을 중단하고 애플리케이션의 안정적인 버전으로 롤백해야 하는 경우가 있습니다.

카나리아 롤아웃을 중단하면 새 카나리아 버전의 리소스가 삭제되고 이전 버전의 안정적인 애플리케이션을 복원합니다. 카나리아로 전달 중인 수신, 경로 또는 가상 서비스와 같은 모든 네트워크 트래픽은 원래의 안정적인 버전으로 돌아갑니다.

다음 예제 절차에서는 애플리케이션 새 카나리아 버전을 배포한 다음, 안정적인 것으로 완전히 승격되기 전에 이를 중단합니다.

프로세스

  1. 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

    롤아웃에 배포된 컨테이너 이미지가 수정되고 롤아웃에서 새 카나리아 배포를 시작합니다.

  2. 롤아웃이 일시 중지된 상태에 도달할 때까지 기다립니다.
  3. 롤아웃이 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

  4. 다음 명령을 실행하여 롤아웃 업데이트를 중지합니다.

    $ oc argo rollouts abort rollouts-demo -n <namespace> 1
    1
    Rollout CR이 정의된 네임스페이스를 지정합니다.

    출력 예

    rollout 'rollouts-demo' aborted

    Argo Rollouts 컨트롤러는 애플리케이션의 카나리아 리소스를 삭제하고 안정적인 버전으로 롤백합니다.

  5. 롤아웃을 중단한 후 다음 명령을 실행하여 카나리아 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 상태는 애플리케이션의 상태를 반영하지 않습니다. 이는 원하는 컨테이너 이미지 버전과 실행 중인 컨테이너 이미지 버전이 일치하지 않음을 나타냅니다.

  6. 다음 명령을 실행하여 컨테이너 이미지 버전을 이전 안정 버전, 노란색 으로 업데이트하고 .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 배포를 추적합니다.

  7. 다음 명령을 실행하여 롤아웃 상태가 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

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.