2.7. 다중 테넌트 클러스터의 Operator
OLM(Operator Lifecycle Manager)의 기본 동작은 Operator 설치 중에 단순화를 제공하는 것입니다. 그러나 이러한 동작으로 인해 특히 다중 테넌트 클러스터에서 유연성이 부족할 수 있습니다. OpenShift Container Platform 클러스터의 여러 테넌트가 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. 다중 테넌트 클러스터에 권장되는 솔루션
Multinamespace 설치 모드가 존재하지만 Operator는 매우 적은 수의 Operator에서 지원합니다. 표준 모든 네임스페이스와 단일 네임스페이스 설치 모드 간의 중간 솔루션이므로 다음 워크플로우를 사용하여 각 테넌트에 대해 동일한 Operator의 여러 인스턴스를 설치할 수 있습니다.
- 테넌트의 네임스페이스와 별도로 테넌트 Operator의 네임스페이스를 생성합니다.
- 테넌트의 네임스페이스에 대해서만 테넌트 Operator 범위에 대한 Operator group을 생성합니다.
- 테넌트 Operator 네임스페이스에 Operator를 설치합니다.
결과적으로 Operator는 테넌트 Operator 네임스페이스에 상주하고 테넌트 네임스페이스를 감시하지만 테넌트에서 Operator의 Pod와 서비스 계정을 보거나 사용할 수 없습니다.
이 솔루션은 테넌트 분리, 리소스 사용 비용의 권한 이상의 원칙, 제약 조건 충족을 위한 추가 오케스트레이션을 제공합니다. 자세한 절차는 " 다중 테넌트 클러스터를 위한 Operator의 여러 인스턴스 준비"에서 참조하십시오.
제한 사항 및 고려 사항
이 솔루션은 다음 제약 조건을 충족하는 경우에만 작동합니다.
- 동일한 Operator의 모든 인스턴스는 동일한 버전이어야 합니다.
- Operator는 다른 Operator에 종속될 수 없습니다.
- Operator는 CRD 변환 Webhook를 제공할 수 없습니다.
동일한 클러스터에서 다른 버전의 동일한 Operator를 사용할 수 없습니다. 결국 다음 조건을 충족하는 경우 Operator의 다른 인스턴스 설치가 차단되었습니다.
- 인스턴스는 최신 버전의 Operator가 아닙니다.
- 인스턴스는 클러스터에서 이미 사용 중인 최신 버전에 있는 정보 또는 버전이 없는 이전 버전의 CRD를 제공합니다.
관리자는 "클러스터 이외의 관리자가 Operator를 설치할 수 있도록 허용"에 설명된 대로 클러스터 이외의 관리자가 Operator를 직접 설치할 수 있도록 허용할 때 주의해야 합니다. 이러한 테넌트는 종속 항목이 없는 것으로 알려진 Operator의 선별된 카탈로그에만 액세스할 수 있어야 합니다. CRD가 변경되지 않도록 이러한 테넌트도 Operator의 동일한 버전 라인을 사용해야 합니다. 이를 위해서는 네임스페이스 범위 카탈로그를 사용해야 하며 글로벌 기본 카탈로그가 비활성화될 수 있습니다.
2.7.3. Operator colocation 및 Operator groups
OLM(Operator Lifecycle Manager)은 동일한 네임스페이스에 설치된 OLM 관리 Operator를 처리합니다. 즉 서브스크립션
리소스는 관련 Operator와 동일한 네임스페이스에 배치됩니다. OLM은 실제로 관련이 없는 경우에도 버전 및 업데이트 정책과 같은 상태를 업데이트할 때 해당 상태를 고려합니다.
Operator 공동 배치 및 Operator 그룹을 효과적으로 사용하는 방법에 대한 자세한 내용은 OLM(Operator Lifecycle Manager)