7.3. OLM 1.0의 카탈로그에서 Operator 설치 (기술 프리뷰)


클러스터 관리자는 카탈로그 또는 Operator 및 Kubernetes 확장의 컬렉션을 클러스터에 추가할 수 있습니다. Operator 작성자는 해당 카탈로그에 제품을 게시합니다. 클러스터에 카탈로그를 추가할 때 카탈로그에 게시된 Operator 및 확장의 버전, 패치 및 무선 업데이트에 액세스할 수 있습니다.

OLM(Operator Lifecycle Manager) 1.0의 현재 기술 프리뷰 릴리스에서는 CR(사용자 정의 리소스)을 사용하여 CLI에서 카탈로그 및 Operator를 선언적으로 관리합니다.

중요

OLM 1.0은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

7.3.1. 사전 요구 사항

  • cluster-admin 권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스

    참고

    OpenShift Container Platform 4.16의 경우 OLM 1.0에 대한 문서화된 절차는 CLI 기반 전용입니다. 또는 관리자는 YAML 가져오기검색 페이지와 같은 일반 방법을 사용하여 웹 콘솔에서 관련 오브젝트를 생성하고 볼 수 있습니다. 그러나 기존 OperatorHub설치된 Operator 페이지에는 OLM 1.0 구성 요소가 표시되지 않습니다.

  • 클러스터에서 TechPreviewNoUpgrade 기능 세트 활성화

    주의

    TechPreviewNoUpgrade 기능 세트를 활성화하면 취소할 수 없으며 마이너 버전 업데이트가 허용되지 않습니다. 이러한 기능 세트는 프로덕션 클러스터에서는 권장되지 않습니다.

  • 워크스테이션에 설치된 OpenShift CLI(oc)

7.3.2. OLM 1.0의 카탈로그 정보

카탈로그 구성 요소를 사용하여 Operator 및 컨트롤러와 같은 Kubernetes 확장 카탈로그를 쿼리하여 설치 가능한 콘텐츠를 검색할 수 있습니다. Catalogd는 클러스터 내 클라이언트의 카탈로그 콘텐츠의 압축을 풀고 OLM(Operator Lifecycle Manager) 1.0 마이크로 서비스 제품군의 일부입니다. 현재 catalogd는 컨테이너 이미지로 패키지 및 배포되는 카탈로그 콘텐츠의 압축을 풉니다.

중요

고유한 이름이 없는 Operator 또는 확장을 설치하려고 하면 설치에 실패하거나 예기치 않은 결과가 발생할 수 있습니다. 이는 다음과 같은 이유로 발생합니다.

  • mulitple 카탈로그가 클러스터에 설치된 경우 OLM(Operator Lifecycle Manager) 1.0에는 Operator 또는 확장을 설치할 때 카탈로그를 지정하는 메커니즘이 포함되지 않습니다.
  • OLM 1.0에서는 클러스터에 설치할 수 있는 모든 Operator 및 확장을 해당 번들 및 패키지에 고유한 이름을 사용해야 합니다.

7.3.3. OLM 1.0의 Red Hat 제공 Operator 카탈로그

OLM(Operator Lifecycle Manager) 1.0에는 기본적으로 Red Hat 제공 Operator 카탈로그가 포함되어 있지 않습니다. Red Hat 제공 카탈로그를 클러스터에 추가하려면 카탈로그의 CR(사용자 정의 리소스)을 생성하여 클러스터에 적용합니다. 다음 CR(사용자 정의 리소스) 예제에서는 OLM 1.0에 대한 카탈로그 리소스를 생성하는 방법을 보여줍니다.

중요

registry.redhat.io 의 Red Hat 제공 Operator 카탈로그와 같은 보안 레지스트리에서 호스팅되는 카탈로그를 사용하려면 openshift-catalogd 네임스페이스에 풀 시크릿 범위가 지정되어야 합니다. 자세한 내용은 "보안 레지스트리에서 호스팅되는 카탈로그의 풀 시크릿 생성"을 참조하십시오.

Red Hat Operator 카탈로그의 예

apiVersion: catalogd.operatorframework.io/v1alpha1
kind: Catalog
metadata:
  name: redhat-operators
spec:
  source:
    type: image
    image:
      ref: registry.redhat.io/redhat/redhat-operator-index:v4.16
      pullSecret: <pull_secret_name>
      pollInterval: <poll_interval_duration> 
1
Copy to Clipboard Toggle word wrap

1
최신 이미지 다이제스트를 위해 원격 레지스트리를 폴링하는 간격을 지정합니다. 기본값은 24h 입니다. 유효한 단위에는 초(s), 분(m) 및 시간(h)이 포함됩니다. 폴링을 비활성화하려면 0s 와 같은 0 값을 설정합니다.

인증된 Operator 카탈로그의 예

apiVersion: catalogd.operatorframework.io/v1alpha1
kind: Catalog
metadata:
  name: certified-operators
spec:
  source:
    type: image
    image:
      ref: registry.redhat.io/redhat/certified-operator-index:v4.16
      pullSecret: <pull_secret_name>
      pollInterval: 24h
Copy to Clipboard Toggle word wrap

커뮤니티 Operator 카탈로그의 예

apiVersion: catalogd.operatorframework.io/v1alpha1
kind: Catalog
metadata:
  name: community-operators
spec:
  source:
    type: image
    image:
      ref: registry.redhat.io/redhat/community-operator-index:v4.16
      pullSecret: <pull_secret_name>
      pollInterval: 24h
Copy to Clipboard Toggle word wrap

다음 명령은 클러스터에 카탈로그를 추가합니다.

명령 구문

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

1
redhat-operators.yaml 과 같은 카탈로그 CR을 지정합니다.

7.3.4. 보안 레지스트리에서 호스팅되는 카탈로그의 풀 시크릿 생성

registry.redhat.io 의 Red Hat 제공 Operator 카탈로그와 같은 보안 레지스트리에서 호스팅되는 카탈로그를 사용하려면 openshift-catalogd 네임스페이스에 풀 시크릿 범위가 지정되어야 합니다.

참고

현재 catalogd는 OpenShift Container Platform 클러스터에서 글로벌 풀 시크릿을 읽을 수 없습니다. Catalogd는 배포된 네임스페이스에서만 보안에 대한 참조를 읽을 수 있습니다.

사전 요구 사항

  • 보안 레지스트리의 로그인 인증 정보
  • 워크스테이션에 Docker 또는 Podman이 설치되어 있어야 합니다.

프로세스

  • 보안 레지스트리에 대한 로그인 인증 정보가 있는 .dockercfg 파일이 이미 있는 경우 다음 명령을 실행하여 가져오기 보안을 생성합니다.

    $ oc create secret generic <pull_secret_name> \
        --from-file=.dockercfg=<file_path>/.dockercfg \
        --type=kubernetes.io/dockercfg \
        --namespace=openshift-catalogd
    Copy to Clipboard Toggle word wrap

    예 7.1. 명령 예

    $ oc create secret generic redhat-cred \
        --from-file=.dockercfg=/home/<username>/.dockercfg \
        --type=kubernetes.io/dockercfg \
        --namespace=openshift-catalogd
    Copy to Clipboard Toggle word wrap
  • 보안 레지스트리의 로그인 인증 정보가 있는 $HOME/.docker/config.json 파일이 이미 있는 경우 다음 명령을 실행하여 풀 시크릿을 생성합니다.

    $ oc create secret generic <pull_secret_name> \
        --from-file=.dockerconfigjson=<file_path>/.docker/config.json \
        --type=kubernetes.io/dockerconfigjson \
        --namespace=openshift-catalogd
    Copy to Clipboard Toggle word wrap

    예 7.2. 명령 예

    $ oc create secret generic redhat-cred \
        --from-file=.dockerconfigjson=/home/<username>/.docker/config.json \
        --type=kubernetes.io/dockerconfigjson \
        --namespace=openshift-catalogd
    Copy to Clipboard Toggle word wrap
  • 보안 레지스트리에 대한 로그인 인증 정보가 있는 Docker 구성 파일이 없는 경우 다음 명령을 실행하여 가져오기 보안을 생성합니다.

    $ oc create secret docker-registry <pull_secret_name> \
        --docker-server=<registry_server> \
        --docker-username=<username> \
        --docker-password=<password> \
        --docker-email=<email> \
        --namespace=openshift-catalogd
    Copy to Clipboard Toggle word wrap

    예 7.3. 명령 예

    $ oc create secret docker-registry redhat-cred \
        --docker-server=registry.redhat.io \
        --docker-username=username \
        --docker-password=password \
        --docker-email=user@example.com \
        --namespace=openshift-catalogd
    Copy to Clipboard Toggle word wrap

7.3.5. 클러스터에 카탈로그 추가

클러스터에 카탈로그를 추가하려면 카탈로그 CR(사용자 정의 리소스)을 생성하여 클러스터에 적용합니다.

사전 요구 사항

  • registry.redhat.io 의 Red Hat 제공 Operator 카탈로그와 같은 보안 레지스트리에서 호스팅되는 카탈로그를 사용하려면 openshift-catalogd 네임스페이스에 풀 시크릿 범위가 지정되어야 합니다. 자세한 내용은 "보안 레지스트리에서 호스팅되는 카탈로그의 풀 시크릿 생성"을 참조하십시오.

프로세스

  1. 다음 예와 유사한 카탈로그 CR(사용자 정의 리소스)을 생성합니다.

    예: redhat-operators.yaml

    apiVersion: catalogd.operatorframework.io/v1alpha1
    kind: Catalog
    metadata:
      name: redhat-operators
    spec:
      source:
        type: image
        image:
          ref: registry.redhat.io/redhat/redhat-operator-index:v4.16 
    1
    
          pullSecret: <pull_secret_name> 
    2
    
          pollInterval: <poll_interval_duration> 
    3
    Copy to Clipboard Toggle word wrap

    1
    spec.source.image 필드에 카탈로그의 이미지를 지정합니다.
    2
    카탈로그가 registry.redhat.io 와 같은 보안 레지스트리에서 호스팅되는 경우 openshift-catalog 네임스페이스에 대한 풀 시크릿 범위를 생성해야 합니다.
    3
    최신 이미지 다이제스트를 위해 원격 레지스트리를 폴링하는 간격을 지정합니다. 기본값은 24h 입니다. 유효한 단위에는 초(s), 분(m) 및 시간(h)이 포함됩니다. 폴링을 비활성화하려면 0s 와 같은 0 값을 설정합니다.
  2. 다음 명령을 실행하여 클러스터에 카탈로그를 추가합니다.

    $ oc apply -f redhat-operators.yaml
    Copy to Clipboard Toggle word wrap

    출력 예

    catalog.catalogd.operatorframework.io/redhat-operators created
    Copy to Clipboard Toggle word wrap

검증

  • 다음 명령을 실행하여 카탈로그 상태를 확인합니다.

    1. 다음 명령을 실행하여 카탈로그를 사용할 수 있는지 확인합니다.

      $ oc get catalog
      Copy to Clipboard Toggle word wrap

      출력 예

      NAME                  AGE
      redhat-operators      20s
      Copy to Clipboard Toggle word wrap

    2. 다음 명령을 실행하여 카탈로그의 상태를 확인합니다.

      $ oc describe catalog
      Copy to Clipboard Toggle word wrap

      출력 예

      Name:         redhat-operators
      Namespace:
      Labels:       <none>
      Annotations:  <none>
      API Version:  catalogd.operatorframework.io/v1alpha1
      Kind:         Catalog
      Metadata:
        Creation Timestamp:  2024-06-10T17:34:53Z
        Finalizers:
          catalogd.operatorframework.io/delete-server-cache
        Generation:        1
        Resource Version:  46075
        UID:               83c0db3c-a553-41da-b279-9b3cddaa117d
      Spec:
        Source:
          Image:
            Pull Secret:  redhat-cred
            Ref:          registry.redhat.io/redhat/redhat-operator-index:v4.16
          Type:           image
      Status: 
      1
      
        Conditions:
          Last Transition Time:  2024-06-10T17:35:15Z
          Message:
          Reason:                UnpackSuccessful 
      2
      
          Status:                True
          Type:                  Unpacked
        Content URL:             http://catalogd-catalogserver.openshift-catalogd.svc/catalogs/redhat-operators/all.json
        Observed Generation:     1
        Phase:                   Unpacked 
      3
      
        Resolved Source:
          Image:
            Last Poll Attempt:  2024-06-10T17:35:10Z
            Ref:                registry.redhat.io/redhat/redhat-operator-index:v4.16
            Resolved Ref:       registry.redhat.io/redhat/redhat-operator-index@sha256:f2ccc079b5e490a50db532d1dc38fd659322594dcf3e653d650ead0e862029d9 
      4
      
          Type:                 image
      Events:                   <none>
      Copy to Clipboard Toggle word wrap

      1
      카탈로그 상태를 설명합니다.
      2
      카탈로그가 현재 상태에 있는 이유를 표시합니다.
      3
      설치 프로세스의 단계를 표시합니다.
      4
      카탈로그의 이미지 참조를 표시합니다.

7.3.6. 카탈로그에서 설치할 Operator 찾기

클러스터에 카탈로그를 추가한 후 카탈로그를 쿼리하여 설치할 Operator 및 확장을 찾을 수 있습니다. 카탈로그를 쿼리하려면 먼저 카탈로그 서버 서비스를 전달하도록 포트해야 합니다.

사전 요구 사항

  • 클러스터에 카탈로그를 추가했습니다.
  • jq CLI 툴을 설치했습니다.

프로세스

  1. 포트 다음 명령을 실행하여 openshift-catalogd 네임스페이스에서 카탈로그 서버 서비스를 전달합니다.

    $ oc -n openshift-catalogd port-forward svc/catalogd-catalogserver 8080:80
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 카탈로그의 JSON 파일을 로컬로 다운로드합니다.

    $ curl -L http://localhost:8080/catalogs/<catalog_name>/all.json \
      -C - -o /<path>/<catalog_name>.json
    Copy to Clipboard Toggle word wrap

    예 7.4. 명령 예

    $ curl -L http://localhost:8080/catalogs/redhat-operators/all.json \
      -C - -o /home/username/catalogs/rhoc.json
    Copy to Clipboard Toggle word wrap
  3. 다음 명령 중 하나를 실행하여 카탈로그의 Operator 및 확장 목록을 반환합니다.

    include:snippets/olmv1-tp-extension-support.adoc[]

    • 다음 명령을 실행하여 로컬 카탈로그 파일에서 모든 Operator 및 확장 프로그램 목록을 가져옵니다.

      $ jq -s '.[] | select(.schema == "olm.package") | .name' \
        /<path>/<filename>.json
      Copy to Clipboard Toggle word wrap

      예 7.5. 명령 예

      $ jq -s '.[] | select(.schema == "olm.package") | .name' \
        /home/username/catalogs/rhoc.json
      Copy to Clipboard Toggle word wrap

      예 7.6. 출력 예

      NAME                                                        AGE
      "3scale-operator"
      "advanced-cluster-management"
      "amq-broker-rhel8"
      "amq-online"
      "amq-streams"
      "amq7-interconnect-operator"
      "ansible-automation-platform-operator"
      "ansible-cloud-addons-operator"
      "apicast-operator"
      "aws-efs-csi-driver-operator"
      "aws-load-balancer-operator"
      "bamoe-businessautomation-operator"
      "bamoe-kogito-operator"
      "bare-metal-event-relay"
      "businessautomation-operator"
      ...
      Copy to Clipboard Toggle word wrap
    • AllNamespaces 설치 모드를 지원하는 패키지 목록을 가져오고 다음 명령을 실행하여 로컬 카탈로그 파일의 Webhook를 사용하지 않습니다.

      $ jq -c 'select(.schema == "olm.bundle") | \
        {"package":.package, "version":.properties[] | \
        select(.type == "olm.bundle.object").value.data | @base64d | fromjson | \
        select(.kind == "ClusterServiceVersion" and (.spec.installModes[] | \
        select(.type == "AllNamespaces" and .supported == true) != null) \
        and .spec.webhookdefinitions == null).spec.version}' \
        /<path>/<catalog_name>.json
      Copy to Clipboard Toggle word wrap

      예 7.7. 출력 예

      {"package":"3scale-operator","version":"0.10.0-mas"}
      {"package":"3scale-operator","version":"0.10.5"}
      {"package":"3scale-operator","version":"0.11.0-mas"}
      {"package":"3scale-operator","version":"0.11.1-mas"}
      {"package":"3scale-operator","version":"0.11.2-mas"}
      {"package":"3scale-operator","version":"0.11.3-mas"}
      {"package":"3scale-operator","version":"0.11.5-mas"}
      {"package":"3scale-operator","version":"0.11.6-mas"}
      {"package":"3scale-operator","version":"0.11.7-mas"}
      {"package":"3scale-operator","version":"0.11.8-mas"}
      {"package":"amq-broker-rhel8","version":"7.10.0-opr-1"}
      {"package":"amq-broker-rhel8","version":"7.10.0-opr-2"}
      {"package":"amq-broker-rhel8","version":"7.10.0-opr-3"}
      {"package":"amq-broker-rhel8","version":"7.10.0-opr-4"}
      {"package":"amq-broker-rhel8","version":"7.10.1-opr-1"}
      {"package":"amq-broker-rhel8","version":"7.10.1-opr-2"}
      {"package":"amq-broker-rhel8","version":"7.10.2-opr-1"}
      {"package":"amq-broker-rhel8","version":"7.10.2-opr-2"}
      ...
      Copy to Clipboard Toggle word wrap
  4. 다음 명령을 실행하여 Operator 또는 확장의 메타데이터 콘텐츠를 검사합니다.

    $ jq -s '.[] | select( .schema == "olm.package") | \
      select( .name == "<package_name>")' /<path>/<catalog_name>.json
    Copy to Clipboard Toggle word wrap

    예 7.8. 명령 예

    $ jq -s '.[] | select( .schema == "olm.package") | \
      select( .name == "openshift-pipelines-operator-rh")' \
      /home/username/rhoc.json
    Copy to Clipboard Toggle word wrap

    예 7.9. 출력 예

    {
      "defaultChannel": "stable",
      "icon": {
        "base64data": "PHN2ZyB4bWxu..."
        "mediatype": "image/png"
      },
      "name": "openshift-pipelines-operator-rh",
      "schema": "olm.package"
    }
    Copy to Clipboard Toggle word wrap

7.3.6.1. 공통 카탈로그 쿼리

jq CLI 툴을 사용하여 카탈로그를 쿼리할 수 있습니다.

Expand
표 7.1. 일반적인 패키지 쿼리
쿼리요청

카탈로그에서 사용 가능한 패키지

$ jq -s '.[] | select( .schema == "olm.package") | \
  .name' <catalog_name>.json
Copy to Clipboard Toggle word wrap

AllNamespaces 설치 모드를 지원하고 Webhook를 사용하지 않는 패키지

$ jq -c 'select(.schema == "olm.bundle") | \
  {"package":.package, "version":.properties[] | \
  select(.type == "olm.bundle.object").value.data | \
  @base64d | fromjson | \
  select(.kind == "ClusterServiceVersion" and (.spec.installModes[] | \
  select(.type == "AllNamespaces" and .supported == true) != null) \
  and .spec.webhookdefinitions == null).spec.version}' \
  <catalog_name>.json
Copy to Clipboard Toggle word wrap

패키지 메타데이터

$ jq -s '.[] | select( .schema == "olm.package") | \
  select( .name == "<package_name>")' <catalog_name>.json
Copy to Clipboard Toggle word wrap

패키지의 카탈로그 Blob

$ jq -s '.[] | select( .package == "<package_name>")' \
  <catalog_name>.json
Copy to Clipboard Toggle word wrap
Expand
표 7.2. 공통 채널 쿼리
쿼리요청

패키지의 채널

$ jq -s '.[] | select( .schema == "olm.channel" ) | \
  select( .package == "<package_name>") | .name' \
  <catalog_name>.json
Copy to Clipboard Toggle word wrap

채널의 버전

$ jq -s '.[] | select( .package == "<package_name>" ) | \
  select( .schema == "olm.channel" ) | \
  select( .name == "<channel_name>" ) | \
  .entries | .[] | .name' <catalog_name>.json
Copy to Clipboard Toggle word wrap
  • 채널의 최신 버전
  • 업그레이드 경로
$ jq -s '.[] | select( .schema == "olm.channel" ) | \
  select ( .name == "<channel>") | \
  select( .package == "<package_name>")' \
  <catalog_name>.json
Copy to Clipboard Toggle word wrap
Expand
표 7.3. 공통 번들 쿼리
쿼리요청

패키지의 번들

$ jq -s '.[] | select( .schema == "olm.bundle" ) | \
  select( .package == "<package_name>") | .name' \
  <catalog_name>.json
Copy to Clipboard Toggle word wrap
  • 번들 종속 항목
  • 사용 가능한 API
$ jq -s '.[] | select( .schema == "olm.bundle" ) | \
  select ( .name == "<bundle_name>") | \
  select( .package == "<package_name>")' \
  <catalog_name>.json
Copy to Clipboard Toggle word wrap

7.3.7. 카탈로그에서 클러스터 확장 설치

OLM(Operator Lifecycle Manager) 1.0은 클러스터 범위인 registry+v1 번들 형식을 통해 레거시 OLM Operator를 포함하여 클러스터 확장 설치를 지원합니다. CR(사용자 정의 리소스)을 생성하고 클러스터에 적용하여 카탈로그에서 확장을 설치할 수 있습니다.

중요

OLM 1.0은 종속성 확인을 지원하지 않습니다. 확장이 다른 API 또는 패키지에 대한 종속성을 선언하는 경우 확장을 설치하기 전에 클러스터에 종속 항목이 있어야 합니다.

현재 OLM 1.0에서는 다음 기준을 충족하는 확장 기능을 설치할 수 있습니다.

  • 확장에서는 AllNamespaces 설치 모드를 사용해야 합니다.
  • 확장에서는 Webhook를 사용하지 않아야 합니다.

Webhook를 사용하거나 단일 또는 지정된 네임스페이스 집합을 대상으로 하는 클러스터 확장은 설치할 수 없습니다.

사전 요구 사항

  • 클러스터에 카탈로그를 추가했습니다.
  • 카탈로그 파일의 로컬 사본을 다운로드했습니다.
  • jq CLI 툴을 설치했습니다.

프로세스

  1. 다음 단계를 완료하여 카탈로그 파일의 로컬 사본에서 채널 및 버전 정보에 대한 패키지를 검사합니다.

    1. 다음 명령을 실행하여 선택한 패키지에서 채널 목록을 가져옵니다.

      $ jq -s '.[] | select( .schema == "olm.channel" ) | \
        select( .package == "<package_name>") | \
        .name' /<path>/<catalog_name>.json
      Copy to Clipboard Toggle word wrap

      예 7.10. 명령 예

      $ jq -s '.[] | select( .schema == "olm.channel" ) | \
        select( .package == "openshift-pipelines-operator-rh") | \
        .name' /home/username/rhoc.json
      Copy to Clipboard Toggle word wrap

      예 7.11. 출력 예

      "latest"
      "pipelines-1.11"
      "pipelines-1.12"
      "pipelines-1.13"
      "pipelines-1.14"
      Copy to Clipboard Toggle word wrap
    2. 다음 명령을 실행하여 채널에 게시된 버전 목록을 가져옵니다.

      $ jq -s '.[] | select( .package == "<package_name>" ) | \
        select( .schema == "olm.channel" ) | \
        select( .name == "<channel_name>" ) | .entries | \
        .[] | .name' /<path>/<catalog_name>.json
      Copy to Clipboard Toggle word wrap

      예 7.12. 명령 예

      $ jq -s '.[] | select( .package == "openshift-pipelines-operator-rh" ) | \
      select( .schema == "olm.channel" ) | select( .name == "latest" ) | \
      .entries | .[] | .name' /home/username/rhoc.json
      Copy to Clipboard Toggle word wrap

      예 7.13. 출력 예

      "openshift-pipelines-operator-rh.v1.12.0"
      "openshift-pipelines-operator-rh.v1.12.1"
      "openshift-pipelines-operator-rh.v1.12.2"
      "openshift-pipelines-operator-rh.v1.13.0"
      "openshift-pipelines-operator-rh.v1.13.1"
      "openshift-pipelines-operator-rh.v1.11.1"
      "openshift-pipelines-operator-rh.v1.12.0"
      "openshift-pipelines-operator-rh.v1.12.1"
      "openshift-pipelines-operator-rh.v1.12.2"
      "openshift-pipelines-operator-rh.v1.13.0"
      "openshift-pipelines-operator-rh.v1.14.1"
      "openshift-pipelines-operator-rh.v1.14.2"
      "openshift-pipelines-operator-rh.v1.14.3"
      "openshift-pipelines-operator-rh.v1.14.4"
      Copy to Clipboard Toggle word wrap
  2. 새 네임스페이스에 확장을 설치하려면 다음 명령을 실행합니다.

    $ oc adm new-project <new_namespace>
    Copy to Clipboard Toggle word wrap
  3. 다음 예와 유사한 CR을 생성합니다.

    pipelines-operator.yaml CR의 예

    apiVersion: olm.operatorframework.io/v1alpha1
    kind: ClusterExtension
    metadata:
      name: pipelines-operator
    spec:
      packageName: openshift-pipelines-operator-rh
      installNamespace: <namespace>
      channel: <channel>
      version: "<version>"
    Copy to Clipboard Toggle word wrap

    다음과 같습니다.

    <namespace>
    openshift-operators 또는 my-extension 와 같이 번들을 설치할 네임스페이스를 지정합니다. 확장 기능은 여전히 클러스터 범위이며 다른 네임스페이스에 설치된 리소스가 포함될 수 있습니다.
    <channel>
    선택 사항: 설치 또는 업데이트하려는 패키지에 대해 pipelines-1.11 또는 latest 와 같은 채널을 지정합니다.
    <version>

    선택 사항: 설치 또는 업데이트하려는 패키지의 1.11.1,1.12.x 또는 > =1.12.1 과 같은 버전 범위를 지정합니다. 자세한 내용은 "대상 버전을 지정하는 CR(사용자 정의 리소스) 예" 및 "버전 범위에 대한 지원"을 참조하십시오.

    중요

    고유한 이름이 없는 Operator 또는 확장을 설치하려고 하면 설치에 실패하거나 예기치 않은 결과가 발생할 수 있습니다. 이는 다음과 같은 이유로 발생합니다.

    • mulitple 카탈로그가 클러스터에 설치된 경우 OLM(Operator Lifecycle Manager) 1.0에는 Operator 또는 확장을 설치할 때 카탈로그를 지정하는 메커니즘이 포함되지 않습니다.
    • OLM 1.0에서는 클러스터에 설치할 수 있는 모든 Operator 및 확장을 해당 번들 및 패키지에 고유한 이름을 사용해야 합니다.
  4. 다음 명령을 실행하여 클러스터에 CR을 적용합니다.

    $ oc apply -f pipeline-operator.yaml
    Copy to Clipboard Toggle word wrap

    출력 예

    clusterextension.olm.operatorframework.io/pipelines-operator created
    Copy to Clipboard Toggle word wrap

