2.7. 다중 테넌트 클러스터의 Operator
OLM(Operator Lifecycle Manager)의 기본 동작은 Operator 설치 중에 단순성을 제공하는 것을 목표로 합니다. 그러나 이 동작에는 특히 다중 테넌트 클러스터에서 유연성이 부족할 수 있습니다. Operator를 사용하려면 AWS 클러스터에서 Red Hat OpenShift Service의 여러 테넌트가 Operator를 설치하려면 OLM의 기본 동작에서 관리자가 최소 권한 원칙을 위반하는 것으로 간주될 수 있는 모든 네임스페이스 모드로 Operator를 설치해야 합니다.
다음 시나리오를 고려하여 환경 및 요구 사항에 가장 적합한 Operator 설치 워크플로를 확인합니다.
2.7.1. 기본 Operator 설치 모드 및 동작
웹 콘솔을 사용하여 Operator를 관리자로 설치할 때 일반적으로 Operator의 기능에 따라 설치 모드에 대한 두 가지 선택 사항이 있습니다.
- 단일 네임스페이스
- 선택한 단일 네임스페이스에 Operator를 설치하고 해당 네임스페이스에서 Operator에서 사용할 수 있는 모든 권한을 만듭니다.
- 모든 네임스페이스
-
기본
openshift-operators
네임스페이스에 Operator를 설치하여 클러스터의 모든 네임스페이스를 감시하고 사용할 수 있습니다. Operator에서 요청하는 모든 권한을 모든 네임스페이스에서 사용할 수 있도록 합니다. 경우에 따라 Operator 작성자는 메타데이터를 정의하여 사용자에게 해당 Operator의 제안된 네임스페이스에 두 번째 옵션을 제공할 수 있습니다.
또한 영향을 받는 네임스페이스의 사용자는 네임스페이스의 역할에 따라 자신이 소유한 CR(사용자 정의 리소스)을 활용할 수 있는 Operator API에 액세스할 수 있습니다.
-
namespace-admin
및namespace-edit
역할은 Operator API를 읽고 쓸 수 있으므로 사용할 수 있습니다. -
namespace-view
역할은 해당 Operator의 CR 오브젝트를 읽을 수 있습니다.
Operator 자체가 선택한 네임스페이스에 설치되므로 단일 네임스페이스 모드의 경우 해당 Pod 및 서비스 계정도 있습니다. 모든 네임스페이스 모드의 경우 Operator의 권한이 모두 클러스터 역할로 자동 향상되므로 Operator에는 모든 네임스페이스에 이러한 권한이 있습니다.
2.7.2. 다중 테넌트 클러스터에 권장되는 솔루션
다중 네임스페이스 설치 모드가 존재하지만 매우 적은 Operator에서 지원합니다. 표준 All namespaces 및 Single namespace 설치 모드 간의 중간 솔루션으로 다음 워크플로를 사용하여 각 테넌트에 대해 동일한 Operator의 인스턴스를 여러 개 설치할 수 있습니다.
- 테넌트의 네임스페이스와 별도의 테넌트 Operator의 네임스페이스를 생성합니다. 프로젝트를 생성하여 이 작업을 수행할 수 있습니다.
- 테넌트 Operator 범위의 Operator group을 테넌트의 네임스페이스에만 생성합니다.
- 테넌트 Operator 네임스페이스에 Operator를 설치합니다.
결과적으로 Operator는 테넌트 Operator 네임스페이스에 상주하며 테넌트 네임스페이스를 감시하지만, 테넌트에서 Operator Pod 및 해당 서비스 계정을 볼 수 없거나 사용할 수 없습니다.
이 솔루션을 사용하면 더 나은 테넌트 분리, 리소스 사용 비용의 최소 권한 원칙, 제약 조건이 충족되도록 하는 추가 오케스트레이션을 제공합니다. 자세한 절차는 "다중 테넌트 클러스터용 Operator의 여러 인스턴스 준비"를 참조하십시오.
제한 사항 및 고려 사항
이 솔루션은 다음 제약 조건이 충족되는 경우에만 작동합니다.
- 동일한 Operator의 모든 인스턴스가 동일한 버전이어야 합니다.
- Operator는 다른 Operator에 대한 종속성을 가질 수 없습니다.
- Operator는 CRD 변환 Webhook를 제공할 수 없습니다.
동일한 클러스터에서 동일한 Operator의 다른 버전을 사용할 수 없습니다. 결국 다음 조건을 충족하면 Operator의 다른 인스턴스 설치가 차단됩니다.
- 인스턴스가 최신 버전의 Operator가 아닙니다.
- 인스턴스는 클러스터에서 이미 사용 중인 최신 버전 또는 버전이 없는 이전 버전의 CRD를 제공합니다.
2.7.3. Operator colocation 및 Operator groups
OLM(Operator Lifecycle Manager)은 동일한 네임스페이스에 설치된 OLM 관리 Operator를 처리합니다. 즉, 서브스크립션
리소스가 관련 Operator와 동일한 네임스페이스에 배치됩니다. 실제로 관련이 없는 경우에도 OLM은 해당 버전 및 업데이트 정책 중 하나가 업데이트될 때 해당 상태를 고려합니다.
Operator 공동 배치 및 Operator 그룹을 효과적으로 사용하는 방법에 대한 자세한 내용은 OLM(Operator Lifecycle Manager)