第5章 クラスター拡張機能
5.1. クラスター拡張機能の管理 リンクのコピーリンクがクリップボードにコピーされました!
カタログがクラスターに追加されると、カタログに公開されている拡張機能と Operator のバージョン、パッチ、OTA (over-the-air) 更新にアクセスできるようになります。
カスタムリソース (CR) を使用して、CLI から拡張機能を宣言的に管理できます。
OpenShift Container Platform 4.18 の場合、OLM v1 の文書化された手順は CLI ベースです。別の方法として、管理者は、Import YAML ページや Search ページなどの通常の方法を使用して、Web コンソールで関連オブジェクトを作成および表示することもできます。ただし、既存の OperatorHub および Installed Operators ページには OLM v1 コンポーネントがまだ表示されません。
5.1.1. サポートされる拡張機能 リンクのコピーリンクがクリップボードにコピーされました!
現在、Operator Lifecycle Manager (OLM) v1 は、次のすべての条件を満たすクラスター拡張機能のインストールをサポートしています。
-
拡張機能では、OLM (Classic) で導入された
registry+v1
バンドル形式を使用する必要があります。 -
拡張機能は、
AllNamespaces
インストールモードによるインストールをサポートする必要があります。 - 拡張機能は Webhook を使用してはなりません。
拡張機能は、次に示すいずれかのファイルベースのカタログプロパティーを使用して依存関係を宣言してはなりません。
-
olm.gvk.required
-
olm.package.required
-
olm.constraint
-
OLM v1 は、インストールする拡張機能がこれらの制約を満たしているかどうかを確認します。インストールする拡張機能がこれらの制約を満たしていない場合、クラスター拡張機能の条件にエラーメッセージが出力されます。
Operator Lifecycle Manager (OLM) v1 は、OLM (Classic) で導入された OperatorConditions
API をサポートしていません。
拡張機能が OperatorConditions
API のみに依存して更新を管理している場合、拡張機能が正しくインストールされない可能性があります。この API に依存する拡張機能のほとんどは起動時に失敗しますが、一部は調整中に失敗する可能性があります。
回避策として、拡張機能を特定のバージョンに固定できます。拡張機能を更新する場合は、拡張機能のドキュメントを参照して、いつ拡張機能を新しいバージョンに固定すれば安全か確認してください。
5.1.2. カタログからインストールする Operator を見つける リンクのコピーリンクがクリップボードにコピーされました!
クラスターにカタログを追加した後、カタログにクエリーを実行して、インストールする Operator と拡張機能を見つけることができます。
現在、Operator Lifecycle Manager (OLM) v1 では、catalogd によって管理されるクラスター上のカタログをクエリーすることはできません。OLM v1 では、カタログレジストリーをクエリーするには、opm
および jq
CLI ツールを使用する必要があります。
前提条件
- クラスターにカタログを追加している。
-
jq
CLI ツールがインストールされている。 -
opm
がインストールされている。
手順
AllNamespaces
インストールモードをサポートし、Webhook を使用しない拡張機能のリストを返すには、次のコマンドを入力します。opm render <catalog_registry_url>:<tag> \ | jq -cs '[.[] | select(.schema == "olm.bundle" \ | jq -cs '[.[] | select(.schema == "olm.bundle" \ and (.properties[] | select(.type == "olm.csv.metadata").value.installModes[] \ and (.properties[] | select(.type == "olm.csv.metadata").value.installModes[] \ | select(.type == "AllNamespaces" and .supported == true)) \ | select(.type == "AllNamespaces" and .supported == true)) \ and .spec.webhookdefinitions == null) | .package] | unique[]' and .spec.webhookdefinitions == null) | .package] | unique[]'
$ opm render <catalog_registry_url>:<tag> \ | jq -cs '[.[] | select(.schema == "olm.bundle" \ and (.properties[] | select(.type == "olm.csv.metadata").value.installModes[] \ | select(.type == "AllNamespaces" and .supported == true)) \ and .spec.webhookdefinitions == null) | .package] | unique[]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
catalog_registry_url
-
カタログレジストリーの URL (
registry.redhat.io/redhat/redhat-operator-index
など) を指定します。 tag
カタログのタグまたはバージョン (
v4.18
やlatest
など) を指定します。例5.1 コマンドの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例5.2 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、拡張機能のメタデータの内容を検査します。
opm render <catalog_registry_url>:<tag> \ | jq -s '.[] | select( .schema == "olm.package") \ | jq -s '.[] | select( .schema == "olm.package") \ | select( .name == "<package_name>")' | select( .name == "<package_name>")'
$ opm render <catalog_registry_url>:<tag> \ | jq -s '.[] | select( .schema == "olm.package") \ | select( .name == "<package_name>")'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例5.3 コマンドの例
opm render \ registry.redhat.io/redhat/redhat-operator-index:v4.18 \ | jq -s '.[] | select( .schema == "olm.package") \ | select( .name == "openshift-pipelines-operator-rh")'
$ opm render \ registry.redhat.io/redhat/redhat-operator-index:v4.18 \ | jq -s '.[] | select( .schema == "olm.package") \ | select( .name == "openshift-pipelines-operator-rh")'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例5.4 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.2.1. 一般的なカタログクエリー リンクのコピーリンクがクリップボードにコピーされました!
opm
および jq
CLI ツールを使用してカタログをクエリーできます。次の表は、拡張機能のインストール、更新、およびライフサイクルの管理時に使用できる一般的なカタログクエリーを示しています。
コマンド構文
opm render <catalog_registry_url>:<tag> | <jq_request>
$ opm render <catalog_registry_url>:<tag> | <jq_request>
ここでは、以下のようになります。
catalog_registry_url
-
カタログレジストリーの URL (
registry.redhat.io/redhat/redhat-operator-index
など) を指定します。 tag
-
カタログのタグまたはバージョン (
v4.18
やlatest
など) を指定します。 jq_request
- カタログで実行するクエリーを指定します。
例5.5 コマンドの例
クエリー | Request |
---|---|
カタログで利用可能なパッケージ |
opm render <catalog_registry_url>:<tag> \ | jq -s '.[] | select( .schema == "olm.package")' | jq -s '.[] | select( .schema == "olm.package")'
|
|
|
パッケージのメタデータ |
opm render <catalog_registry_url>:<tag> \ | jq -s '.[] | select( .schema == "olm.package") \ | jq -s '.[] | select( .schema == "olm.package") \ | select( .name == "<package_name>")' | select( .name == "<package_name>")'
|
パッケージ内のカタログブロブ |
opm render <catalog_registry_url>:<tag> \ | jq -s '.[] | select( .package == "<package_name>")' | jq -s '.[] | select( .package == "<package_name>")'
|
クエリー | Request |
---|---|
パッケージのチャネル |
opm render <catalog_registry_url>:<tag> \ | jq -s '.[] | select( .schema == "olm.channel" ) \ | jq -s '.[] | select( .schema == "olm.channel" ) \ | select( .package == "<package_name>") | .name' | select( .package == "<package_name>") | .name'
|
チャネル内のバージョン |
opm render <catalog_registry_url>:<tag> \ | jq -s '.[] | select( .package == "<package_name>" ) \ | jq -s '.[] | select( .package == "<package_name>" ) \ | select( .schema == "olm.channel" ) \ | select( .schema == "olm.channel" ) \ | select( .name == "<channel_name>" ) .entries \ | select( .name == "<channel_name>" ) .entries \ | .[] | .name' | .[] | .name'
|
|
opm render <catalog_registry_url>:<tag> \ | jq -s '.[] | select( .schema == "olm.channel" ) \ | jq -s '.[] | select( .schema == "olm.channel" ) \ | select ( .name == "<channel_name>") \ | select ( .name == "<channel_name>") \ | select( .package == "<package_name>")' | select( .package == "<package_name>")'
|
クエリー | Request |
---|---|
パッケージ内のバンドル |
opm render <catalog_registry_url>:<tag> \ | jq -s '.[] | select( .schema == "olm.bundle" ) \ | jq -s '.[] | select( .schema == "olm.bundle" ) \ | select( .package == "<package_name>") | .name' | select( .package == "<package_name>") | .name'
|
|
opm render <catalog_registry_url>:<tag> \ | jq -s '.[] | select( .schema == "olm.bundle" ) \ | jq -s '.[] | select( .schema == "olm.bundle" ) \ | select ( .name == "<bundle_name>") \ | select ( .name == "<bundle_name>") \ | select( .package == "<package_name>")' | select( .package == "<package_name>")'
|
5.1.3. クラスター拡張機能の権限 リンクのコピーリンクがクリップボードにコピーされました!
Operator Lifecycle Manager (OLM) Classic では、クラスター管理者権限を持つ 1 つのサービスアカウントがすべてのクラスター拡張機能を管理します。
OLM v1 は、デフォルトで OLM (Classic) よりもセキュアになるように設計されています。OLM v1 は、拡張機能のカスタムリソース (CR) で指定されたサービスアカウントを使用してクラスター拡張機能を管理します。クラスター管理者は、クラスター拡張機能ごとにサービスアカウントを作成できます。そのため、管理者は最小権限の原則に従い、ロールベースのアクセス制御 (RBAC) だけを割り当ててその拡張機能をインストールおよび管理することができます。
各権限を、クラスターロールまたはロールのいずれかに追加する必要があります。その後、クラスターロールバインディングまたはロールバインディングを使用して、クラスターロールまたはロールをサービスアカウントにバインドする必要があります。
RBAC のスコープを、クラスターまたは namespace のいずれかに設定できます。権限のスコープをクラスターに設定するには、クラスターロールとクラスターロールバインディングを使用します。権限のスコープを namespace に設定するには、ロールとロールバインディングを使用します。権限のスコープをクラスターに設定するか、namespace に設定するかは、インストールして管理する拡張機能の設計によって異なります。
次のサンプルマニフェストでは、手順を簡素化し、読みやすさを向上させるために、スコープをクラスターに設定した権限を使用します。クラスターではなく拡張機能の namespace にスコープを設定すると、一部の権限をさらに制限できます。
インストールされた拡張機能の新しいバージョンに追加の権限が必要な場合、OLM v1 はクラスター管理者がその権限を付与するまで更新プロセスを停止します。
5.1.3.1. namespace の作成 リンクのコピーリンクがクリップボードにコピーされました!
クラスター拡張機能をインストールして管理するためのサービスアカウントを作成する前に、namespace を作成する必要があります。
前提条件
-
cluster-admin
権限を持つアカウントを使用して OpenShift Container Platform クラスターにアクセスできる。
手順
次のコマンドを実行して、インストールする拡張機能のサービスアカウント用の新しい namespace を作成します。
oc adm new-project <new_namespace>
$ oc adm new-project <new_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.3.2. 拡張機能のサービスアカウントの作成 リンクのコピーリンクがクリップボードにコピーされました!
クラスター拡張機能をインストール、管理、更新するには、サービスアカウントを作成する必要があります。
前提条件
-
cluster-admin
権限を持つアカウントを使用して OpenShift Container Platform クラスターにアクセスできる。
手順
次の例のように、サービスアカウントを作成します。
apiVersion: v1 kind: ServiceAccount metadata: name: <extension>-installer namespace: <namespace>
apiVersion: v1 kind: ServiceAccount metadata: name: <extension>-installer namespace: <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例5.6
extension-service-account.yaml
ファイルの例apiVersion: v1 kind: ServiceAccount metadata: name: pipelines-installer namespace: pipelines
apiVersion: v1 kind: ServiceAccount metadata: name: pipelines-installer namespace: pipelines
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してサービスアカウントを適用します。
oc apply -f extension-service-account.yaml
$ oc apply -f extension-service-account.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.3.3. 拡張機能のバンドルマニフェストのダウンロード リンクのコピーリンクがクリップボードにコピーされました!
opm
CLI ツールを使用して、インストールする拡張機能のバンドルマニフェストをダウンロードします。任意の CLI ツールまたはテキストエディターを使用してマニフェストを表示し、拡張機能をインストールおよび管理するために必要な権限を確認します。
前提条件
-
cluster-admin
権限を持つアカウントを使用して OpenShift Container Platform クラスターにアクセスできる。 - インストールする拡張機能を決定した。
-
opm
がインストールされている。
手順
次のコマンドを実行して、インストールする拡張機能の利用可能なバージョンとイメージを確認します。
opm render <registry_url>:<tag_or_version> | \ jq -cs '.[] | select( .schema == "olm.bundle" ) | \ select( .package == "<extension_name>") | \ {"name":.name, "image":.image}'
$ opm render <registry_url>:<tag_or_version> | \ jq -cs '.[] | select( .schema == "olm.bundle" ) | \ select( .package == "<extension_name>") | \ {"name":.name, "image":.image}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例5.7 コマンドの例
opm render registry.redhat.io/redhat/redhat-operator-index:v4.18 | \ jq -cs '.[] | select( .schema == "olm.bundle" ) | \ select( .package == "openshift-pipelines-operator-rh") | \ {"name":.name, "image":.image}'
$ opm render registry.redhat.io/redhat/redhat-operator-index:v4.18 | \ jq -cs '.[] | select( .schema == "olm.bundle" ) | \ select( .package == "openshift-pipelines-operator-rh") | \ {"name":.name, "image":.image}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例5.8 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、インストールするバンドルのイメージを抽出するディレクトリーを作成します。
mkdir <new_dir>
$ mkdir <new_dir>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してそのディレクトリーに移動します。
cd <new_dir>
$ cd <new_dir>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow インストールするバージョンのイメージ参照を見つけて、次のコマンドを実行します。
oc image extract <full_path_to_registry_image>@sha256:<sha>
$ oc image extract <full_path_to_registry_image>@sha256:<sha>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの例
oc image extract registry.redhat.io/openshift-pipelines/pipelines-operator-bundle@sha256:f7b19ce26be742c4aaa458d37bc5ad373b5b29b20aaa7d308349687d3cbd8838
$ oc image extract registry.redhat.io/openshift-pipelines/pipelines-operator-bundle@sha256:f7b19ce26be742c4aaa458d37bc5ad373b5b29b20aaa7d308349687d3cbd8838
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
manifests
ディレクトリーに移動します。cd manifests
$ cd manifests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、マニフェストディレクトリーの内容を表示します。出力には、拡張機能のインストール、管理、および操作に必要なリソースのマニフェストがリストされます。
tree
$ tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例5.9 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
-
任意の CLI ツールまたはテキストエディターを使用して、
manifests
ディレクトリーにあるクラスターサービスバージョン (CSV) ファイルのinstall.spec.clusterpermissions
スタンザの内容を表示します。次の例では、Red Hat OpenShift Pipelines Operator のopenshift-pipelines-operator-rh.clusterserviceversion.yaml
ファイルを参照します。 - 次の手順でクラスターロールファイルに権限を割り当てるときに、このファイルを参照できるように開いたままにしておきます。
5.1.3.4. クラスター拡張機能をインストールおよび管理するために必要な権限 リンクのコピーリンクがクリップボードにコピーされました!
必要な権限を割り当てるには、クラスター拡張機能のバンドルイメージに含まれるマニフェストを確認する必要があります。次のリソースを作成および管理するのに十分なロールベースのアクセス制御 (RBAC) がサービスアカウントに必要です。
実行に必要な最小限の RBAC を使用して、特定のリソース名に対する最小権限とスコープ権限の原則を遵守してください。
- アドミッションプラグイン
-
OpenShift Container Platform クラスターは
OwnerReferencesPermissionEnforcement
アドミッションプラグインを使用します。そのため、クラスター拡張機能にはblockOwnerDeletion
およびownerReferences
ファイナライザーを更新する権限が必要です。 - 拡張機能のコントローラー用のクラスターロールとクラスターロールバインディング
- 拡張機能のコントローラー用のクラスターロールとクラスターロールバインディングを、インストールサービスアカウントが作成および管理できるように、RBAC を定義する必要があります。
- クラスターサービスバージョン (CSV)
- クラスター拡張機能の CSV で定義されたリソース用の RBAC を定義する必要があります。
- クラスタースコープのバンドルリソース
-
バンドルに含まれるクラスタースコープのリソースを作成および管理するための RBAC を定義する必要があります。クラスタースコープのリソースが
ClusterRole
などの別のリソースタイプと一致する場合は、resources
またはresourceNames
フィールドの下にある既存のルールにリソースを追加できます。 - カスタムリソース定義 (CRD)
- インストールサービスアカウントが拡張機能の CRD を作成および管理できるように、RBAC を定義する必要があります。また、拡張機能のコントローラーのサービスアカウントに、拡張機能の CRD を管理するための RBAC を付与する必要があります。
- デプロイメント
- service や config map など、拡張機能のコントローラーに必要なデプロイメントを作成および管理するために、インストールサービスアカウント用の RBAC を定義する必要があります。
- 拡張機能の権限
- CSV で定義されている権限とクラスター権限用の RBAC を含める必要があります。インストールサービスアカウントが、これらの権限を拡張機能コントローラーに付与できる必要があります。これらの権限は、拡張機能コントローラーの実行に必要です。
- namespace スコープのバンドルリソース
- namespace スコープのバンドルリソース用の RBAC を定義する必要があります。インストールサービスアカウントに、config map や service などのリソースを作成および管理するための権限が必要です。
- ロールおよびロールバインディング
- CSV で定義されているすべてのロールまたはロールバインディング用の RBAC を定義する必要があります。インストールサービスアカウントに、これらのロールとロールバインディングを作成および管理するための権限が必要です。
- サービスアカウント
- インストールサービスアカウントが拡張機能のコントローラーのサービスアカウントを作成および管理できるように、RBAC を定義する必要があります。
5.1.3.5. 拡張機能用のクラスターロールの作成 リンクのコピーリンクがクリップボードにコピーされました!
インストールする拡張機能に必要なロールベースのアクセス制御 (RBAC) を定義するには、クラスターサービスバージョン (CSV) の install.spec.clusterpermissions
スタンザと拡張機能のマニフェストをよく確認する必要があります。必要な RBAC を CSV から新しいマニフェストにコピーして、クラスターロールを作成する必要があります。
OLM v1 で拡張機能をインストールおよび更新するプロセスをテストする場合は、次のクラスターロールを使用すると、クラスター管理者の権限を付与できます。このマニフェストはテストのみを目的としたものです。実稼働クラスターでは使用しないでください。
次の手順では、Red Hat OpenShift Pipelines Operator の openshift-pipelines-operator-rh.clusterserviceversion.yaml
ファイルを例として使用します。この例には、OpenShift Pipelines Operator をインストールおよび管理するために必要な RBAC の抜粋が含まれています。完全なマニフェストについては、「Red Hat OpenShift Pipelines Operator のクラスターロールの例」を参照してください。
次のサンプルマニフェストでは、手順を簡素化し、読みやすさを向上させるために、スコープをクラスターに設定した権限を使用します。クラスターではなく拡張機能の namespace にスコープを設定すると、一部の権限をさらに制限できます。
前提条件
-
cluster-admin
権限を持つアカウントを使用して OpenShift Container Platform クラスターにアクセスできる。 - インストールする拡張機能のイメージ参照のマニフェストをダウンロードした。
手順
次の例のように、新しいクラスターロールマニフェストを作成します。
<extension>-cluster-role.yaml
ファイルの例apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: <extension>-installer-clusterrole
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: <extension>-installer-clusterrole
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のように、クラスターロールマニフェストを編集し、拡張機能のファイナライザーを更新する権限を含めます。
<extension>-cluster-role.yaml の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 拡張機能のカスタムリソース (CR) の
metadata.name
フィールド値を指定します。
拡張機能の CSV ファイルの
rules.resources
フィールドでclusterrole
およびclusterrolebindings
の値を検索します。次の例のように、API グループ、リソース、動詞、およびリソース名をマニフェストにコピーします。
クラスターロールマニフェストの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
拡張機能の CSV ファイルの
rules.resources
フィールドでcustomresourcedefinitions
値を検索します。次の例のように、API グループ、リソース、動詞、およびリソース名をマニフェストにコピーします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
CSV ファイルで、
rules.resources
仕様のpermissions
およびclusterPermissions
値が含まれるスタンザを検索します。次の例のように、API グループ、リソース、動詞、およびリソース名をマニフェストにコピーします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
CSV ファイルで、
install.spec.deployments
スタンザの下のリソースを検索します。次の例のように、API グループ、リソース、動詞、およびリソース名をマニフェストにコピーします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
拡張機能の CSV ファイルの
rules.resources
フィールドで、services
およびconfigmaps
値を検索します。次の例のように、API グループ、リソース、動詞、およびリソース名をマニフェストにコピーします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、クラスターロールマニフェストをクラスターに追加します。
oc apply -f <extension>-installer-clusterrole.yaml
$ oc apply -f <extension>-installer-clusterrole.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの例
oc apply -f pipelines-installer-clusterrole.yaml
$ oc apply -f pipelines-installer-clusterrole.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.3.6. Red Hat OpenShift Pipelines Operator のクラスターロールの例 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Pipelines Operator の完全なクラスターロールマニフェストについては、次の例を参照してください。
5.1.3.7. 拡張機能用のクラスターロールバインディングの作成 リンクのコピーリンクがクリップボードにコピーされました!
サービスアカウントとクラスターロールを作成したら、クラスターロールバインディングマニフェストを使用して、クラスターロールをサービスアカウントにバインドする必要があります。
前提条件
-
cluster-admin
権限を持つアカウントを使用して OpenShift Container Platform クラスターにアクセスできる。 インストールする拡張機能用に、次のリソースを作成して適用した。
- namespace
- サービスアカウント
- クラスターロール
手順
次の例のように、クラスターロールをサービスアカウントにバインドするためのクラスターロールバインディングを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例5.10
pipelines-cluster-role-binding.yaml
ファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、クラスターロールバインディングを適用します。
oc apply -f pipelines-cluster-role-binding.yaml
$ oc apply -f pipelines-cluster-role-binding.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.4. カタログからのクラスター拡張機能のインストール リンクのコピーリンクがクリップボードにコピーされました!
カスタムリソース (CR) を作成し、それをクラスターに適用することで、カタログから拡張機能をインストールできます。Operator Lifecycle Manager (OLM) v1 は、registry+v1
バンドル形式の OLM (Classic) Operator を含む、クラスタースコープのクラスター拡張機能のインストールをサポートしています。詳細は、サポートされている拡張機能 を参照してください。
OpenShift Container Platform 4.18 の場合、OLM v1 の文書化された手順は CLI ベースです。別の方法として、管理者は、Import YAML ページや Search ページなどの通常の方法を使用して、Web コンソールで関連オブジェクトを作成および表示することもできます。ただし、既存の OperatorHub および Installed Operators ページには OLM v1 コンポーネントがまだ表示されません。
前提条件
- サービスアカウントを作成し、インストールする拡張機能をインストール、更新、管理するのに十分なロールベースのアクセス制御 (RBAC) を割り当てた。詳細は、「クラスター拡張機能の権限」を参照してください。
手順
次の例のような CR を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
pipelines
やmy-extension
など、バンドルをインストールする namespace を指定します。拡張機能は継続してクラスタースコープであり、異なる namespace にインストールされているリソースが含まれる可能性があります。- 2
- 拡張機能をインストール、更新、管理するために作成したサービスアカウントの名前を指定します。
- 3
- オプション: チャネル名を、
pipelines-1.14
やlatest
などの配列の形で指定します。 - 4
- オプション: インストールまたは更新するパッケージのバージョンまたはバージョン範囲 (
1.14.0
、1.14.x
、>=1.16
など) を指定します。詳細は、「ターゲットバージョンを指定するカスタムリソース (CR) の例」および「バージョン範囲のサポート」を参照してください。 - 5
- オプション: アップグレード制約ポリシーを指定します。指定されていない場合、デフォルト設定は
CatalogProvided
になります。CatalogProvided
設定が更新されるのは、新しいバージョンがパッケージ作成者によって設定されたアップグレード制約を満たしている場合だけです。更新またはロールバックを強制するには、フィールドをSelfCertified
に設定します。詳細は、「更新またはロールバックの強制」を参照してください。
pipelines-operator.yaml
CR の例
次のコマンドを実行して、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 例5.11 出力例
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
- インストールされているバンドルのバージョンを表示します。
5.1.5. クラスター拡張機能の更新 リンクのコピーリンクがクリップボードにコピーされました!
カスタムリソース (CR) を手動で編集し、変更を適用することで、クラスター拡張機能または Operator を更新できます。
前提条件
- Operator または拡張機能がインストールされている。
-
jq
CLI ツールがインストールされている。 -
opm
がインストールされている。
手順
次の手順を実行して、カタログファイルのローカルコピーからパッケージのチャネルとバージョン情報を検査します。
次のコマンドを実行して、選択したパッケージからチャネルのリストを取得します。
opm render <catalog_registry_url>:<tag> \ | jq -s '.[] | select( .schema == "olm.channel" ) \ | jq -s '.[] | select( .schema == "olm.channel" ) \ | select( .package == "openshift-pipelines-operator-rh") | .name' | select( .package == "openshift-pipelines-operator-rh") | .name'
$ opm render <catalog_registry_url>:<tag> \ | jq -s '.[] | select( .schema == "olm.channel" ) \ | select( .package == "openshift-pipelines-operator-rh") | .name'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例5.12 コマンドの例
opm render registry.redhat.io/redhat/redhat-operator-index:v4.18 \ | jq -s '.[] | select( .schema == "olm.channel" ) \ | select( .package == "openshift-pipelines-operator-rh") | .name'
$ opm render registry.redhat.io/redhat/redhat-operator-index:v4.18 \ | jq -s '.[] | select( .schema == "olm.channel" ) \ | select( .package == "openshift-pipelines-operator-rh") | .name'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例5.13 出力例
"latest" "pipelines-1.14" "pipelines-1.15" "pipelines-1.16" "pipelines-1.17"
"latest" "pipelines-1.14" "pipelines-1.15" "pipelines-1.16" "pipelines-1.17"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、チャネルで公開されているバージョンのリストを取得します。
opm render <catalog_registry_url>:<tag> \ | jq -s '.[] | select( .package == "<package_name>" ) \ | jq -s '.[] | select( .package == "<package_name>" ) \ | select( .schema == "olm.channel" ) \ | select( .schema == "olm.channel" ) \ | select( .name == "<channel_name>" ) | .entries \ | select( .name == "<channel_name>" ) | .entries \ | .[] | .name' | .[] | .name'
$ opm render <catalog_registry_url>:<tag> \ | jq -s '.[] | select( .package == "<package_name>" ) \ | select( .schema == "olm.channel" ) \ | select( .name == "<channel_name>" ) | .entries \ | .[] | .name'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例5.14 コマンドの例
opm render registry.redhat.io/redhat/redhat-operator-index:v4.18 \ | jq -s '.[] | select( .package == "openshift-pipelines-operator-rh" ) \ | select( .schema == "olm.channel" ) | select( .name == "latest" ) \ | .entries | .[] | .name'
$ opm render registry.redhat.io/redhat/redhat-operator-index:v4.18 \ | jq -s '.[] | select( .package == "openshift-pipelines-operator-rh" ) \ | select( .schema == "olm.channel" ) | select( .name == "latest" ) \ | .entries | .[] | .name'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例5.15 出力例
"openshift-pipelines-operator-rh.v1.15.0" "openshift-pipelines-operator-rh.v1.16.0" "openshift-pipelines-operator-rh.v1.17.0" "openshift-pipelines-operator-rh.v1.17.1"
"openshift-pipelines-operator-rh.v1.15.0" "openshift-pipelines-operator-rh.v1.16.0" "openshift-pipelines-operator-rh.v1.17.0" "openshift-pipelines-operator-rh.v1.17.1"
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 例5.16 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のいずれかの方法を使用して CR を編集します。
Operator または拡張機能を特定のバージョン (
1.15.0
など) に固定する場合は、次の例のように CR を編集します。pipelines-operator.yaml
CR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- バージョンを
1.14.x
から1.15.0
に更新します。
許容可能な更新バージョンの範囲を定義する場合は、次の例のように CR を編集します。
バージョン範囲を指定した CR の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 必要なバージョン範囲が、バージョン
1.15
より大きく、1.17
より小さいことを指定します。詳細は、「バージョン範囲のサポート」および「バージョン比較文字列」を参照してください。
チャネルから解決できる最新バージョンに更新する場合は、次の例のように 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
検証
次のコマンドを実行して、チャネルとバージョンの更新が適用されていることを確認します。
oc get clusterextension pipelines-operator -o yaml
$ oc get clusterextension pipelines-operator -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例5.17 出力例
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 例5.18 存在しないバージョンの出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.6. 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