2.2. Operator Controller
OLM(Operator Lifecycle Manager) v1은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
Operator 컨트롤러는 OLM(Operator Lifecycle Manager) v1의 핵심 구성 요소이며 다른 OLM v1 구성 요소 catalogd를 사용합니다. 사용자가 Operator 및 확장을 설치할 수 있는 API를 사용하여 Kubernetes를 확장합니다.
2.2.1. ClusterExtension API
Operator 컨트롤러는 registry+v1
번들 형식을 통해 Operator를 포함하는 설치된 확장 인스턴스를 나타내는 단일 리소스인 새로운 ClusterExtension
API 오브젝트를 제공합니다. 이 clusterextension.olm.operatorframework.io
API는 사용자용 API를 단일 오브젝트로 통합하여 설치된 확장 확장의 관리를 간소화합니다.
OLM v1에서 ClusterExtension
오브젝트는 클러스터 범위입니다. 이는 관련 Subscription
및 OperatorGroup
오브젝트의 구성에 따라 Operator가 네임스페이스 범위 또는 클러스터 범위 중 하나일 수 있는 기존 OLM과 다릅니다.
이전 동작에 대한 자세한 내용은 Multitenancy 및 Operator colocation 을 참조하십시오.
ClusterExtension
오브젝트의 예
apiVersion: olm.operatorframework.io/v1alpha1 kind: ClusterExtension metadata: name: <operator_name> spec: packageName: <package_name> installNamespace: <namespace_name> channel: <channel_name> version: <version_number>
2.2.1.1. 대상 버전을 지정하는 CR(사용자 정의 리소스)의 예
OLM(Operator Lifecycle Manager) v1에서 클러스터 관리자는 사용자 정의 리소스(CR)에서 Operator 또는 확장의 대상 버전을 선언적으로 설정할 수 있습니다.
다음 필드 중 하나를 지정하여 대상 버전을 정의할 수 있습니다.
- 채널
- 버전 번호
- 버전 범위
CR에 채널을 지정하면 OLM v1이 지정된 채널 내에서 해결할 수 있는 최신 버전의 Operator 또는 확장 버전을 설치합니다. 지정된 채널에 업데이트가 게시되면 OLM v1이 채널에서 확인할 수 있는 최신 릴리스로 자동으로 업데이트됩니다.
지정된 채널이 있는 CR의 예
apiVersion: olm.operatorframework.io/v1alpha1
kind: ClusterExtension
metadata:
name: pipelines-operator
spec:
packageName: openshift-pipelines-operator-rh
installNamespace: <namespace_name>
serviceAccount:
name: <service_account>
channel: latest 1
- 1
- 지정된 채널에서 확인할 수 있는 최신 릴리스를 설치합니다. 채널 업데이트가 자동으로 설치됩니다.
CR에서 Operator 또는 확장의 대상 버전을 지정하면 OLM v1이 지정된 버전을 설치합니다. 대상 버전이 CR에 지정되면 업데이트가 카탈로그에 게시될 때 OLM v1에서 대상 버전이 변경되지 않습니다.
클러스터에 설치된 Operator 버전을 업데이트하려면 Operator의 CR을 수동으로 편집해야 합니다. Operator의 대상 버전을 지정하면 Operator 버전이 지정된 릴리스에 고정됩니다.
대상 버전이 지정된 CR의 예
apiVersion: olm.operatorframework.io/v1alpha1
kind: ClusterExtension
metadata:
name: pipelines-operator
spec:
packageName: openshift-pipelines-operator-rh
installNamespace: <namespace_name>
serviceAccount:
name: <service_account>
version: "1.11.1" 1
- 1
- 대상 버전을 지정합니다. 설치된 Operator 또는 확장 버전을 업데이트하려면 CR을 원하는 대상 버전으로 수동으로 업데이트해야 합니다.
Operator 또는 확장에 허용되는 다양한 버전을 정의하려면 비교 문자열을 사용하여 버전 범위를 지정할 수 있습니다. 버전 범위를 지정하면 OLM v1은 Operator 컨트롤러에서 해결할 수 있는 최신 버전의 Operator 또는 확장을 설치합니다.
버전 범위가 지정된 CR의 예
apiVersion: olm.operatorframework.io/v1alpha1
kind: ClusterExtension
metadata:
name: pipelines-operator
spec:
packageName: openshift-pipelines-operator-rh
installNamespace: <namespace_name>
serviceAccount:
name: <service_account>
version: ">1.11.1" 1
- 1
- 원하는 버전 범위가 버전
1.11.1
보다 크도록 지정합니다. 자세한 내용은 "버전 범위 지원"을 참조하십시오.
CR을 생성하거나 업데이트한 후 다음 명령을 실행하여 구성 파일을 적용합니다.
명령 구문
$ oc apply -f <extension_name>.yaml
2.2.2. 클러스터 확장의 오브젝트 소유권
OLM(Operator Lifecycle Manager) v1에서 Kubernetes 오브젝트는 한 번에 단일 ClusterExtension
오브젝트에서만 소유할 수 있습니다. 이렇게 하면 OpenShift Container Platform 클러스터 내의 오브젝트를 일관되게 관리하고 동일한 오브젝트를 제어하려고 하는 여러 클러스터 확장 간의 충돌을 방지할 수 있습니다.
2.2.2.1. 단일 소유권
OLM v1에서 적용하는 코어 소유권 원칙은 각 오브젝트에 소유자로서 하나의 클러스터 확장만 있을 수 있다는 것입니다. 이렇게 하면 여러 클러스터 확장에 의해 중복되거나 충돌하는 관리가 방지되므로 각 오브젝트가 하나의 번들과 고유하게 연결되어 있습니다.
단일 소유권의 영향
CRD(
CustomResourceDefinition
) 오브젝트를 제공하는 번들은 한 번만 설치할 수 있습니다.번들은
ClusterExtension
오브젝트의 일부인 CRD를 제공합니다. 즉, 클러스터에서 번들을 한 번만 설치할 수 있습니다. 각 사용자 정의 리소스에 소유자와 함께 하나의 클러스터 확장만 있을 수 있으므로 동일한 CRD를 제공하는 다른 번들을 설치하려고 하면 오류가 발생합니다.클러스터 확장은 오브젝트를 공유할 수 없습니다.
OLM v1의 단일 소유자 정책은 클러스터 확장이 오브젝트의 소유권을 공유할 수 없음을 의미합니다. 하나의 클러스터 확장에서
Deployment
,CustomResourceDefinition
또는Service
오브젝트와 같은 특정 오브젝트를 관리하는 경우 다른 클러스터 확장에서는 동일한 오브젝트의 소유권을 요청할 수 없습니다. 이렇게 하려는 모든 시도는 OLM v1에 의해 차단됩니다.
2.2.2.2. 오류 메시지
동일한 오브젝트를 관리하려고 하는 여러 클러스터 확장으로 인해 충돌이 발생하면 Operator Controller는 다음과 같은 소유권 충돌을 나타내는 오류 메시지를 반환합니다.
오류 메시지의 예
CustomResourceDefinition 'logfilemetricexporters.logging.kubernetes.io' already exists in namespace 'kubernetes-logging' and cannot be managed by operator-controller
이 오류 메시지는 개체가 이미 다른 클러스터 확장에 의해 관리되고 있으며 다시 할당하거나 공유할 수 없음을 나타냅니다.
2.2.2.3. 고려 사항
클러스터 또는 확장 관리자로서 다음 고려 사항을 검토하십시오.
- 번들의 고유성
- 동일한 CRD를 제공하는 Operator 번들이 두 번 이상 설치되지 않았는지 확인합니다. 이렇게 하면 소유권 충돌로 인해 잠재적인 설치 실패를 방지할 수 있습니다.
- 오브젝트 공유 방지
- 유사한 리소스와 상호 작용하기 위해 다른 클러스터 확장이 필요한 경우 별도의 오브젝트를 관리하고 있는지 확인하십시오. 클러스터 확장은 단일 소유자 적용으로 인해 동일한 오브젝트를 공동으로 관리할 수 없습니다.