2.2. 운영자 컨트롤러


Operator Controller는 Operator Lifecycle Manager(OLM) v1의 중심 구성 요소이며, 카탈로그된 다른 OLM v1 구성 요소를 사용합니다. 사용자가 연산자와 확장 기능을 설치할 수 있는 API를 통해 Kubernetes를 확장합니다.

2.2.1. ClusterExtension API

Operator Controller는 registry+v1 번들 형식을 통해 Operator를 포함하는, 설치된 확장 프로그램의 인스턴스를 나타내는 단일 리소스인 새로운 ClusterExtension API 객체를 제공합니다. 이 clusterextension.olm.operatorframework.io API는 사용자 중심 API를 단일 객체로 통합하여 설치된 확장 프로그램의 관리를 간소화합니다.

중요

OLM v1에서는 ClusterExtension 개체가 클러스터 범위입니다. 이는 OLM(클래식)과 다릅니다. OLM(클래식)의 경우 운영자는 관련 구독운영자 그룹 개체의 구성에 따라 네임스페이스 범위나 클러스터 범위가 될 수 있습니다.

이전 동작에 대한 자세한 내용은 다중 테넌시 및 운영자 공동 배치를 참조하세요.

ClusterExtension 오브젝트의 예

apiVersion: olm.operatorframework.io/v1
kind: ClusterExtension
metadata:
  name: <extension_name>
spec:
  namespace: <namespace_name>
  serviceAccount:
    name: <service_account_name>
  source:
    sourceType: Catalog
    catalog:
      packageName: <package_name>
      channels:
        - <channel>
      version: "<version>"
Copy to Clipboard Toggle word wrap

2.2.1.1. 대상 버전을 지정하는 사용자 정의 리소스(CR) 예시

Operator Lifecycle Manager(OLM) v1에서 클러스터 관리자는 사용자 지정 리소스(CR)에서 Operator 또는 확장 프로그램의 대상 버전을 선언적으로 설정할 수 있습니다.

다음 필드 중 하나를 지정하여 대상 버전을 정의할 수 있습니다.

  • 채널
  • 버전 번호
  • 버전 범위

CR에서 채널을 지정하면 OLM v1은 지정된 채널 내에서 확인 가능한 최신 버전의 Operator나 확장 프로그램을 설치합니다. 지정된 채널에 업데이트가 게시되면 OLM v1은 해당 채널에서 확인할 수 있는 최신 릴리스로 자동 업데이트됩니다.

지정된 채널이 있는 CR 예

apiVersion: olm.operatorframework.io/v1
  kind: ClusterExtension
  metadata:
    name: <clusterextension_name>
  spec:
    namespace: <installed_namespace>
    serviceAccount:
      name: <service_account_installer_name>
    source:
      sourceType: Catalog
      catalog:
        packageName: <package_name>
        channels:
          - latest 
1
Copy to Clipboard Toggle word wrap

1
선택 사항: 지정된 채널에서 해결 가능한 최신 릴리스를 설치합니다. 채널 업데이트는 자동으로 설치됩니다. channels 매개변수의 값을 배열로 지정합니다.

CR에서 운영자 또는 확장 프로그램의 대상 버전을 지정하면 OLM v1은 지정된 버전을 설치합니다. CR에 대상 버전이 지정되면 카탈로그에 업데이트가 게시될 때 OLM v1은 대상 버전을 변경하지 않습니다.

클러스터에 설치된 Operator 버전을 업데이트하려면 Operator의 CR을 수동으로 편집해야 합니다. 운영자의 대상 버전을 지정하면 운영자의 버전이 지정된 릴리스로 고정됩니다.

대상 버전이 지정된 CR 예

apiVersion: olm.operatorframework.io/v1
  kind: ClusterExtension
  metadata:
    name: <clusterextension_name>
  spec:
    namespace: <installed_namespace>
    serviceAccount:
      name: <service_account_installer_name>
    source:
      sourceType: Catalog
      catalog:
        packageName: <package_name>
        version: "1.11.1" 
1
Copy to Clipboard Toggle word wrap

1
선택 사항: 대상 버전을 지정합니다. 설치된 Operator나 확장 프로그램의 버전을 업데이트하려면 CR 필드를 원하는 대상 버전으로 수동으로 업데이트해야 합니다.

연산자나 확장 기능에 대해 허용되는 버전 범위를 정의하려면 비교 문자열을 사용하여 버전 범위를 지정할 수 있습니다. 버전 범위를 지정하면 OLM v1은 Operator Controller에서 확인할 수 있는 Operator 또는 확장 프로그램의 최신 버전을 설치합니다.

버전 범위가 지정된 CR 예

apiVersion: olm.operatorframework.io/v1
  kind: ClusterExtension
  metadata:
    name: <clusterextension_name>
  spec:
    namespace: <installed_namespace>
    serviceAccount:
      name: <service_account_installer_name>
    source:
      sourceType: Catalog
      catalog:
        packageName: <package_name>
        version: ">1.11.1" 
1
Copy to Clipboard Toggle word wrap

1
선택 사항: 원하는 버전 범위가 버전 1.11.1 보다 큰지 지정합니다. 자세한 내용은 "버전 범위 지원"을 참조하세요.

CR을 생성하거나 업데이트한 후 다음 명령을 실행하여 구성 파일을 적용합니다.

명령 구문

$ oc apply -f <extension_name>.yaml
Copy to Clipboard Toggle word wrap

2.2.2. 클러스터 확장에 대한 개체 소유권

Operator Lifecycle Manager(OLM) v1에서는 Kubernetes 객체는 한 번에 하나의 ClusterExtension 객체만 소유할 수 있습니다. 이를 통해 OpenShift Container Platform 클러스터 내의 개체가 일관되게 관리되고 동일한 개체를 제어하려는 여러 클러스터 확장 프로그램 간의 충돌이 방지됩니다.

2.2.2.1. 단일 소유권

OLM v1에서 적용되는 핵심 소유권 원칙은 각 개체가 소유자로서 하나의 클러스터 확장만 가질 수 있다는 것입니다. 이를 통해 여러 클러스터 확장에 의한 중복 또는 충돌하는 관리를 방지하고 각 개체가 단 하나의 번들과만 고유하게 연결되도록 보장합니다.

단일 소유권의 의미

  • CustomResourceDefinition (CRD) 객체를 제공하는 번들은 한 번만 설치할 수 있습니다.

    번들은 ClusterExtension 객체의 일부인 CRD를 제공합니다. 즉, 클러스터에 번들을 한 번만 설치할 수 있습니다. 동일한 CRD를 제공하는 다른 번들을 설치하려고 하면 실패하게 됩니다. 각 사용자 정의 리소스는 소유자로서 하나의 클러스터 확장만 가질 수 있기 때문입니다.

  • 클러스터 확장은 객체를 공유할 수 없습니다.

    OLM v1의 단일 소유자 정책은 클러스터 확장이 어떠한 개체의 소유권도 공유할 수 없음을 의미합니다. 하나의 클러스터 확장이 배포 , CustomResourceDefinition 또는 서비스 개체와 같은 특정 개체를 관리하는 경우 다른 클러스터 확장은 동일한 개체의 소유권을 주장할 수 없습니다. 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
Copy to Clipboard Toggle word wrap

이 오류 메시지는 해당 개체가 이미 다른 클러스터 확장 프로그램에서 관리되고 있어 재할당 또는 공유할 수 없음을 나타냅니다.

2.2.2.3. 고려 사항

클러스터 또는 확장 관리자로서 다음 고려 사항을 검토하세요.

번들의 고유성
동일한 CRD를 제공하는 Operator 번들이 두 번 이상 설치되지 않도록 하세요. 이를 통해 소유권 분쟁으로 인한 잠재적인 설치 실패를 방지할 수 있습니다.
객체 공유를 피하세요
유사한 리소스와 상호 작용하기 위해 다른 클러스터 확장이 필요한 경우 별도의 오브젝트를 관리하고 있는지 확인하십시오. 단일 소유자 적용으로 인해 클러스터 확장은 동일한 객체를 공동으로 관리할 수 없습니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat