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 カタログの例
- 1
- 新しいイメージダイジェストを確認するためにリモートレジストリーをポーリングする間隔を指定します。デフォルト値は、24hです。有効な単位は、秒 (s)、分 (m)、および時間 (h) です。ポーリングを無効にするには、0sなどのゼロ値を設定します。
認定 Operator カタログの例
コミュニティー Operator カタログの例
次のコマンドは、クラスターにカタログを追加します。
コマンド構文
oc apply -f <catalog_name>.yaml
$ oc apply -f <catalog_name>.yaml - 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- $ oc create secret generic <pull_secret_name> \ --from-file=.dockercfg=<file_path>/.dockercfg \ --type=kubernetes.io/dockercfg \ --namespace=openshift-catalogd- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.1 コマンドの例 - oc create secret generic redhat-cred \ --from-file=.dockercfg=/home/<username>/.dockercfg \ --type=kubernetes.io/dockercfg \ --namespace=openshift-catalogd- $ oc create secret generic redhat-cred \ --from-file=.dockercfg=/home/<username>/.dockercfg \ --type=kubernetes.io/dockercfg \ --namespace=openshift-catalogd- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 保護されたレジストリーのログイン認証情報を含む - $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- $ 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 Copied! - Toggle word wrap Toggle overflow - 例7.2 コマンドの例 - oc create secret generic redhat-cred \ --from-file=.dockerconfigjson=/home/<username>/.docker/config.json \ --type=kubernetes.io/dockerconfigjson \ --namespace=openshift-catalogd- $ oc create secret generic redhat-cred \ --from-file=.dockerconfigjson=/home/<username>/.docker/config.json \ --type=kubernetes.io/dockerconfigjson \ --namespace=openshift-catalogd- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- セキュアなレジストリーのログイン認証情報を含む Docker 設定ファイルがない場合は、次のコマンドを実行してプルシークレットを作成します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.3 コマンドの例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
7.3.5. クラスターへのカタログの追加
カタログをクラスターに追加するには、カタログカスタムリソース (CR) を作成し、それをクラスターに適用します。
前提条件
- Red Hat が提供する - registry.redhat.ioの Operator カタログなど、セキュアなレジストリーでホストされているカタログを使用する場合は、- openshift-catalogdnamespace をスコープとするプルシークレットが必要です。詳細は、「セキュアなレジストリーでホストされるカタログのプルシークレットを作成する」を参照してください。
手順
- 次の例のようなカタログカスタムリソース (CR) を作成します。 - redhat-operators.yamlの例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、カタログをクラスターに追加します。 - oc apply -f redhat-operators.yaml - $ oc apply -f redhat-operators.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - catalog.catalogd.operatorframework.io/redhat-operators created - catalog.catalogd.operatorframework.io/redhat-operators created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
検証
- 次のコマンドを実行して、カタログのステータスを確認します。 - 次のコマンドを実行して、カタログが利用可能かどうかを確認します。 - oc get catalog - $ oc get catalog- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME AGE redhat-operators 20s - NAME AGE redhat-operators 20s- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、カタログのステータスを確認します。 - oc describe catalog - $ oc describe catalog- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
7.3.6. カタログからインストールする Operator を見つける
クラスターにカタログを追加した後、カタログにクエリーを実行して、インストールする Operator と拡張機能を見つけることができます。カタログをクエリーする前に、カタログサーバーサービスをポート転送する必要があります。
前提条件
- クラスターにカタログを追加している。
- 
							jqCLI ツールがインストールされている。
手順
- 次のコマンドを実行して、 - openshift-catalogdnamespace のカタログサーバーサービスのポート転送を行います。- oc -n openshift-catalogd port-forward svc/catalogd-catalogserver 8080:80 - $ oc -n openshift-catalogd port-forward svc/catalogd-catalogserver 8080:80- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、カタログの JSON ファイルをローカルにダウンロードします。 - curl -L http://localhost:8080/catalogs/<catalog_name>/all.json \ -C - -o /<path>/<catalog_name>.json -C - -o /<path>/<catalog_name>.json - $ curl -L http://localhost:8080/catalogs/<catalog_name>/all.json \ -C - -o /<path>/<catalog_name>.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.4 コマンドの例 - curl -L http://localhost:8080/catalogs/redhat-operators/all.json \ -C - -o /home/username/catalogs/rhoc.json -C - -o /home/username/catalogs/rhoc.json - $ curl -L http://localhost:8080/catalogs/redhat-operators/all.json \ -C - -o /home/username/catalogs/rhoc.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドのいずれかを実行して、カタログ内のオペレータと拡張機能のリストを返します。 - include:snippets/olmv1-tp-extension-support.adoc[] - 次のコマンドを実行して、ローカルカタログファイルからすべての Operator と拡張機能のリストを取得します。 - jq -s '.[] | select(.schema == "olm.package") | .name' \ /<path>/<filename>.json - $ jq -s '.[] | select(.schema == "olm.package") | .name' \ /<path>/<filename>.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.5 コマンドの例 - jq -s '.[] | select(.schema == "olm.package") | .name' \ /home/username/catalogs/rhoc.json - $ jq -s '.[] | select(.schema == "olm.package") | .name' \ /home/username/catalogs/rhoc.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.6 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、 - AllNamespacesインストールモードをサポートし、Webhook を使用しないパッケージのリストを、ローカルカタログファイルから取得します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.7 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 次のコマンドを実行して、Operator または拡張機能のメタデータの内容を検査します。 - jq -s '.[] | select( .schema == "olm.package") | \ select( .name == "<package_name>")' /<path>/<catalog_name>.json - $ jq -s '.[] | select( .schema == "olm.package") | \ select( .name == "<package_name>")' /<path>/<catalog_name>.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.8 コマンドの例 - jq -s '.[] | select( .schema == "olm.package") | \ select( .name == "openshift-pipelines-operator-rh")' \ /home/username/rhoc.json - $ jq -s '.[] | select( .schema == "olm.package") | \ select( .name == "openshift-pipelines-operator-rh")' \ /home/username/rhoc.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.9 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
7.3.6.1. 一般的なカタログクエリー
						jq CLI ツールを使用して、カタログをクエリーできます。
					
| クエリー | Request | 
|---|---|
| カタログで利用可能なパッケージ | jq -s '.[] | select( .schema == "olm.package") | \ .name' <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  | 
| クエリー | 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  | 
| クエリー | Request | 
|---|---|
| パッケージ内のバンドル | jq -s '.[] | select( .schema == "olm.bundle" ) | \ select( .package == "<package_name>") | .name' \ <catalog_name>.json  | 
| 
 | 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 のセットを対象とするクラスター拡張機能はインストールできません。
前提条件
- クラスターにカタログを追加している。
- カタログファイルのローカルコピーをダウンロードしている。
- 
							jqCLI ツールがインストールされている。
手順
- 次の手順を実行して、カタログファイルのローカルコピーからパッケージのチャネルとバージョン情報を検査します。 - 次のコマンドを実行して、選択したパッケージからチャネルのリストを取得します。 - jq -s '.[] | select( .schema == "olm.channel" ) | \ select( .package == "<package_name>") | \ .name' /<path>/<catalog_name>.json - $ jq -s '.[] | select( .schema == "olm.channel" ) | \ select( .package == "<package_name>") | \ .name' /<path>/<catalog_name>.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.10 コマンドの例 - jq -s '.[] | select( .schema == "olm.channel" ) | \ select( .package == "openshift-pipelines-operator-rh") | \ .name' /home/username/rhoc.json - $ jq -s '.[] | select( .schema == "olm.channel" ) | \ select( .package == "openshift-pipelines-operator-rh") | \ .name' /home/username/rhoc.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.11 出力例 - "latest" "pipelines-1.11" "pipelines-1.12" "pipelines-1.13" "pipelines-1.14" - "latest" "pipelines-1.11" "pipelines-1.12" "pipelines-1.13" "pipelines-1.14"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、チャネルで公開されているバージョンのリストを取得します。 - jq -s '.[] | select( .package == "<package_name>" ) | \ select( .schema == "olm.channel" ) | \ select( .name == "<channel_name>" ) | .entries | \ .[] | .name' /<path>/<catalog_name>.json - $ jq -s '.[] | select( .package == "<package_name>" ) | \ select( .schema == "olm.channel" ) | \ select( .name == "<channel_name>" ) | .entries | \ .[] | .name' /<path>/<catalog_name>.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.12 コマンドの例 - jq -s '.[] | select( .package == "openshift-pipelines-operator-rh" ) | \ select( .schema == "olm.channel" ) | select( .name == "latest" ) | \ .entries | .[] | .name' /home/username/rhoc.json - $ jq -s '.[] | select( .package == "openshift-pipelines-operator-rh" ) | \ select( .schema == "olm.channel" ) | select( .name == "latest" ) | \ .entries | .[] | .name' /home/username/rhoc.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.13 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 拡張機能を新しい namespace にインストールする場合は、次のコマンドを実行します。 - oc adm new-project <new_namespace> - $ oc adm new-project <new_namespace>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次の例のような CR を作成します。 - pipelines-operator.yamlCR の例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ここでは、以下のようになります。 - <namespace>
- 
										openshift-operatorsやmy-extensionなど、バンドルをインストールする namespace を指定します。拡張機能は継続してクラスタースコープであり、異なる namespace にインストールされているリソースが含まれる可能性があります。
- <channel>
- 
										オプション: インストールまたは更新するパッケージのチャネル (pipelines-1.11、latestなど) を指定します。
- <version>
- オプション: インストールまたは更新するパッケージのバージョンまたはバージョン範囲 ( - 1.11.1、- 1.12.x、- >=1.12.1など) を指定します。詳細は、「ターゲットバージョンを指定するカスタムリソース (CR) の例」および「バージョン範囲のサポート」を参照してください。重要- 一意の名前を持たない Operator または拡張機能をインストールしようとすると、インストールが失敗するか、予期しない結果になる可能性があります。その原因は以下のとおりです。 - クラスターに複数のカタログがインストールされている場合、Operator Lifecycle Manager (OLM) 1.0 には、Operator または拡張機能のインストール時にカタログを指定するメカニズムがありません。
- OLM 1.0 では、クラスターにインストールできるすべての Operator および拡張機能のバンドルとパッケージに、一意の名前が使用されている必要があります。
 
 
- 次のコマンドを実行して、CR をクラスターに適用します。 - oc apply -f pipeline-operator.yaml - $ oc apply -f pipeline-operator.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - clusterextension.olm.operatorframework.io/pipelines-operator created - clusterextension.olm.operatorframework.io/pipelines-operator created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
検証
- 次のコマンドを実行して、Operator または拡張機能の CR を YAML 形式で表示します。 - oc get clusterextension pipelines-operator -o yaml - $ oc get clusterextension pipelines-operator -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.14 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ここでは、以下のようになります。 - 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
- 解決されたバンドルのバージョンを表示します。
 
- 次のコマンドを実行して、バンドルのデプロイメントに関する情報を取得します。 - oc get bundleDeployment pipelines-operator -o yaml - $ oc get bundleDeployment pipelines-operator -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.15 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
7.3.8. クラスター拡張機能の更新
カスタムリソース (CR) を手動で編集し、変更を適用することで、クラスター拡張機能または Operator を更新できます。
前提条件
- カタログがインストールされています。
- カタログファイルのローカルコピーをダウンロードしている。
- Operator または拡張機能がインストールされている。
- 
							jqCLI ツールがインストールされている。
手順
- 次の手順を実行して、カタログファイルのローカルコピーからパッケージのチャネルとバージョン情報を検査します。 - 次のコマンドを実行して、選択したパッケージからチャネルのリストを取得します。 - jq -s '.[] | select( .schema == "olm.channel" ) | \ select( .package == "<package_name>") | \ .name' /<path>/<catalog_name>.json - $ jq -s '.[] | select( .schema == "olm.channel" ) | \ select( .package == "<package_name>") | \ .name' /<path>/<catalog_name>.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.16 コマンドの例 - jq -s '.[] | select( .schema == "olm.channel" ) | \ select( .package == "openshift-pipelines-operator-rh") | \ .name' /home/username/rhoc.json - $ jq -s '.[] | select( .schema == "olm.channel" ) | \ select( .package == "openshift-pipelines-operator-rh") | \ .name' /home/username/rhoc.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.17 出力例 - "latest" "pipelines-1.11" "pipelines-1.12" "pipelines-1.13" "pipelines-1.14" - "latest" "pipelines-1.11" "pipelines-1.12" "pipelines-1.13" "pipelines-1.14"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、チャネルで公開されているバージョンのリストを取得します。 - jq -s '.[] | select( .package == "<package_name>" ) | \ select( .schema == "olm.channel" ) | \ select( .name == "<channel_name>" ) | .entries | \ .[] | .name' /<path>/<catalog_name>.json - $ jq -s '.[] | select( .package == "<package_name>" ) | \ select( .schema == "olm.channel" ) | \ select( .name == "<channel_name>" ) | .entries | \ .[] | .name' /<path>/<catalog_name>.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.18 コマンドの例 - jq -s '.[] | select( .package == "openshift-pipelines-operator-rh" ) | \ select( .schema == "olm.channel" ) | select( .name == "latest" ) | \ .entries | .[] | .name' /home/username/rhoc.json - $ jq -s '.[] | select( .package == "openshift-pipelines-operator-rh" ) | \ select( .schema == "olm.channel" ) | select( .name == "latest" ) | \ .entries | .[] | .name' /home/username/rhoc.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.19 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 次のコマンドを実行して、Operator または拡張機能の CR で指定されているバージョンまたはチャネルを確認します。 - oc get clusterextension <operator_name> -o yaml - $ oc get clusterextension <operator_name> -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - コマンドの例 - oc get clusterextension pipelines-operator -o yaml - $ oc get clusterextension pipelines-operator -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.20 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のいずれかの方法を使用して CR を編集します。 - Operator または拡張機能を特定のバージョン ( - 1.12.1など) に固定する場合は、次の例のように CR を編集します。- pipelines-operator.yamlCR の例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- バージョンを1.11.1から1.12.1に更新します。
 
- 許容可能な更新バージョンの範囲を定義する場合は、次の例のように CR を編集します。 - バージョン範囲を指定した CR の例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 必要なバージョン範囲が、バージョン1.11.1より大きく、1.13より小さいことを指定します。詳細は、「バージョン範囲のサポート」および「バージョン比較文字列」を参照してください。
 
- チャネルから解決できる最新バージョンに更新する場合は、次の例のように CR を編集します。 - チャネルを指定した CR の例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定されたチャネルから解決できる最新リリースをインストールします。チャネルへの更新は自動的にインストールされます。
 
- チャネルとバージョンまたはバージョン範囲を指定する場合は、次の例のように CR を編集します。 - チャネルとバージョン範囲を指定した CR の例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 詳細は、「ターゲットバージョンを指定するカスタムリソース (CR) の例」を参照してください。 
 
- 次のコマンドを実行して、クラスターに更新を適用します。 - oc apply -f pipelines-operator.yaml - $ oc apply -f pipelines-operator.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - clusterextension.olm.operatorframework.io/pipelines-operator configured - clusterextension.olm.operatorframework.io/pipelines-operator configured- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow ヒント- 次のコマンドを実行すると、CLI から CR にパッチを適用して変更を適用できます。 - oc patch clusterextension/pipelines-operator -p \ '{"spec":{"version":"<1.13"}}' \ --type=merge- $ oc patch clusterextension/pipelines-operator -p \ '{"spec":{"version":"<1.13"}}' \ --type=merge- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - clusterextension.olm.operatorframework.io/pipelines-operator patched - clusterextension.olm.operatorframework.io/pipelines-operator patched- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
検証
- 次のコマンドを実行して、チャネルとバージョンの更新が適用されていることを確認します。 - oc get clusterextension pipelines-operator -o yaml - $ oc get clusterextension pipelines-operator -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.21 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
トラブルシューティング
- 非推奨または存在しないターゲットバージョンまたはチャネルを指定する場合は、次のコマンドを実行して拡張機能のステータスを確認できます。 - oc get clusterextension <operator_name> -o yaml - $ oc get clusterextension <operator_name> -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例7.22 存在しないバージョンの出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
7.3.9. アップグレード制約セマンティック
					インストールされたクラスター拡張機能のアップグレードエッジを決定する場合、Operator Lifecycle Manager (OLM) 1.0 は、OpenShift Container Platform 4.16 以降、従来の OLM セマンティックをサポートします。このサポートは、replaces、skips、skipRange ディレクティブなど、従来の 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 - # ... - 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 Copied! - Toggle word wrap Toggle overflow - 1.0.0がインストールされている場合、OLM 1.0 の動作は次のように異なります。- 
									レガシー OLM では、v2.0.0がスキップされ、replacesチェーン上にないため、v2.0.0へのアップグレードエッジは表示されません。
- 
									OLM 1.0 には replacesチェーンの概念がないため、OLM 1.0 ではアップグレードエッジが表示されます。OLM 1.0 は、現在インストールされているバージョンに対応するreplace、skip、またはskipRange値を持つすべてのエントリーを検索します。
 
- 
									レガシー OLM では、
セマンティックバージョン (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 または二重縦棒 (||) を含めることで、別の比較文字列を追加できます。
					
| 比較演算子 | 定義 | 
|---|---|
| 
										 | 等しい | 
| 
										 | 等しくない | 
| 
										 | より大きい | 
| 
										 | より小さい | 
| 
										 | より大か等しい | 
| 
										 | より小か等しい | 
次の例のような範囲比較を使用して、Operator または拡張機能の CR でバージョン範囲を指定できます。
バージョン範囲の比較例
						すべてのタイプの比較文字列でワイルドカード文字を使用できます。OLM 1.0 では、x、X、およびアスタリスク (*) をワイルドカード文字として使用できます。ワイルドカード文字と比較演算子の等号 (=) を使用する場合は、パッチまたはマイナーバージョンレベルでの比較を定義します。
					
| ワイルドカード比較 | 一致する文字列 | 
|---|---|
| 
										 | 
										 | 
| 
										 | 
										 | 
| 
										 | 
										 | 
| 
										 | 
										 | 
						比較演算子のチルダ (~) を使用して、パッチリリースを比較できます。パッチリリースの比較では、次のメジャーバージョンまでのマイナーバージョンを指定します。
					
| パッチリリースの比較 | 一致する文字列 | 
|---|---|
| 
										 | 
										 | 
| 
										 | 
										 | 
| 
										 | 
										 | 
| 
										 | 
										 | 
| 
										 | 
										 | 
						比較演算子のキャレット (^) を使用して、メジャーリリースを比較できます。最初の stable リリースが公開される前にメジャーリリース比較を使用する場合、マイナーバージョンにより API の安定レベルが定義されます。セマンティックバージョン (semver) 仕様では、最初の安定リリースは 1.0.0 バージョンとして公開されます。
					
| メジャーリリースの比較 | 一致する文字列 | 
|---|---|
| 
										 | 
										 | 
| 
										 | 
										 | 
| 
										 | 
										 | 
| 
										 | 
										 | 
| 
										 | 
										 | 
| 
										 | 
										 | 
| 
										 | 
										 | 
| 
										 | 
										 | 
| 
										 | 
										 | 
7.3.9.3. ターゲットバージョンを指定するカスタムリソース (CR) の例
Operator Lifecycle Manager (OLM) 1.0 では、クラスター管理者はカスタムリソース (CR) で Operator または拡張機能のターゲットバージョンを宣言的に設定できます。
次のフィールドのいずれかを指定して、ターゲットバージョンを定義できます。
- チャネル
- バージョン番号
- バージョン範囲
CR でチャネルを指定すると、OLM 1.0 は、指定されたチャネル内で解決できる最新バージョンの Operator または拡張機能をインストールします。指定されたチャネルに更新が公開されると、OLM 1.0 はそのチャネルから解決できる最新リリースに自動的に更新します。
チャネルを指定した CR の例
- 1
- 指定されたチャネルから解決できる最新リリースをインストールします。チャネルへの更新は自動的にインストールされます。
CR で Operator または拡張機能のターゲットバージョンを指定すると、OLM 1.0 は指定されたバージョンをインストールします。CR でターゲットバージョンが指定されている場合、カタログに更新が公開されても OLM 1.0 はターゲットバージョンを変更しません。
クラスターにインストールされている Operator のバージョンを更新する必要がある場合は、Operator の CR を手動で編集する必要があります。Operator のターゲットバージョンを指定すると、Operator のバージョンが指定されたリリースに固定されます。
ターゲットバージョンを指定した CR の例
- 1
- ターゲットのバージョンを指定します。インストールされている Operator または拡張機能のバージョンを更新する必要がある場合は、CR のこのフィールドを目的のターゲットバージョンに手動で更新する必要があります。
Operator または拡張機能の許容可能なバージョン範囲を定義する場合は、比較文字列を使用してバージョン範囲を指定できます。バージョン範囲を指定すると、OLM 1.0 は、Operator Controller で解決できる最新バージョンの Operator または拡張機能をインストールします。
バージョン範囲を指定した CR の例
- 1
- 必要なバージョン範囲が、バージョン1.11.1より大きいことを指定します。詳細は、「バージョン範囲のサポート」を参照してください。
CR を作成または更新した後、次のコマンドを実行して設定ファイルを適用します。
コマンド構文
oc apply -f <extension_name>.yaml
$ oc apply -f <extension_name>.yaml7.3.9.4. 更新またはロールバックの強制
OLM 1.0 は、次のメジャーバージョンへの自動更新や以前のバージョンへのロールバックをサポートしていません。メジャーバージョンの更新またはロールバックを実行する場合は、手動で更新を確認して強制する必要があります。
手動更新またはロールバックを強制した場合の影響を確認する必要があります。更新またはロールバックの強制を検証しないと、データ損失などの致命的な結果が生じる可能性があります。
前提条件
- カタログがインストールされています。
- Operator または拡張機能がインストールされている。
手順
- 次の例に示すように、Operator または拡張機能のカスタムリソース (CR) を編集します。 - CR の例: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、Operator または拡張機能 CR に変更を適用します。 - oc apply -f <extension_name>.yaml - $ oc apply -f <extension_name>.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
7.3.10. Operator の削除
					ClusterExtension カスタムリソース (CR) を削除することで、Operator とそのカスタムリソース定義 (CRD) を削除できます。
				
前提条件
- カタログがインストールされています。
- Operator がインストールされています。
手順
- 次のコマンドを実行して、Operator とその CRD を削除します。 - oc delete clusterextension <operator_name> - $ oc delete clusterextension <operator_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - clusterextension.olm.operatorframework.io "<operator_name>" deleted - clusterextension.olm.operatorframework.io "<operator_name>" deleted- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
検証
- 次のコマンドを実行して、Operator とそのリソースが削除されたことを確認します。 - 次のコマンドを実行して、Operator が削除されたことを確認します。 - oc get clusterextensions - $ oc get clusterextensions- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - No resources found - No resources found- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、Operator のシステム namespace が削除されたことを確認します。 - oc get ns <operator_name>-system - $ oc get ns <operator_name>-system- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Error from server (NotFound): namespaces "<operator_name>-system" not found - Error from server (NotFound): namespaces "<operator_name>-system" not found- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
7.3.11. カタログの削除
カタログを削除するには、そのカスタムリソース (CR) を削除します。
前提条件
- カタログがインストールされています。
手順
- 次のコマンドを実行してカタログを削除します。 - oc delete catalog <catalog_name> - $ oc delete catalog <catalog_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - catalog.catalogd.operatorframework.io "my-catalog" deleted - catalog.catalogd.operatorframework.io "my-catalog" deleted- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
検証
- 次のコマンドを実行して、カタログが削除されたことを確認します。 - oc get catalog - $ oc get catalog- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow