4.6. 비 클러스터 관리자가 Operator를 설치하도록 허용
Operator를 실행하는 데 광범위한 권한이 필요할 수 있으며 필요한 권한이 버전에 따라 다를 수 있습니다. OLM(Operator Lifecycle Manager)은 cluster-admin
권한으로 실행됩니다. 기본적으로 Operator 작성자는 CSV(클러스터 서비스 버전)의 권한 세트를 지정할 수 있으며 OLM은 이에 따라 해당 권한 세트를 Operator에 부여합니다.
클러스터 관리자는 Operator가 클러스터 범위 권한을 얻을 수 없고 사용자가 OLM을 사용하여 권한을 에스컬레이션할 수 없도록 조치를 취해야 합니다. 이러한 작동을 잠글 수 있는 한 가지 방법은 Operator를 클러스터에 추가하기 전에 클러스터 관리자가 Operator를 감사하는 것입니다. 클러스터 관리자에게는 서비스 계정을 사용하여 Operator를 설치 또는 업그레이드하는 동안 수행할 수 있는 작업을 결정하고 제한하는 툴도 제공됩니다.
클러스터 관리자는 Operator group을 일련의 권한이 부여된 서비스 계정과 연결함으로써 RBAC 규칙을 사용하여 사전에 정해진 범위 내에서만 작동하도록 Operator에 정책을 설정할 수 있습니다. Operator는 해당 규칙에서 명시적으로 허용하지 않는 작업은 수행할 수 없습니다.
이처럼 비 클러스터 관리자에 의해 범위가 제한되는 자급식 Operator 설치에서는 더 많은 사용자가 더 많은 Operator 프레임워크 툴을 안전하게 사용할 수 있어 Operator를 통해 애플리케이션을 빌드하는 경험을 더 다양하게 제공할 수 있습니다.
4.6.1. Operator 설치 정책 이해
OLM(Operator Lifecycle Manager)을 사용하면 클러스터 관리자가 Operator group룹에 서비스 계정을 지정하여 해당 그룹에 연결된 모든 Operator를 배포하고 서비스 계정에 부여된 권한에 따라 실행할 수 있습니다.
APIService
및 CustomResourceDefinition
리소스는 항상 cluster-admin
역할을 사용하여 OLM에 의해 생성됩니다. Operator group과 연결된 서비스 계정에는 이러한 리소스를 작성할 수 있는 권한을 부여해서는 안 됩니다.
지정된 서비스 계정에 설치 또는 업그레이드 중인 Operator에 대한 적절한 권한이 없는 경우 클러스터 관리자가 문제를 쉽게 해결할 수 있도록 각 리소스 상태에 유용한 정보 및 컨텍스트 정보가 추가됩니다.
이제 Operator group에 연결된 모든 Operator의 권한이 지정된 서비스 계정에 부여된 권한으로 제한됩니다. Operator에서 서비스 계정 범위를 벗어나는 권한을 요청하면 설치가 실패하고 해당 오류 메시지가 표시됩니다.
4.6.1.1. 설치 시나리오
Operator를 클러스터에서 설치하거나 업그레이드할 수 있는지 결정하는 경우 OLM(Operator Lifecycle Manager)은 다음 시나리오를 고려합니다.
- 클러스터 관리자가 새 Operator group을 생성하고 서비스 계정을 지정합니다. 이 Operator group과 연결된 모든 Operator가 설치되고 서비스 계정에 부여된 권한에 따라 실행됩니다.
- 클러스터 관리자가 새 Operator group을 생성하고 서비스 계정을 지정하지 않습니다. OpenShift Container Platform은 이전 버전과의 호환성을 유지하므로 기본 동작은 그대로 유지되면서 Operator 설치 및 업그레이드가 허용됩니다.
- 서비스 계정을 지정하지 않는 기존 Operator group의 경우 기본 동작은 그대로 유지되면서 Operator 설치 및 업그레이드가 허용됩니다.
- 클러스터 관리자가 기존 Operator group을 업데이트하고 서비스 계정을 지정합니다. OLM을 사용하면 현재 권한을 사용하여 기존 Operator를 계속 실행될 수 있습니다. 이러한 기존 Operator에서 업그레이드를 수행하면 기존 Operator가 새 Operator와 같이 서비스 계정에 부여된 권한에 따라 다시 설치되어 실행됩니다.
- 권한을 추가하거나 제거함으로써 Operator group에서 지정하는 서비스 계정이 변경되거나 기존 서비스 계정을 새 서비스 계정과 교체합니다. 기존 Operator에서 업그레이드를 수행하면 기존 Operator가 새 Operator와 같이 업데이트된 서비스 계정에 부여된 권한에 따라 다시 설치되어 실행됩니다.
- 클러스터 관리자는 Operator group에서 서비스 계정을 제거합니다. 기본 동작은 유지되고 Operator 설치 및 업그레이드는 허용됩니다.
4.6.1.2. 설치 워크플로
Operator group이 서비스 계정에 연결되고 Operator가 설치 또는 업그레이드되면 OLM(Operator Lifecycle Manager)에서 다음과 같은 워크플로를 사용합니다.
-
OLM에서 지정된
Subscription
오브젝트를 선택합니다. - OLM에서 이 서브스크립션에 연결된 Operator group을 가져옵니다.
- OLM에서 Operator group에 서비스 계정이 지정되었는지 확인합니다.
- OLM에서 서비스 계정에 대한 클라이언트 범위를 생성하고 범위가 지정된 클라이언트를 사용하여 Operator를 설치합니다. 이렇게 하면 Operator에서 요청한 모든 권한이 항상 Operator group 서비스 계정의 권한으로 제한됩니다.
- OLM은 CSV에 지정된 권한 세트를 사용하여 새 서비스 계정을 생성하고 Operator에 할당합니다. Operator는 할당된 서비스 계정으로 실행됩니다.