2장. 클러스터 범위 인스턴스에 대한 사용자 정의 클러스터 역할을 생성하여 권한 사용자 정의
기본 클러스터 범위 인스턴스의 경우 Red Hat OpenShift GitOps Operator는 특정 클러스터 범위 리소스를 관리하기 위한 추가 권한을 부여합니다. 결과적으로 클러스터 관리자는 Argo CD를 클러스터 범위 인스턴스로 배포할 때 Operator는 GitOps 컨트롤 플레인 구성 요소에 대한 추가 클러스터 역할 및 클러스터 역할 바인딩을 생성합니다. 이러한 클러스터 역할 및 클러스터 역할 바인딩은 Argo CD가 클러스터 수준에서 작동하는 데 필요한 추가 권한을 제공합니다.
클러스터 범위 인스턴스에 모든 Operator 지원 권한이 있고 클러스터 전체 리소스에 대한 권한을 추가하거나 제거하도록 선택하는 경우 먼저 클러스터 범위 인스턴스의 기본 클러스터 역할 생성을 비활성화해야 합니다. 그런 다음 다음 클러스터 범위 인스턴스에 대한 권한을 사용자 지정할 수 있습니다.
- 기본 ArgoCD 인스턴스 (기본 클러스터 범위 인스턴스)
- 사용자 정의 클러스터 범위 Argo CD 인스턴스
이 가이드에서는 사용자 정의 클러스터 범위 Argo CD 인스턴스를 생성하고, 클러스터의 사용자 지정 구성이 포함된 정의된 네임스페이스에 Argo CD 애플리케이션을 배포하고, 클러스터 범위의 인스턴스의 기본 클러스터 역할 생성을 비활성화하고, GitOps 컨트롤 플레인 구성 요소에 대한 새 클러스터 역할 및 클러스터 역할 바인딩을 생성하여 사용자 정의 클러스터 범위 인스턴스에 대한 권한을 사용자 지정하는 데 필요한 예제를 제공합니다.
개발자로서 Argo CD 애플리케이션을 생성하고 클러스터 전체 리소스를 배포하는 경우 클러스터 관리자가 필요한 권한을 부여해야 합니다.
그러지 않으면 Argo CD 조정 후 다음 예와 유사한 애플리케이션의 상태
필드에 인증 오류 메시지가 표시됩니다.
인증 오류 메시지의 예
persistentvolumes is forbidden: User "system:serviceaccount:gitops-demo:argocd-argocd-application-controller" cannot create resource "persistentvolumes" in API group "" at the cluster scope.
2.1. 사전 요구 사항
- OpenShift Container Platform 클러스터에 Red Hat OpenShift GitOps 1.13.0 이상을 설치했습니다.
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
Red Hat OpenShift GitOps
argocd
CLI를 설치했습니다. -
정의된 네임스페이스에 클러스터 범위의 Argo CD 인스턴스가 설치되어 있습니다. 예를 들어 Spring
-petclinic
네임스페이스입니다. 사용자 정의 클러스터 범위 인스턴스가 다음 구성 요소에 대한 클러스터 역할 및 클러스터 역할 바인딩으로 구성되었는지 확인했습니다.
- Argo CD 애플리케이션 컨트롤러
- Argo CD 서버
- Argo CD ApplicationSet Controller (ApplicationSet Controller 제공)
spring-petclinic
네임스페이스에customclusterrole
경로를 사용하여cluster-configs
Argo CD 애플리케이션을 배포하고test-gitops-ns
네임스페이스 및test-gitops-pv
영구 볼륨 리소스를 생성했습니다.참고cluster-configs
Argo CD 애플리케이션은 다음 매개변수가 설정된 사용자 정의 클러스터 범위 인스턴스에서 관리해야 합니다.-
true
로 설정된selfHeal
필드 값 -
syncPolicy
필드 값이automated
로 설정 -
app.kubernetes.io/part-of=argocd
값으로 설정된 Label 필드 -
정의된 네임스페이스의 Argo CD 인스턴스가 네임스페이스를 관리할 수 있도록
argocd.argoproj.io/managed-by=<user_defined_namespace
> 값으로 설정된 Label 필드 -
app.kubernetes.io/name=<user_argocd_instance
> 값으로 설정된 라벨 필드
-