6장. 네임스페이스 범위의 Argo 롤아웃 설치 지원 활성화
Red Hat OpenShift GitOps는 Argo Rollouts 설치의 두 가지 모드를 지원합니다.
- 클러스터 범위 설치 (기본값): 모든 네임스페이스에 정의된 Argo Rollouts CR(사용자 정의 리소스)은 Argo Rollouts 인스턴스에 의해 조정됩니다. 결과적으로 클러스터의 모든 네임스페이스에서 Argo Rollouts CR을 사용할 수 있습니다.
네임스페이스 범위 설치: Argo Rollouts 인스턴스는 특정 네임스페이스에 설치되고 동일한 네임스페이스 내에서 Argo 롤아웃 CR만 처리합니다. 이 설치 모드에는 다음과 같은 이점이 있습니다.
-
이 모드에서는 클러스터 전체
ClusterRole
또는ClusterRoleBinding
권한이 필요하지 않습니다. 클러스터 권한 없이도 단일 네임 스페이스 내에서 Argo Rollouts를 설치하고 사용할 수 있습니다. - 이 모드는 단일 Argo 롤아웃 인스턴스의 클러스터 범위를 특정 네임스페이스로 제한하여 보안 이점을 제공합니다.
-
이 모드에서는 클러스터 전체
의도하지 않은 권한 에스컬레이션을 방지하기 위해 Red Hat OpenShift GitOps는 한 번에 하나의 Argo 롤아웃 설치 모드만 허용합니다.
클러스터 범위 및 네임스페이스 범위의 Argo 롤아웃 설치를 전환하려면 다음 단계를 완료하십시오.
6.1. 네임스페이스 범위의 Argo 롤아웃 설치 구성
Argo Rollouts 설치의 네임스페이스 범위 인스턴스를 구성하려면 다음 단계를 완료합니다.
사전 요구 사항
- Red Hat OpenShift GitOps 클러스터에 관리자로 로그인되어 있습니다.
- Red Hat OpenShift GitOps를 Red Hat OpenShift GitOps 클러스터에 설치했습니다.
프로세스
-
웹 콘솔의 관리자 화면에서 Administration
CustomResourceDefinitions 로 이동합니다. -
서브스크립션을 검색하고
Subscription
CRD를 클릭합니다. - Instances 탭을 클릭한 다음 openshift-gitops-operator 서브스크립션을 클릭합니다.
YAML 탭을 클릭하고 YAML 파일을 편집합니다.
.spec.config.env
속성에 값이true
로 설정된NAMESPACE_SCOPED_ARGO_ROLLOUTS
환경 변수를 지정합니다.네임스페이스 범위의 Argo 롤아웃 설치 구성 예
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: openshift-gitops-operator spec: # (...) config: env: - name: NAMESPACE_SCOPED_ARGO_ROLLOUTS value: 'true' 1
- 1
'true'
로 설정된 값은 네임스페이스 범위 설치를 활성화합니다. 값을'false'
로 설정하거나 지정하지 않으면 설치 기본값은 cluster-scoped mode입니다.
저장을 클릭합니다.
Red Hat OpenShift GitOps Operator는 네임스페이스 범위 설치 내에서 Argo Rollouts 사용자 정의 리소스를 쉽게 조정할 수 있습니다.
GitOps 컨테이너의 로그를 확인하여 Red Hat OpenShift GitOps Operator에서 네임스페이스 범위 Argo Rollouts 설치를 활성화했는지 확인합니다.
-
웹 콘솔의 관리자 화면에서 워크로드
Pod 로 이동합니다. - openshift-gitops-operator-controller-manager Pod를 클릭한 다음 로그 탭을 클릭합니다.
-
다음 로그 문을 찾습니다. namespaced
-scoped 모드에서 실행
중입니다. 이 성명은 Red Hat OpenShift GitOps Operator가 네임스페이스 범위 Argo Rollouts 설치를 활성화했음을 나타냅니다.
-
웹 콘솔의 관리자 화면에서 워크로드
RolloutManager
리소스를 생성하여 네임스페이스 범위의 Argo Rollouts 설치를 완료합니다.-
Operator
설치된 Operator → Red Hat OpenShift GitOps 로 이동하여 RolloutManager 탭을 클릭합니다. - RolloutManager 생성 을 클릭합니다.
YAML 보기를 선택하고 다음 스니펫을 입력합니다.
네임스페이스 범위 Argo 롤아웃 설치에 대한
RolloutManager
CR의 예apiVersion: argoproj.io/v1alpha1 kind: RolloutManager metadata: name: rollout-manager namespace: my-application 1 spec: namespaceScoped: true
- 1
- 네임스페이스 범위 Argo Rollouts 인스턴스를 설치할 프로젝트의 이름을 지정합니다.
생성을 클릭합니다.
RolloutManager
CR이 생성되면 Red Hat OpenShift GitOps가 네임스페이스 범위 Argo Rollouts 인스턴스를 선택한 네임스페이스에 설치하기 시작합니다.
-
Operator
네임스페이스 범위의 설치에 성공했는지 확인합니다.
-
RolloutManager 탭의 RolloutManagers 섹션에서
RolloutManager
인스턴스의 Status 필드가Phase: Available
인지 확인합니다. RolloutManagers 섹션의 YAML 탭에서 다음 출력을 검사하여 설치에 성공했는지 확인합니다.
네임스페이스 범위의 Argo 롤아웃 설치 YAML 파일의 예
spec: namespaceScoped: true status: conditions: lastTransitionTime: '2024-07-10T14:20:5z` message: '' reason: Success status: 'True' 1 type: 'Reconciled' phase: Available rolloutController: Available
- 1
- 이 상태는 네임스페이스 범위의 Argo 롤아웃 설치가 성공적으로 활성화되었음을 나타냅니다.
클러스터 범위의 설치가 클러스터에 이미 존재하는 동안 네임스페이스별 Argo Rollouts 인스턴스를 설치하려고 하면 오류 메시지가 표시됩니다.
오류 메시지가 포함된 잘못된 설치의 예
spec: namespaceScoped: true status: conditions: lastTransitionTime: '2024-07-10T14:10:7z` message: 'when Subscription has environment variable NAMESPACE_SCOPED_ARGO_ROLLOUTS set to False, there may not exist any namespace-scoped RolloutManagers: only a single cluster-scoped RolloutManager is supported' reason: InvalidRolloutManagerScope status: 'False' 1 type: 'Reconciled' phase: Failure rolloutController: Failure
- 1
- 이 상태는 네임스페이스 범위의 Argo 롤아웃 설치가 성공적으로 활성화되지 않았음을 나타냅니다. 설치 기본값은 cluster-scoped 모드입니다.
-
RolloutManager 탭의 RolloutManagers 섹션에서