8장. Argo Rollouts에 대한 고가용성 지원 활성화
Argo Rollouts는 RolloutManager
CR(사용자 정의 리소스)에서 HA(고가용성) 활성화를 지원합니다. Argo Rollouts에서 고가용성을 구성하면 Red Hat OpenShift GitOps Operator는 RolloutManager
CR의 .spec.ha
필드를 사용하여 Argo Rollouts 컨트롤러의 Pod 수를 2로 자동으로 설정합니다. 또한 리더 선택을 활성화하여 활성 상태 프로세스에서 Pod를 실행할 수 있습니다. 단일 Pod는 롤아웃을 적극적으로 관리하지만 다른 Pod는 수동 상태로 유지되므로 노드가 실패할 경우 추가 복제본에서 중복성과 가용성을 제공할 수 있습니다.
이 기능은 다운타임이나 수동 개입 없이 실행되도록 Rollouts 컨트롤러에 이점을 제공합니다. 또한 두 번째 복제본은 컨트롤러의 원활한 실행을 보장하므로 계획된 유지 관리 중에도 작동합니다. Argo Rollout에서 고가용성을 활성화하면 노드 장애 또는 워크로드가 많은 경우에도 컨트롤러가 안정적이고 탄력적으로 유지됩니다.
Red Hat OpenShift GitOps Operator는 기본적으로 anti-affinity 규칙이 적용되도록 합니다. 이러한 규칙은 사용자 정의되어 있지 않지만 단일 장애 지점을 방지하기 위해 컨트롤러 pod가 다른 노드에 배포되도록 하여 노드 장애에 대한 탄력성을 제공합니다.
사전 요구 사항
- OpenShift Container Platform 클러스터에 관리자로 로그인되어 있습니다.
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps 를 설치했습니다.
- OpenShift Container Platform 클러스터에 Argo 롤아웃 이 설치되어 있어야 합니다.
8.1. Argo 롤아웃의 고가용성 구성
고가용성을 활성화하려면 다음 단계를 완료하여 RolloutManager
CR(사용자 정의 리소스)에서 ha
사양을 구성합니다.
프로세스
- OpenShift Container Platform 웹 콘솔에 클러스터 관리자로 로그인합니다.
-
관리자 화면에서 Operator
설치된 Operator 를 클릭합니다. -
프로젝트 드롭다운 메뉴에서
RolloutManager
CR을 생성하고 구성할 프로젝트를 생성하거나 선택합니다. - 설치된 Operator에서 Red Hat OpenShift GitOps 를 선택합니다.
- 세부 정보 탭의 제공된 API 섹션에서 RolloutManager 창에서 인스턴스 생성 을 클릭합니다.
RolloutManager 생성 페이지에서 YAML 보기를 선택하고 YAML 을 편집합니다.
RolloutManager
CR에서ha
필드 활성화 예apiVersion: argoproj.io/v1alpha1 kind: RolloutManager metadata: name: argo-rollouts namespace: openshift-gitops spec: ha: enabled: true 1
- 1
- 고가용성이 활성화되어 있는지 여부를 지정합니다. 값을
true
로 설정하면 고가용성이 활성화됩니다.
- 생성을 클릭합니다.
- RolloutManager 탭의 RolloutManagers 섹션에서 RolloutManager 인스턴스의 Status 필드에 Phase: Available 이 표시되는지 확인합니다.
다음 단계를 완료하여 롤아웃 배포 상태를 확인합니다.
-
관리자 관점에서 워크로드
배포를 클릭합니다. - argo-rollouts 배포를 클릭합니다.
- 세부 정보 탭을 클릭하고 롤아웃 배포의 복제본 수가 이제 2로 설정되어 있는지 확인합니다.
YAML 탭을 클릭하고 다음 구성이 표시되는지 확인합니다.
Argo 롤아웃 배포 구성 파일의 예
kind: Deployment metadata: name: argo-rollouts namespace: openshift-gitops spec: replicas: 2 1 selector: matchLabels: app.kubernetes.io/name: argo-rollouts template: metadata: creationTimestamp: null labels: app.kubernetes.io/name: argo-rollouts spec: containers: args: - '--leader-elect' - 'true' 2
-
관리자 관점에서 워크로드