7.3. OLM 1.0 (テクノロジープレビュー) のカタログから Operator をインストールする


クラスター管理者は、カタログ、つまり Operator と Kubernetes 拡張機能の厳選されたコレクションをクラスターに追加できます。Operator の作成者は、自社の製品をこれらのカタログに公開します。クラスターにカタログを追加すると、カタログに公開されている Operator と拡張機能のバージョン、パッチ、無線更新にアクセスできるようになります。

Operator Lifecycle Manager (OLM) 1.0 の現在のテクノロジープレビューリリースでは、カスタムリソース (CR) を使用して CLI からカタログと Operators を宣言的に管理します。

重要

OLM 1.0 は、テクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

7.3.1. 前提条件

  • cluster-admin パーミッションを持つアカウントを使用して OpenShift Container Platform クラスターにアクセスできる。

    注記

    OpenShift Container Platform 4.16 では、OLM 1.0 に関する手順書が CLI ベースのものに限られています。別の方法として、管理者は、Import YAML ページや Search ページなどの通常の方法を使用して、Web コンソールで関連オブジェクトを作成および表示することもできます。ただし、既存の OperatorHub および Installed Operators ページに OLM 1.0 コンポーネントはまだ表示されません。

  • クラスターで有効になっている TechPreviewNoUpgrade 機能セット。

    警告

    TechPreviewNoUpgrade 機能セットを有効にすると元に戻すことができなくなり、マイナーバージョンの更新ができなくなります。これらの機能セットは、実稼働クラスターでは推奨されません。

  • OpenShift CLI (oc) がワークステーションにインストールされている。

7.3.2. OLM 1.0 のカタログについて

catalogd コンポーネントを使用して、Operator やコントローラーなどの Kubernetes 拡張機能のカタログをクエリーすることで、インストール可能なコンテンツを検出できます。Catalogd は、クラスター上のクライアント用にカタログコンテンツを展開する Kubernetes 機能拡張であり、マイクロサービスの Operator Lifecycle Manager (OLM) 1.0 スイートの一部です。現在、catalogd は、コンテナーイメージとしてパッケージ化および配布されているカタログコンテンツを解凍します。

重要

一意の名前を持たない Operator または拡張機能をインストールしようとすると、インストールが失敗するか、予期しない結果になる可能性があります。その原因は以下のとおりです。

  • クラスターに複数のカタログがインストールされている場合、Operator Lifecycle Manager (OLM) 1.0 には、Operator または拡張機能のインストール時にカタログを指定するメカニズムがありません。
  • OLM 1.0 では、クラスターにインストールできるすべての Operator および拡張機能のバンドルとパッケージに、一意の名前が使用されている必要があります。

7.3.3. OLM 1.0 で Red Hat が提供する Operator カタログ

Operator Lifecycle Manager (OLM) 1.0 には、デフォルトでは Red Hat が提供する Operator カタログが含まれていません。Red Hat が提供するカタログをクラスターに追加する場合は、カタログのカスタムリソース (CR) を作成し、クラスターに適用します。次のカスタムリソース (CR) の例は、OLM 1.0 のカタログリソースを作成する方法を示しています。

重要

Red Hat が提供する registry.redhat.io の Operator カタログなど、セキュアなレジストリーでホストされているカタログを使用する場合は、openshift-catalogd namespace をスコープとするプルシークレットが必要です。詳細は、「セキュアなレジストリーでホストされるカタログのプルシークレットを作成する」を参照してください。

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

1
新しいイメージダイジェストを確認するためにリモートレジストリーをポーリングする間隔を指定します。デフォルト値は、24h です。有効な単位は、秒 (s)、分 (m)、および時間 (h) です。ポーリングを無効にするには、0s などのゼロ値を設定します。

認定 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

コミュニティー 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

次のコマンドは、クラスターにカタログを追加します。

コマンド構文

$ oc apply -f <catalog_name>.yaml 1

1
redhat-operators.yaml などのカタログ CR を指定します。

7.3.4. セキュアなレジストリーでホストされるカタログのプルシークレットを作成する

Red Hat が提供する registry.redhat.io の Operator カタログなど、セキュアなレジストリーでホストされているカタログを使用する場合は、openshift-catalogd namespace をスコープとするプルシークレットが必要です。

注記

現在、catalogd は OpenShift Container Platform クラスターからグローバルプルシークレットを読み取ることができません。Catalogd は、それがデプロイされている namespace でのみシークレットへの参照を読み取ることができます。

前提条件

  • セキュアなレジストリーのログイン認証情報
  • Docker または Podman がワークステーションにインストールされている。

手順

  • セキュアなレジストリーのログイン認証情報を含む .dockercfg ファイルがすでにある場合は、次のコマンドを実行してプルシークレットを作成します。

    $ oc create secret generic <pull_secret_name> \
        --from-file=.dockercfg=<file_path>/.dockercfg \
        --type=kubernetes.io/dockercfg \
        --namespace=openshift-catalogd

    例7.1 コマンドの例

    $ oc create secret generic redhat-cred \
        --from-file=.dockercfg=/home/<username>/.dockercfg \
        --type=kubernetes.io/dockercfg \
        --namespace=openshift-catalogd
  • 保護されたレジストリーのログイン認証情報を含む $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

    例7.2 コマンドの例

    $ oc create secret generic redhat-cred \
        --from-file=.dockerconfigjson=/home/<username>/.docker/config.json \
        --type=kubernetes.io/dockerconfigjson \
        --namespace=openshift-catalogd
  • セキュアなレジストリーのログイン認証情報を含む 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

    例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

7.3.5. クラスターへのカタログの追加

カタログをクラスターに追加するには、カタログカスタムリソース (CR) を作成し、それをクラスターに適用します。

前提条件

  • Red Hat が提供する registry.redhat.io の Operator カタログなど、セキュアなレジストリーでホストされているカタログを使用する場合は、openshift-catalogd namespace をスコープとするプルシークレットが必要です。詳細は、「セキュアなレジストリーでホストされるカタログのプルシークレットを作成する」を参照してください。

手順

  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

    1
    spec.source.image フィールドにカタログのイメージを指定します。
    2
    カタログが registry.redhat.io などのセキュアなレジストリーでホストされている場合は、スコープを openshift-catalog namespace に設定したプルシークレットを作成する必要があります。
    3
    新しいイメージダイジェストを確認するためにリモートレジストリーをポーリングする間隔を指定します。デフォルト値は、24h です。有効な単位は、秒 (s)、分 (m)、および時間 (h) です。ポーリングを無効にするには、0s などのゼロ値を設定します。
  2. 次のコマンドを実行して、カタログをクラスターに追加します。

    $ oc apply -f redhat-operators.yaml

    出力例

    catalog.catalogd.operatorframework.io/redhat-operators created

検証

  • 次のコマンドを実行して、カタログのステータスを確認します。

    1. 次のコマンドを実行して、カタログが利用可能かどうかを確認します。

      $ oc get catalog

      出力例

      NAME                  AGE
      redhat-operators      20s

    2. 次のコマンドを実行して、カタログのステータスを確認します。

      $ oc describe catalog

      出力例

      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>

      1
      カタログのステータスを記述します。
      2
      カタログが現在の状態になっている理由を表示します。
      3
      インストールプロセスのフェーズを表示します。
      4
      カタログのイメージ参照を表示します。

7.3.6. カタログからインストールする Operator を見つける

クラスターにカタログを追加した後、カタログにクエリーを実行して、インストールする Operator と拡張機能を見つけることができます。カタログをクエリーする前に、カタログサーバーサービスをポート転送する必要があります。

前提条件

  • クラスターにカタログを追加している。
  • jq CLI ツールがインストールされている。

手順

  1. 次のコマンドを実行して、openshift-catalogd namespace のカタログサーバーサービスのポート転送を行います。

    $ oc -n openshift-catalogd port-forward svc/catalogd-catalogserver 8080:80
  2. 次のコマンドを実行して、カタログの JSON ファイルをローカルにダウンロードします。

    $ curl -L http://localhost:8080/catalogs/<catalog_name>/all.json \
      -C - -o /<path>/<catalog_name>.json

    例7.4 コマンドの例

    $ curl -L http://localhost:8080/catalogs/redhat-operators/all.json \
      -C - -o /home/username/catalogs/rhoc.json
  3. 次のコマンドのいずれかを実行して、カタログ内のオペレータと拡張機能のリストを返します。

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

    • 次のコマンドを実行して、ローカルカタログファイルからすべての Operator と拡張機能のリストを取得します。

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

      例7.5 コマンドの例

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

      例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"
      ...
    • 次のコマンドを実行して、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

      例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"}
      ...
  4. 次のコマンドを実行して、Operator または拡張機能のメタデータの内容を検査します。

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

    例7.8 コマンドの例

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

    例7.9 出力例

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

7.3.6.1. 一般的なカタログクエリー

jq CLI ツールを使用して、カタログをクエリーできます。

表7.1 一般的なパッケージクエリー
クエリーRequest

カタログで利用可能なパッケージ

$ jq -s '.[] | select( .schema == "olm.package") | \
  .name' <catalog_name>.json

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

パッケージのメタデータ

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

パッケージ内のカタログブロブ

$ jq -s '.[] | select( .package == "<package_name>")' \
  <catalog_name>.json
表7.2 一般的なチャネルクエリー
クエリーRequest

パッケージのチャネル

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

チャネル内のバージョン

$ jq -s '.[] | select( .package == "<package_name>" ) | \
  select( .schema == "olm.channel" ) | \
  select( .name == "<channel_name>" ) | \
  .entries | .[] | .name' <catalog_name>.json
  • チャネルの最新バージョン
  • アップグレードパス
$ jq -s '.[] | select( .schema == "olm.channel" ) | \
  select ( .name == "<channel>") | \
  select( .package == "<package_name>")' \
  <catalog_name>.json
表7.3 一般的なバンドルクエリー
クエリーRequest

パッケージ内のバンドル

$ jq -s '.[] | select( .schema == "olm.bundle" ) | \
  select( .package == "<package_name>") | .name' \
  <catalog_name>.json
  • 依存関係をバンドルする
  • 利用可能な API
$ jq -s '.[] | select( .schema == "olm.bundle" ) | \
  select ( .name == "<bundle_name>") | \
  select( .package == "<package_name>")' \
  <catalog_name>.json

7.3.7. カタログからのクラスター拡張のインストール

Operator Lifecycle Manager (OLM) 1.0 は、クラスターにスコープ設定された、registry+v1 バンドル形式を介したレガシーの OLM Operator などの、クラスター拡張機能のインストールをサポートします。カスタムリソース (CR) を作成し、それをクラスターに適用することで、カタログから拡張機能をインストールできます。

重要

OLM 1.0 は依存関係の解決をサポートしていません。拡張機能が他の API またはパッケージへの依存関係を宣言する場合、拡張機能をインストールする前に、その依存関係がクラスター上に存在している必要があります。

現在、OLM 1.0 は次の基準を満たす拡張機能のインストールをサポートしています。

  • 拡張機能では AllNamespaces インストールモードを使用する必要があります。
  • 拡張機能では Webhook を使用しないでください。

Webhook を使用するクラスター拡張機能、または単一または指定された namespace のセットを対象とするクラスター拡張機能はインストールできません。

前提条件

  • クラスターにカタログを追加している。
  • カタログファイルのローカルコピーをダウンロードしている。
  • jq CLI ツールがインストールされている。

手順

  1. 次の手順を実行して、カタログファイルのローカルコピーからパッケージのチャネルとバージョン情報を検査します。

    1. 次のコマンドを実行して、選択したパッケージからチャネルのリストを取得します。

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

      例7.10 コマンドの例

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

      例7.11 出力例

      "latest"
      "pipelines-1.11"
      "pipelines-1.12"
      "pipelines-1.13"
      "pipelines-1.14"
    2. 次のコマンドを実行して、チャネルで公開されているバージョンのリストを取得します。

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

      例7.12 コマンドの例

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

      例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"
  2. 拡張機能を新しい namespace にインストールする場合は、次のコマンドを実行します。

    $ oc adm new-project <new_namespace>
  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>"

    ここでは、以下のようになります。

    <namespace>
    openshift-operatorsmy-extension など、バンドルをインストールする namespace を指定します。拡張機能は継続してクラスタースコープであり、異なる namespace にインストールされているリソースが含まれる可能性があります。
    <channel>
    オプション: インストールまたは更新するパッケージのチャネル (pipelines-1.11latest など) を指定します。
    <version>

    オプション: インストールまたは更新するパッケージのバージョンまたはバージョン範囲 (1.11.11.12.x>=1.12.1 など) を指定します。詳細は、「ターゲットバージョンを指定するカスタムリソース (CR) の例」および「バージョン範囲のサポート」を参照してください。

    重要

    一意の名前を持たない Operator または拡張機能をインストールしようとすると、インストールが失敗するか、予期しない結果になる可能性があります。その原因は以下のとおりです。

    • クラスターに複数のカタログがインストールされている場合、Operator Lifecycle Manager (OLM) 1.0 には、Operator または拡張機能のインストール時にカタログを指定するメカニズムがありません。
    • OLM 1.0 では、クラスターにインストールできるすべての Operator および拡張機能のバンドルとパッケージに、一意の名前が使用されている必要があります。
  4. 次のコマンドを実行して、CR をクラスターに適用します。

    $ oc apply -f pipeline-operator.yaml

    出力例

    clusterextension.olm.operatorframework.io/pipelines-operator created

検証

  1. 次のコマンドを実行して、Operator または拡張機能の CR を YAML 形式で表示します。

    $ oc get clusterextension pipelines-operator -o yaml

    例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: ""

    ここでは、以下のようになります。

    spec.channel
    拡張の CR で定義されたチャネルを表示します。
    spec.version
    拡張の CR で定義されたバージョンまたはバージョン範囲を表示します。
    status.conditions
    拡張機能のステータスと健全性に関する情報を表示します。
    type: Deprecated

    次の 1 つ以上が非推奨かどうかを表示します。

    type: PackageDeprecated
    解決されたパッケージが非推奨かどうかを表示します。
    type: ChannelDeprecated
    解決されたチャネルが非推奨かどうかを表示します。
    type: BundleDeprecated
    解決されたバンドルが非推奨かどうかを表示します。

    status フィールドの False の値は reason: Deprecated 条件が非推奨ではないことを示します。ステータス フィールドの True の値は reason: Deprecated 条件が非推奨であることを示します。

    installedBundle.name
    インストールされているバンドルの名前を表示します。
    installedBundle.version
    インストールされているバンドルのバージョンを表示します。
    resolvedBundle.name
    解決されたバンドルの名前を表示します。
    resolvedBundle.version
    解決されたバンドルのバージョンを表示します。
  2. 次のコマンドを実行して、バンドルのデプロイメントに関する情報を取得します。

    $ oc get bundleDeployment pipelines-operator -o yaml

    例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

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

      例7.16 コマンドの例

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

      例7.17 出力例

      "latest"
      "pipelines-1.11"
      "pipelines-1.12"
      "pipelines-1.13"
      "pipelines-1.14"
    2. 次のコマンドを実行して、チャネルで公開されているバージョンのリストを取得します。

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

      例7.18 コマンドの例

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

      例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"
  2. 次のコマンドを実行して、Operator または拡張機能の CR で指定されているバージョンまたはチャネルを確認します。

    $ oc get clusterextension <operator_name> -o yaml

    コマンドの例

    $ oc get clusterextension pipelines-operator -o yaml

    例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
  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

      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

      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

      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"

      詳細は、「ターゲットバージョンを指定するカスタムリソース (CR) の例」を参照してください。

  4. 次のコマンドを実行して、クラスターに更新を適用します。

    $ oc apply -f pipelines-operator.yaml

    出力例

    clusterextension.olm.operatorframework.io/pipelines-operator configured

    ヒント

    次のコマンドを実行すると、CLI から CR にパッチを適用して変更を適用できます。

    $ oc patch clusterextension/pipelines-operator -p \
      '{"spec":{"version":"<1.13"}}' \
      --type=merge

    出力例

    clusterextension.olm.operatorframework.io/pipelines-operator patched

検証

  • 次のコマンドを実行して、チャネルとバージョンの更新が適用されていることを確認します。

    $ oc get clusterextension pipelines-operator -o yaml

    例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

トラブルシューティング

  • 非推奨または存在しないターゲットバージョンまたはチャネルを指定する場合は、次のコマンドを実行して拡張機能のステータスを確認できます。

    $ oc get clusterextension <operator_name> -o yaml

    例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

7.3.9. アップグレード制約セマンティック

インストールされたクラスター拡張機能のアップグレードエッジを決定する場合、Operator Lifecycle Manager (OLM) 1.0 は、OpenShift Container Platform 4.16 以降、従来の OLM セマンティックをサポートします。このサポートは、replacesskipsskipRange ディレクティブなど、従来の OLM の動作に従いますが、いくつかの違いがあります。

従来の OLM セマンティックをサポートすることで、OLM 1.0 はカタログからのアップグレードグラフを正確に認識するようになりました。

元のレガシー OLM 実装との相違点

  • 複数の後継候補がある場合、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

    1.0.0 がインストールされている場合、OLM 1.0 の動作は次のように異なります。

    • レガシー OLM では、v2.0.0 がスキップされ、replaces チェーン上にないため、v2.0.0 へのアップグレードエッジは表示されません。
    • OLM 1.0 には replaces チェーンの概念がないため、OLM 1.0 ではアップグレードエッジが表示されます。OLM 1.0 は、現在インストールされているバージョンに対応する replaceskip、または skipRange 値を持つすべてのエントリーを検索します。
注記

セマンティックバージョン (semver) のアップグレード制約のサポートは OpenShift Container Platform 4.15 で導入されましたが、このテクノロジープレビューフェーズでは従来の OLM セマンティクスを優先するため 4.16 では無効になっています。

7.3.9.1. バージョン範囲のサポート

Operator Lifecycle Manager (OLM) 1.0 では、Operator または拡張機能のカスタムリソース (CR) で比較文字列を使用してバージョン範囲を指定できます。CR でバージョン範囲を指定すると、OLM 1.0 は、そのバージョン範囲内で解決できる Operator の最新バージョンをインストールまたは更新します。

解決されるバージョンのワークフロー

  • 解決されるバージョンは、Operator と環境の制約を満たす Operator の最新バージョンです。
  • 正常に解決された場合、指定された範囲内の Operator 更新は自動的にインストールされます。
  • 指定された範囲外にある場合、または正常に解決できない場合、その更新はインストールされません。

7.3.9.2. バージョン比較文字列

Operator または拡張機能のカスタムリソース (CR) の spec.version フィールドに比較文字列を追加することで、バージョン範囲を定義できます。比較文字列は、スペースまたはコンマで区切られた値と、二重引用符 (") で囲まれた 1 つ以上の比較演算子のリストです。文字列の間に比較演算子の OR または二重縦棒 (||) を含めることで、別の比較文字列を追加できます。

表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"

すべてのタイプの比較文字列でワイルドカード文字を使用できます。OLM 1.0 では、xX、およびアスタリスク (*) をワイルドカード文字として使用できます。ワイルドカード文字と比較演算子の等号 (=) を使用する場合は、パッチまたはマイナーバージョンレベルでの比較を定義します。

表7.5 比較文字列内のワイルドカード文字の例
ワイルドカード比較一致する文字列

1.11.x

>=1.11.0, <1.12.0

>=1.12.X

>=1.12.0

<=2.x

<3

*

>=0.0.0

比較演算子のチルダ (~) を使用して、パッチリリースを比較できます。パッチリリースの比較では、次のメジャーバージョンまでのマイナーバージョンを指定します。

表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

比較演算子のキャレット (^) を使用して、メジャーリリースを比較できます。最初の stable リリースが公開される前にメジャーリリース比較を使用する場合、マイナーバージョンにより API の安定レベルが定義されます。セマンティックバージョン (semver) 仕様では、最初の安定リリースは 1.0.0 バージョンとして公開されます。

表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) の例

Operator Lifecycle Manager (OLM) 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

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

1
ターゲットのバージョンを指定します。インストールされている Operator または拡張機能のバージョンを更新する必要がある場合は、CR のこのフィールドを目的のターゲットバージョンに手動で更新する必要があります。

Operator または拡張機能の許容可能なバージョン範囲を定義する場合は、比較文字列を使用してバージョン範囲を指定できます。バージョン範囲を指定すると、OLM 1.0 は、Operator Controller で解決できる最新バージョンの 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

1
必要なバージョン範囲が、バージョン 1.11.1 より大きいことを指定します。詳細は、「バージョン範囲のサポート」を参照してください。

CR を作成または更新した後、次のコマンドを実行して設定ファイルを適用します。

コマンド構文

$ oc apply -f <extension_name>.yaml

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

    1
    Operator または拡張機能の名前を指定します (pipelines-operator など)。
    2
    openshift-pipelines-operator-rh などのパッケージ名を指定します。
    3
    ブロックされた更新またはロールバックのバージョンを指定します。
    4
    オプション: アップグレード制約ポリシーを指定します。更新またはロールバックを強制するには、このフィールドを Ignore に設定します。指定しない場合、デフォルト設定は Enforce になります。
  2. 次のコマンドを実行して、Operator または拡張機能 CR に変更を適用します。

    $ oc apply -f <extension_name>.yaml

7.3.10. Operator の削除

ClusterExtension カスタムリソース (CR) を削除することで、Operator とそのカスタムリソース定義 (CRD) を削除できます。

前提条件

  • カタログがインストールされています。
  • Operator がインストールされています。

手順

  • 次のコマンドを実行して、Operator とその CRD を削除します。

    $ oc delete clusterextension <operator_name>

    出力例

    clusterextension.olm.operatorframework.io "<operator_name>" deleted

検証

  • 次のコマンドを実行して、Operator とそのリソースが削除されたことを確認します。

    • 次のコマンドを実行して、Operator が削除されたことを確認します。

      $ oc get clusterextensions

      出力例

      No resources found

    • 次のコマンドを実行して、Operator のシステム namespace が削除されたことを確認します。

      $ oc get ns <operator_name>-system

      出力例

      Error from server (NotFound): namespaces "<operator_name>-system" not found

7.3.11. カタログの削除

カタログを削除するには、そのカスタムリソース (CR) を削除します。

前提条件

  • カタログがインストールされています。

手順

  • 次のコマンドを実行してカタログを削除します。

    $ oc delete catalog <catalog_name>

    出力例

    catalog.catalogd.operatorframework.io "my-catalog" deleted

検証

  • 次のコマンドを実行して、カタログが削除されたことを確認します。

    $ oc get catalog
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.