검증

  1. 다음 명령을 실행하여 Operator 또는 확장의 CR을 YAML 형식으로 표시합니다.

    $ oc get clusterextension pipelines-operator -o yaml
    Copy to Clipboard Toggle word wrap

    예 7.14. 출력 예

    apiVersion: v1
    items:
    - apiVersion: olm.operatorframework.io/v1alpha1
      kind: ClusterExtension
      metadata:
        annotations:
          kubectl.kubernetes.io/last-applied-configuration: |
            {"apiVersion":"olm.operatorframework.io/v1alpha1","kind":"ClusterExtension","metadata":{"annotations":{},"name":"pipelines-operator"},"spec":{"channel":"latest","installNamespace":"openshift-operators","packageName":"openshift-pipelines-operator-rh","pollInterval":"30m"}}
        creationTimestamp: "2024-06-10T17:50:51Z"
        generation: 1
        name: pipelines-operator
        resourceVersion: "53324"
        uid: c54237be-cde4-46d4-9b31-d0ec6acc19bf
      spec:
        channel: latest
        installNamespace: openshift-operators
        packageName: openshift-pipelines-operator-rh
        upgradeConstraintPolicy: Enforce
      status:
        conditions:
        - lastTransitionTime: "2024-06-10T17:50:58Z"
          message: resolved to "registry.redhat.io/openshift-pipelines/pipelines-operator-bundle@sha256:dd3d18367da2be42539e5dde8e484dac3df33ba3ce1d5bcf896838954f3864ec"
          observedGeneration: 1
          reason: Success
          status: "True"
          type: Resolved
        - lastTransitionTime: "2024-06-10T17:51:11Z"
          message: installed from "registry.redhat.io/openshift-pipelines/pipelines-operator-bundle@sha256:dd3d18367da2be42539e5dde8e484dac3df33ba3ce1d5bcf896838954f3864ec"
          observedGeneration: 1
          reason: Success
          status: "True"
          type: Installed
        - lastTransitionTime: "2024-06-10T17:50:58Z"
          message: ""
          observedGeneration: 1
          reason: Deprecated
          status: "False"
          type: Deprecated
        - lastTransitionTime: "2024-06-10T17:50:58Z"
          message: ""
          observedGeneration: 1
          reason: Deprecated
          status: "False"
          type: PackageDeprecated
        - lastTransitionTime: "2024-06-10T17:50:58Z"
          message: ""
          observedGeneration: 1
          reason: Deprecated
          status: "False"
          type: ChannelDeprecated
        - lastTransitionTime: "2024-06-10T17:50:58Z"
          message: ""
          observedGeneration: 1
          reason: Deprecated
          status: "False"
          type: BundleDeprecated
        installedBundle:
          name: openshift-pipelines-operator-rh.v1.14.4
          version: 1.14.4
        resolvedBundle:
          name: openshift-pipelines-operator-rh.v1.14.4
          version: 1.14.4
    kind: List
    metadata:
      resourceVersion: ""
    Copy to Clipboard Toggle word wrap

    다음과 같습니다.

    spec.channel
    확장의 CR에 정의된 채널을 표시합니다.
    spec.version
    확장의 CR에 정의된 버전 또는 버전 범위를 표시합니다.
    status.conditions
    확장의 상태 및 상태에 대한 정보를 표시합니다.
    유형: 더 이상 사용되지 않음

    다음 중 하나 이상이 더 이상 사용되지 않는지 여부를 표시합니다.

    유형: PackageDeprecated
    해결된 패키지가 더 이상 사용되지 않는지 여부를 표시합니다.
    유형: ChannelDeprecated
    해결된 채널이 더 이상 사용되지 않는지 여부를 표시합니다.
    유형: BundleDeprecated
    해결된 번들이 더 이상 사용되지 않는지 여부를 표시합니다.

    status 필드의 False 값은 reason: 더 이상 사용되지 않는 조건이 더 이상 사용되지 않음을 나타냅니다. status 필드의 True 값은 reason: 더 이상 사용되지 않는 조건이 더 이상 사용되지 않음을 나타냅니다.

    installedBundle.name
    설치된 번들의 이름을 표시합니다.
    installedBundle.version
    설치된 번들의 버전을 표시합니다.
    resolvedBundle.name
    확인된 번들의 이름을 표시합니다.
    resolvedBundle.version
    해결된 번들의 verson을 표시합니다.
  2. 다음 명령을 실행하여 번들 배포에 대한 정보를 가져옵니다.

    $ oc get bundleDeployment pipelines-operator -o yaml
    Copy to Clipboard Toggle word wrap

    예 7.15. 출력 예

    apiVersion: core.rukpak.io/v1alpha2
    kind: BundleDeployment
    metadata:
      creationTimestamp: "2024-06-10T17:50:58Z"
      finalizers:
      - core.rukpak.io/delete-cached-bundle
      generation: 1
      name: pipelines-operator
      ownerReferences:
      - apiVersion: olm.operatorframework.io/v1alpha1
        blockOwnerDeletion: true
        controller: true
        kind: ClusterExtension
        name: pipelines-operator
        uid: c54237be-cde4-46d4-9b31-d0ec6acc19bf
      resourceVersion: "53414"
      uid: 74367cfc-578e-4da0-815f-fe40f3ca5d1c
    spec:
      installNamespace: openshift-operators
      provisionerClassName: core-rukpak-io-registry
      source:
        image:
          ref: registry.redhat.io/openshift-pipelines/pipelines-operator-bundle@sha256:dd3d18367da2be42539e5dde8e484dac3df33ba3ce1d5bcf896838954f3864ec
        type: image
    status:
      conditions:
      - lastTransitionTime: "2024-06-10T17:51:09Z"
        message: Successfully unpacked the image Bundle
        reason: UnpackSuccessful
        status: "True"
        type: Unpacked
      - lastTransitionTime: "2024-06-10T17:51:10Z"
        message: Instantiated bundle pipelines-operator successfully
        reason: InstallationSucceeded
        status: "True"
        type: Installed
      - lastTransitionTime: "2024-06-10T17:51:19Z"
        message: BundleDeployment is healthy
        reason: Healthy
        status: "True"
        type: Healthy
      contentURL: https://core.openshift-rukpak.svc/bundles/pipelines-operator.tgz
      observedGeneration: 1
      resolvedSource:
        image:
          ref: registry.redhat.io/openshift-pipelines/pipelines-operator-bundle@sha256:dd3d18367da2be42539e5dde8e484dac3df33ba3ce1d5bcf896838954f3864ec
        type: image
    Copy to Clipboard Toggle word wrap

7.3.8. 클러스터 확장 업데이트

CR(사용자 정의 리소스)을 수동으로 편집하고 변경 사항을 적용하여 클러스터 확장 또는 Operator를 업데이트할 수 있습니다.

사전 요구 사항

  • 카탈로그가 설치되어 있어야 합니다.
  • 카탈로그 파일의 로컬 사본을 다운로드했습니다.
  • Operator 또는 확장이 설치되어 있어야 합니다.
  • jq CLI 툴을 설치했습니다.

프로세스

  1. 다음 단계를 완료하여 카탈로그 파일의 로컬 사본에서 채널 및 버전 정보에 대한 패키지를 검사합니다.

    1. 다음 명령을 실행하여 선택한 패키지에서 채널 목록을 가져옵니다.

      $ jq -s '.[] | select( .schema == "olm.channel" ) | \
        select( .package == "<package_name>") | \
        .name' /<path>/<catalog_name>.json
      Copy to Clipboard Toggle word wrap

      예 7.16. 명령 예

      $ jq -s '.[] | select( .schema == "olm.channel" ) | \
        select( .package == "openshift-pipelines-operator-rh") | \
        .name' /home/username/rhoc.json
      Copy to Clipboard Toggle word wrap

      예 7.17. 출력 예

      "latest"
      "pipelines-1.11"
      "pipelines-1.12"
      "pipelines-1.13"
      "pipelines-1.14"
      Copy to Clipboard Toggle word wrap
    2. 다음 명령을 실행하여 채널에 게시된 버전 목록을 가져옵니다.

      $ jq -s '.[] | select( .package == "<package_name>" ) | \
        select( .schema == "olm.channel" ) | \
        select( .name == "<channel_name>" ) | .entries | \
        .[] | .name' /<path>/<catalog_name>.json
      Copy to Clipboard Toggle word wrap

      예 7.18. 명령 예

      $ jq -s '.[] | select( .package == "openshift-pipelines-operator-rh" ) | \
      select( .schema == "olm.channel" ) | select( .name == "latest" ) | \
      .entries | .[] | .name' /home/username/rhoc.json
      Copy to Clipboard Toggle word wrap

      예 7.19. 출력 예

      "openshift-pipelines-operator-rh.v1.11.1"
      "openshift-pipelines-operator-rh.v1.12.0"
      "openshift-pipelines-operator-rh.v1.12.1"
      "openshift-pipelines-operator-rh.v1.12.2"
      "openshift-pipelines-operator-rh.v1.13.0"
      "openshift-pipelines-operator-rh.v1.14.1"
      "openshift-pipelines-operator-rh.v1.14.2"
      "openshift-pipelines-operator-rh.v1.14.3"
      "openshift-pipelines-operator-rh.v1.14.4"
      Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 Operator 또는 확장의 CR에 지정된 버전 또는 채널을 확인합니다.

    $ oc get clusterextension <operator_name> -o yaml
    Copy to Clipboard Toggle word wrap

    명령 예

    $ oc get clusterextension pipelines-operator -o yaml
    Copy to Clipboard Toggle word wrap

    예 7.20. 출력 예

    apiVersion: olm.operatorframework.io/v1alpha1
    kind: ClusterExtension
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: |
          {"apiVersion":"olm.operatorframework.io/v1alpha1","kind":"ClusterExtension","metadata":{"annotations":{},"name":"pipelines-operator"},"spec":{"channel":"latest","installNamespace":"openshift-operators","packageName":"openshift-pipelines-operator-rh","pollInterval":"30m","version":"\u003c1.12"}}
      creationTimestamp: "2024-06-11T15:55:37Z"
      generation: 1
      name: pipelines-operator
      resourceVersion: "69776"
      uid: 6a11dff3-bfa3-42b8-9e5f-d8babbd6486f
    spec:
      channel: latest
      installNamespace: openshift-operators
      packageName: openshift-pipelines-operator-rh
      upgradeConstraintPolicy: Enforce
      version: <1.12
    status:
      conditions:
      - lastTransitionTime: "2024-06-11T15:56:09Z"
        message: installed from "registry.redhat.io/openshift-pipelines/pipelines-operator-bundle@sha256:e09d37bb1e754db42324fd18c1cb3e7ce77e7b7fcbf4932d0535391579938280"
        observedGeneration: 1
        reason: Success
        status: "True"
        type: Installed
      - lastTransitionTime: "2024-06-11T15:55:50Z"
        message: resolved to "registry.redhat.io/openshift-pipelines/pipelines-operator-bundle@sha256:e09d37bb1e754db42324fd18c1cb3e7ce77e7b7fcbf4932d0535391579938280"
        observedGeneration: 1
        reason: Success
        status: "True"
        type: Resolved
      - lastTransitionTime: "2024-06-11T15:55:50Z"
        message: ""
        observedGeneration: 1
        reason: Deprecated
        status: "False"
        type: Deprecated
      - lastTransitionTime: "2024-06-11T15:55:50Z"
        message: ""
        observedGeneration: 1
        reason: Deprecated
        status: "False"
        type: PackageDeprecated
      - lastTransitionTime: "2024-06-11T15:55:50Z"
        message: ""
        observedGeneration: 1
        reason: Deprecated
        status: "False"
        type: ChannelDeprecated
      - lastTransitionTime: "2024-06-11T15:55:50Z"
        message: ""
        observedGeneration: 1
        reason: Deprecated
        status: "False"
        type: BundleDeprecated
      installedBundle:
        name: openshift-pipelines-operator-rh.v1.11.1
        version: 1.11.1
      resolvedBundle:
        name: openshift-pipelines-operator-rh.v1.11.1
        version: 1.11.1
    Copy to Clipboard Toggle word wrap
  3. 다음 방법 중 하나를 사용하여 CR을 편집합니다.

    • Operator 또는 확장을 1.12.1 과 같은 특정 버전으로 고정하려면 다음 예와 유사한 CR을 편집합니다.

      pipelines-operator.yaml CR의 예

      apiVersion: olm.operatorframework.io/v1alpha1
      kind: ClusterExtension
      metadata:
        name: pipelines-operator
      spec:
        packageName: openshift-pipelines-operator-rh
        installNamespace: <namespace>
        version: "1.12.1" 
      1
      Copy to Clipboard Toggle word wrap

      1
      버전 1.11.1 에서 1.12.1로 업데이트
    • 허용 가능한 업데이트 버전의 범위를 정의하려면 다음 예와 유사한 CR을 편집합니다.

      버전 범위가 지정된 CR의 예

      apiVersion: olm.operatorframework.io/v1alpha1
      kind: ClusterExtension
      metadata:
        name: pipelines-operator
      spec:
        packageName: openshift-pipelines-operator-rh
        installNamespace: <namespace>
        version: ">1.11.1, <1.13" 
      1
      Copy to Clipboard Toggle word wrap

      1
      원하는 버전 범위가 버전 1.11.1 보다 크고 1.13 보다 작도록 지정합니다. 자세한 내용은 "버전 범위 지원" 및 "버전 비교 문자열"을 참조하십시오.
    • 채널에서 확인할 수 있는 최신 버전으로 업데이트하려면 다음 예제와 유사한 CR을 편집합니다.

      지정된 채널이 있는 CR의 예

      apiVersion: olm.operatorframework.io/v1alpha1
      kind: ClusterExtension
      metadata:
        name: pipelines-operator
      spec:
        packageName: openshift-pipelines-operator-rh
        installNamespace: <namespace>
        channel: pipelines-1.13 
      1
      Copy to Clipboard Toggle word wrap

      1
      지정된 채널에서 확인할 수 있는 최신 릴리스를 설치합니다. 채널 업데이트가 자동으로 설치됩니다.
    • 채널 및 버전 범위를 지정하려면 다음 예와 유사한 CR을 편집합니다.

      지정된 채널 및 버전 범위가 있는 CR의 예

      apiVersion: olm.operatorframework.io/v1alpha1
      kind: ClusterExtension
      metadata:
        name: pipelines-operator
      spec:
        packageName: openshift-pipelines-operator-rh
        installNamespace: <namespace>
        channel: latest
        version: "<1.13"
      Copy to Clipboard Toggle word wrap

      자세한 내용은 "대상 버전을 지정하는 CR(사용자 정의 리소스) 예"를 참조하십시오.

  4. 다음 명령을 실행하여 클러스터에 업데이트를 적용합니다.

    $ oc apply -f pipelines-operator.yaml
    Copy to Clipboard Toggle word wrap

    출력 예

    clusterextension.olm.operatorframework.io/pipelines-operator configured
    Copy to Clipboard Toggle word wrap

    작은 정보

    다음 명령을 실행하여 CLI에서 CR을 패치하고 적용할 수 있습니다.

    $ oc patch clusterextension/pipelines-operator -p \
      '{"spec":{"version":"<1.13"}}' \
      --type=merge
    Copy to Clipboard Toggle word wrap

    출력 예

    clusterextension.olm.operatorframework.io/pipelines-operator patched
    Copy to Clipboard Toggle word wrap

검증

  • 다음 명령을 실행하여 채널 및 버전 업데이트가 적용되었는지 확인합니다.

    $ oc get clusterextension pipelines-operator -o yaml
    Copy to Clipboard Toggle word wrap

    예 7.21. 출력 예

    apiVersion: olm.operatorframework.io/v1alpha1
    kind: ClusterExtension
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: |
          {"apiVersion":"olm.operatorframework.io/v1alpha1","kind":"ClusterExtension","metadata":{"annotations":{},"name":"pipelines-operator"},"spec":{"channel":"latest","installNamespace":"openshift-operators","packageName":"openshift-pipelines-operator-rh","pollInterval":"30m","version":"\u003c1.13"}}
      creationTimestamp: "2024-06-11T18:23:26Z"
      generation: 2
      name: pipelines-operator
      resourceVersion: "66310"
      uid: ce0416ba-13ea-4069-a6c8-e5efcbc47537
    spec:
      channel: latest
      installNamespace: openshift-operators
      packageName: openshift-pipelines-operator-rh
      upgradeConstraintPolicy: Enforce
      version: <1.13
    status:
      conditions:
      - lastTransitionTime: "2024-06-11T18:23:33Z"
        message: resolved to "registry.redhat.io/openshift-pipelines/pipelines-operator-bundle@sha256:814742c8a7cc7e2662598e114c35c13993a7b423cfe92548124e43ea5d469f82"
        observedGeneration: 2
        reason: Success
        status: "True"
        type: Resolved
      - lastTransitionTime: "2024-06-11T18:23:52Z"
        message: installed from "registry.redhat.io/openshift-pipelines/pipelines-operator-bundle@sha256:814742c8a7cc7e2662598e114c35c13993a7b423cfe92548124e43ea5d469f82"
        observedGeneration: 2
        reason: Success
        status: "True"
        type: Installed
      - lastTransitionTime: "2024-06-11T18:23:33Z"
        message: ""
        observedGeneration: 2
        reason: Deprecated
        status: "False"
        type: Deprecated
      - lastTransitionTime: "2024-06-11T18:23:33Z"
        message: ""
        observedGeneration: 2
        reason: Deprecated
        status: "False"
        type: PackageDeprecated
      - lastTransitionTime: "2024-06-11T18:23:33Z"
        message: ""
        observedGeneration: 2
        reason: Deprecated
        status: "False"
        type: ChannelDeprecated
      - lastTransitionTime: "2024-06-11T18:23:33Z"
        message: ""
        observedGeneration: 2
        reason: Deprecated
        status: "False"
        type: BundleDeprecated
      installedBundle:
        name: openshift-pipelines-operator-rh.v1.12.2
        version: 1.12.2
      resolvedBundle:
        name: openshift-pipelines-operator-rh.v1.12.2
        version: 1.12.2
    Copy to Clipboard Toggle word wrap

문제 해결

  • 더 이상 사용되지 않거나 존재하지 않는 대상 버전 또는 채널을 지정하는 경우 다음 명령을 실행하여 확장 상태를 확인할 수 있습니다.

    $ oc get clusterextension <operator_name> -o yaml
    Copy to Clipboard Toggle word wrap

    예 7.22. 존재하지 않는 버전의 출력 예

    apiVersion: olm.operatorframework.io/v1alpha1
    kind: ClusterExtension
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: |
          {"apiVersion":"olm.operatorframework.io/v1alpha1","kind":"ClusterExtension","metadata":{"annotations":{},"name":"pipelines-operator"},"spec":{"channel":"latest","installNamespace":"openshift-operators","packageName":"openshift-pipelines-operator-rh","pollInterval":"30m","version":"3.0"}}
      creationTimestamp: "2024-06-11T18:23:26Z"
      generation: 3
      name: pipelines-operator
      resourceVersion: "71852"
      uid: ce0416ba-13ea-4069-a6c8-e5efcbc47537
    spec:
      channel: latest
      installNamespace: openshift-operators
      packageName: openshift-pipelines-operator-rh
      upgradeConstraintPolicy: Enforce
      version: "3.0"
    status:
      conditions:
      - lastTransitionTime: "2024-06-11T18:29:02Z"
        message: 'error upgrading from currently installed version "1.12.2": no package
          "openshift-pipelines-operator-rh" matching version "3.0" found in channel "latest"'
        observedGeneration: 3
        reason: ResolutionFailed
        status: "False"
        type: Resolved
      - lastTransitionTime: "2024-06-11T18:29:02Z"
        message: installation has not been attempted as resolution failed
        observedGeneration: 3
        reason: InstallationStatusUnknown
        status: Unknown
        type: Installed
      - lastTransitionTime: "2024-06-11T18:29:02Z"
        message: deprecation checks have not been attempted as resolution failed
        observedGeneration: 3
        reason: Deprecated
        status: Unknown
        type: Deprecated
      - lastTransitionTime: "2024-06-11T18:29:02Z"
        message: deprecation checks have not been attempted as resolution failed
        observedGeneration: 3
        reason: Deprecated
        status: Unknown
        type: PackageDeprecated
      - lastTransitionTime: "2024-06-11T18:29:02Z"
        message: deprecation checks have not been attempted as resolution failed
        observedGeneration: 3
        reason: Deprecated
        status: Unknown
        type: ChannelDeprecated
      - lastTransitionTime: "2024-06-11T18:29:02Z"
        message: deprecation checks have not been attempted as resolution failed
        observedGeneration: 3
        reason: Deprecated
        status: Unknown
        type: BundleDeprecated
    Copy to Clipboard Toggle word wrap

7.3.9. 업그레이드 제약 조건 의미

설치된 클러스터 확장에 대한 업그레이드 에지를 결정할 때 OLM(Operator Lifecycle Manager) 1.0은 OpenShift Container Platform 4.16에서 시작하는 레거시 OLM 의미 체계를 지원합니다. 이 지원은 몇 가지 차이점이 있지만 대체,건너뛰기, skipRange 지시문을 포함하여 레거시 OLM의 동작을 따릅니다.

OLM 1.0은 레거시 OLM 의미 체계를 지원하여 카탈로그의 업그레이드 그래프를 정확하게 준수합니다.

원래의 기존 OLM 구현의 차이점

  • 가능한 여러 successor가 있는 경우 OLM 1.0 동작은 다음과 같은 방식으로 다릅니다.

    • 기존 OLM에서는 채널 헤드에 가장 가까운 후속 항목이 선택됩니다.
    • OLM 1.0에서 의미 체계(semver)가 가장 높은 후속 버전이 선택됩니다.
  • 다음 파일 기반 카탈로그(FBC) 채널 항목을 고려하십시오.

    # ...
    - name: example.v3.0.0
      skips: ["example.v2.0.0"]
    - name: example.v2.0.0
      skipRange: >=1.0.0 <2.0.0
    Copy to Clipboard Toggle word wrap

    1.0.0 이 설치된 경우 OLM 1.0 동작은 다음과 같은 방식으로 다릅니다.

    • v2.0.0 을 건너뛰고 대체 체인에 있지 않기 때문에 레거시 OLM에는 v2.0.0 으로의 업그레이드 엣지가 표시되지 않습니다.
    • OLM 1.0에는 대체 체인의 개념이 없으므로 OLM 1.0에 업그레이드 엣지가 표시됩니다. OLM 1.0은 현재 설치된 버전을 처리하는 replace,skip 또는 skipRange 값이 있는 모든 항목을 찾습니다.
참고

이 기술 프리뷰 단계에서 레거시 OLM 의미 체계를 선호하기 위해 OpenShift Container Platform 4.15에서는 시맨틱 버전 관리(semver) 업그레이드 제한에 대한 지원이 도입되었지만 4.16에서는 비활성화되어 있습니다.

7.3.9.1. 버전 범위 지원

OLM(Operator Lifecycle Manager) 1.0에서는 Operator 또는 확장의 CR(사용자 정의 리소스)에서 비교 문자열을 사용하여 버전 범위를 지정할 수 있습니다. CR에 버전 범위를 지정하는 경우 OLM 1.0은 버전 범위 내에서 해결할 수 있는 최신 버전의 Operator를 설치하거나 업데이트합니다.

해결된 버전 워크플로

  • 해결된 버전은 Operator 및 환경의 제약 조건을 충족하는 최신 버전의 Operator입니다.
  • 지정된 범위 내의 Operator 업데이트가 성공적으로 확인되면 자동으로 설치됩니다.
  • 지정된 범위를 벗어나거나 성공적으로 해결할 수 없는 경우 업데이트가 설치되지 않습니다.

7.3.9.2. 버전 비교 문자열

Operator 또는 확장의 CR(사용자 정의 리소스)의 spec.version 필드에 비교 문자열을 추가하여 버전 범위를 정의할 수 있습니다. 비교 문자열은 공백 또는 쉼표로 구분된 값 목록과 큰따옴표(")로 묶인 하나 이상의 비교 연산자입니다. OR 또는 double vertical bar ( || ) 비교 연산자를 포함 하 여 다른 비교 문자열을 추가할 수 있습니다.You can add another comparison string by including an OR, or double vertical bar (||), comparison operator between the strings.

Expand
표 7.4. 기본 비교
비교 연산자정의

=

동일

!=

같지 않음

>

보다 큼

<

보다 작음

>=

크거나 같음

<=

작거나 같음

다음 예와 유사한 범위 비교를 사용하여 Operator 또는 확장의 CR에서 버전 범위를 지정할 수 있습니다.

버전 범위 비교 예

apiVersion: olm.operatorframework.io/v1alpha1
kind: ClusterExtension
metadata:
  name: pipelines-operator
spec:
  packageName: openshift-pipelines-operator-rh
  installNamespace: <namespace_name>
  version: ">=1.11, <1.13"
Copy to Clipboard Toggle word wrap

모든 유형의 비교 문자열에 와일드카드 문자를 사용할 수 있습니다. OLM 1.0에서는 x,X 및 별표(*)를 와일드카드 문자로 허용합니다. 등호(=) 비교 연산자와 함께 와일드카드 문자를 사용하는 경우 패치 또는 마이너 버전 수준에서 비교를 정의합니다.

Expand
표 7.5. 비교 문자열에 있는 와일드카드 문자의 예
와일드카드 비교일치하는 문자열

1.11.x

>=1.11.0, <1.12.0

>=1.12.X

>=1.12.0

<=2.x

<3

*

>=0.0.0

틸드(~) 비교 연산자를 사용하여 패치 릴리스 비교를 수행할 수 있습니다. 패치 릴리스 비교에서는 다음 주요 버전까지 마이너 버전을 지정합니다.

Expand
표 7.6. 패치 릴리스 비교의 예
패치 릴리스 비교일치하는 문자열

~1.11.0

>=1.11.0, <1.12.0

~1

>=1, <2

~1.12

>=1.12, <1.13

~1.12.x

>=1.12.0, <1.13.0

~1.x

>=1, <2

caret(^) 비교 연산자를 사용하여 주요 릴리스를 비교할 수 있습니다. 첫 번째 안정적인 릴리스가 게시되기 전에 주요 릴리스 비교를 수행하는 경우 마이너 버전은 API의 안정성 수준을 정의합니다. 의미 체계 버전 관리 (semver) 사양에서 첫 번째 안정적인 릴리스는 1.0.0 버전으로 게시됩니다.

Expand
표 7.7. 주요 릴리스 비교의 예
주요 릴리스 비교일치하는 문자열

^0

>=0.0.0, <1.0.0

^0.0

>=0.0.0, <0.1.0

^0.0.3

>=0.0.3, <0.0.4

^0.2

>=0.2.0, <0.3.0

^0.2.3

>=0.2.3, <0.3.0

^1.2.x

>= 1.2.0, < 2.0.0

^1.2.3

>= 1.2.3, < 2.0.0

^2.x

>= 2.0.0, < 3

^2.3

>= 2.3, < 3

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

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

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

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

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

지정된 채널이 있는 CR의 예

apiVersion: olm.operatorframework.io/v1alpha1
kind: ClusterExtension
metadata:
  name: pipelines-operator
spec:
  packageName: openshift-pipelines-operator-rh
  installNamespace: <namespace_name>
  channel: latest 
1
Copy to Clipboard Toggle word wrap

1
지정된 채널에서 확인할 수 있는 최신 릴리스를 설치합니다. 채널 업데이트가 자동으로 설치됩니다.

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

클러스터에 설치된 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>
  version: "1.11.1" 
1
Copy to Clipboard Toggle word wrap

1
대상 버전을 지정합니다. 설치된 Operator 또는 확장 버전을 업데이트하려면 CR을 원하는 대상 버전으로 수동으로 업데이트해야 합니다.

Operator 또는 확장에 허용되는 다양한 버전을 정의하려면 비교 문자열을 사용하여 버전 범위를 지정할 수 있습니다. 버전 범위를 지정하면 OLM 1.0은 Operator 컨트롤러가 해결할 수 있는 Operator 또는 확장의 최신 버전을 설치합니다.

버전 범위가 지정된 CR의 예

apiVersion: olm.operatorframework.io/v1alpha1
kind: ClusterExtension
metadata:
  name: pipelines-operator
spec:
  packageName: openshift-pipelines-operator-rh
  installNamespace: <namespace_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

7.3.9.4. 업데이트 또는 롤백 강제 적용

OLM 1.0은 다음 주요 버전 또는 롤백에 대한 자동 업데이트를 이전 버전으로 지원하지 않습니다. 주요 버전 업데이트 또는 롤백을 수행하려면 수동으로 업데이트를 확인하고 강제 적용해야 합니다.

주의

수동 업데이트 또는 롤백을 강제 적용하는 결과를 확인해야 합니다. 강제 업데이트 또는 롤백을 확인하지 않으면 데이터 손실과 같은 심각한 결과가 발생할 수 있습니다.

사전 요구 사항

  • 카탈로그가 설치되어 있어야 합니다.
  • Operator 또는 확장이 설치되어 있어야 합니다.

프로세스

  1. 다음 예와 같이 Operator 또는 확장의 CR(사용자 정의 리소스)을 편집합니다.

    CR 예

    apiVersion: olm.operatorframework.io/v1alpha1
    kind: Operator
    metadata:
      name: <operator_name> 
    1
    
    spec:
      packageName: <package_name> 
    2
    
      installNamespace: <namespace_name>
      version: <version> 
    3
    
      upgradeConstraintPolicy: Ignore 
    4
    Copy to Clipboard Toggle word wrap

    1
    Operator 또는 확장의 이름(예: pipelines-operator)을 지정합니다.
    2
    openshift-pipelines-operator-rh 와 같은 패키지 이름을 지정합니다.
    3
    차단된 업데이트 또는 롤백 버전을 지정합니다.
    4
    선택 사항: 업그레이드 제약 조건 정책을 지정합니다. 업데이트 또는 롤백을 강제 적용하려면 필드를 Ignore 로 설정합니다. 지정되지 않은 경우 기본 설정은 Enforce 입니다.
  2. 다음 명령을 실행하여 Operator 또는 extensions CR에 변경 사항을 적용합니다.

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

7.3.10. Operator 삭제

ClusterExtension CR(사용자 정의 리소스)을 삭제하여 Operator 및 해당 CRD(사용자 정의 리소스 정의)를 삭제할 수 있습니다.

사전 요구 사항

  • 카탈로그가 설치되어 있어야 합니다.
  • Operator가 설치되어 있어야 합니다.

프로세스

  • 다음 명령을 실행하여 Operator 및 해당 CRD를 삭제합니다.

    $ oc delete clusterextension <operator_name>
    Copy to Clipboard Toggle word wrap

    출력 예

    clusterextension.olm.operatorframework.io "<operator_name>" deleted
    Copy to Clipboard Toggle word wrap

검증

  • 다음 명령을 실행하여 Operator 및 해당 리소스가 삭제되었는지 확인합니다.

    • 다음 명령을 실행하여 Operator가 삭제되었는지 확인합니다.

      $ oc get clusterextensions
      Copy to Clipboard Toggle word wrap

      출력 예

      No resources found
      Copy to Clipboard Toggle word wrap

    • 다음 명령을 실행하여 Operator의 시스템 네임스페이스가 삭제되었는지 확인합니다.

      $ oc get ns <operator_name>-system
      Copy to Clipboard Toggle word wrap

      출력 예

      Error from server (NotFound): namespaces "<operator_name>-system" not found
      Copy to Clipboard Toggle word wrap

7.3.11. 카탈로그 삭제

CR(사용자 정의 리소스)을 삭제하여 카탈로그를 삭제할 수 있습니다.

사전 요구 사항

  • 카탈로그가 설치되어 있어야 합니다.

프로세스

  • 다음 명령을 실행하여 카탈로그를 삭제합니다.

    $ oc delete catalog <catalog_name>
    Copy to Clipboard Toggle word wrap

    출력 예

    catalog.catalogd.operatorframework.io "my-catalog" deleted
    Copy to Clipboard Toggle word wrap

검증

  • 다음 명령을 실행하여 카탈로그가 삭제되었는지 확인합니다.

    $ oc get catalog
    Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat