8.2. MicroShift での Operator Lifecycle Manager の使用
Operator Lifecycle Manager (OLM) パッケージマネージャーは、MicroShift でオプションの アドオン Operator をインストールおよび実行するために使用されます。
8.2.1. MicroShift で OLM を使用する際の考慮事項
- OpenShift Container Platform で適用されるクラスター Operator は、MicroShift では使用されません。
アプリケーションで使用するアドオン Operator 用に、独自のカタログを作成する必要があります。カタログはデフォルトでは提供されません。
-
OLM カタログ Operator がカタログをコンテンツに使用できるように、各カタログにはアクセス可能な
CatalogSource
がクラスターに追加されている必要があります。
-
OLM カタログ Operator がカタログをコンテンツに使用できるように、各カタログにはアクセス可能な
MicroShift で OLM アクティビティーを実行するには、CLI を使用する必要があります。コンソールと OperatorHub GUI は使用できません。
-
Operator Package Manager
opm
CLI は、ネットワーク接続されたクラスターで使用するか、内部レジストリーを使用するカスタム Operator のカタログをビルドするために使用します。 - 非接続クラスターまたはオフラインのクラスターのカタログと Operator をミラーリングするには、oc-mirror OpenShift CLI プラグイン をインストールします。
-
Operator Package Manager
Operator を使用する前に、Operator が Red Hat build of MicroShift でサポートされていることをプロバイダーに確認してください。
8.2.2. OLM インストールタイプの決定
OLM パッケージマネージャーをインストールして、MicroShift 4.15 以降のバージョンで使用できます。MicroShift クラスター用の OLM をインストールするには、ユースケースに応じてさまざまな方法があります。
-
Red Hat Enterprise Linux (RHEL) に MicroShift RPM をインストールするときに、
microshift-olm
RPM を同時にインストールできます。 -
microshift-olm
は既存の MicroShift 4.15 にインストールできます。変更を適用するには、OLM をインストールした後、MicroShift サービスを再起動します。RPM パッケージからの Operator Lifecycle Manager (OLM) のインストール を参照してください。 - OLM を Red Hat Enterprise Linux for Edge (RHEL for Edge) イメージに埋め込むことができます。ブループリントへの Operator Lifecycle Manager (OLM) サービスの追加 を参照してください。
8.2.3. MicroShift での namespace の使用
microshift-olm
RPM は 3 つのデフォルトの namespace を作成します。1 つは OLM の実行用で、2 つはカタログと Operator のインストール用です。ユースケースでの必要性に応じて、追加の namespace を作成できます。
8.2.3.1. デフォルトの namespace
次の表に、デフォルトの namespace と、各 namespace の動作の簡単な説明が示されています。
デフォルトの namespace | 詳細 |
| OLM パッケージマネージャーは、この namespace で実行されます。 |
|
グローバル namespace。デフォルトでは空です。カタログソースをすべての namespace のユーザーがグローバルに利用できるようにするには、カタログソース YAML で |
|
MicroShift で Operator が実行されるデフォルトの namespace。 |
8.2.3.2. カスタム namespace
単一の namespace でカタログと Operator を一緒に使用する場合は、カスタム namespace を作成する必要があります。namespac を作成した後、その namespac にカタログを作成する必要があります。カスタム namespace で実行されているすべての Operator は、同じ単一 namespace の監視スコープを持つ必要があります。
8.2.4. Operator カタログのビルドについて
MicroShift で Operator Lifecycle Manager (OLM) を使用するには、OLM で管理できるカスタム Operator カタログをビルドする必要があります。OpenShift Container Platform に含まれる標準カタログは、MicroShift には含まれません。
8.2.4.1. ファイルベースの Operator カタログ
カスタム Operator のカタログを作成したり、広く利用可能な Operator のカタログをフィルターしたりできます。両方の方法を組み合わせて、特定のユースケースに必要なカタログを作成できます。独自の Operator および OLM で MicroShift を実行するには、ファイルベースのカタログ構造を使用してカタログを作成します。
- 詳細は、カスタムカタログの管理 および サンプルカタログ を参照してください。
-
opm
CLI 参照 も参照してください。
-
カタログソースをクラスターに追加する ときは、
catalogSource.yaml
ファイルでsecurityContextConfig
値をrestricted
に設定します。カタログがrestricted
権限で実行できることを確認してください。
関連情報
-
opm
CLI 参照 - Operator カタログについて
-
opm
CLI を使用してファイルベースのカタログを作成するには、カスタムカタログの管理 を参照してください。
8.2.5. OLM を使用した Operator のデプロイ方法
カスタムカタログを作成してデプロイした後、カタログにアクセスし、選択した Operator をインストールできるサブスクリプションカスタムリソース (CR) を作成する必要があります。Operator が実行される場所は、Subscription CR を作成する namespace によって異なります。
OLM の Operator には監視スコープがあります。たとえば、一部の Operator は独自の namespace の監視のみをサポートしますが、他の Operator はクラスター内のすべての namespace の監視をサポートします。特定の namespace にインストールされているすべての Operator は、同じ監視スコープを持つ必要があります。
8.2.5.1. 接続性と OLM Operator のデプロイメント
Operator は、カタログが実行されている場所であればどこにでもデプロイできます。
- インターネットに接続されているクラスターの場合、イメージのミラーリングは必要ありません。イメージはネットワーク経由で取得できます。
- MicroShift が内部ネットワークのみにアクセスできる制限されたネットワークの場合、イメージを内部レジストリーにミラーリングする必要があります。
-
MicroShift クラスターが完全にオフラインであるユースケースでは、すべてのイメージを
osbuild
ブループリントに埋め込む必要があります。
関連情報
8.2.5.2. グローバル namespace を使用したネットワーククラスターへの OLM ベースの Operator の追加
異なる Operator を異なる namespace にデプロイするには、次の手順を使用します。ネットワーク接続のある MicroShift クラスターの場合、Operator Lifecycle Manager (OLM) は、リモートレジストリーでホストされているソースにアクセスできます。次の手順では、設定ファイルを使用して、グローバル namespace を使用する Operator をインストールする基本的な手順を示します。
別の namespace または複数の namespace にインストールされた Operator を使用するには、カタログソースと Operator を参照する Subscription CR が openshift-marketplace
namespace で実行されていることを確認してください。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 - Operator Lifecycle Manager (OLM) がインストールされている。
- グローバル namespace にカスタムカタログを作成している。
手順
次のコマンドを使用して、OLM が実行されていることを確認します。
$ oc -n openshift-operator-lifecycle-manager get pod -l app=olm-operator
出力例
NAME READY STATUS RESTARTS AGE olm-operator-85b5c6786-n6kbc 1/1 Running 0 2m24s
次のコマンドを使用して、OLM カタログ Operator が実行されていることを確認します。
$ oc -n openshift-operator-lifecycle-manager get pod -l app=catalog-operator
出力例
NAME READY STATUS RESTARTS AGE catalog-operator-5fc7f857b6-tj8cf 1/1 Running 0 2m33s
次の手順では、グローバル namespace openshift-marketplace
を使用していることを前提としています。カタログは Operator と同じ namespace で実行する必要があります。Operator は AllNamespaces モードをサポートする必要があります。
次のサンプル YAML を使用して、
CatalogSource
オブジェクトを作成します。カタログソース YAML の例
apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: operatorhubio-catalog namespace: openshift-marketplace 1 spec: sourceType: grpc image: quay.io/operatorhubio/catalog:latest displayName: Community Operators 2 publisher: OperatorHub.io grpcPodConfig: securityContextConfig: restricted 3 updateStrategy: registryPoll: interval: 60m
- 1
- グローバル namespace。
metadata.namespace
をopenshift-marketplace
に設定すると、カタログがすべての namespace で実行できるようになります。どの namespace のサブスクリプションでも、openshift-marketplace
namespace で作成されたカタログを参照できます。 - 2
- コミュニティー Operator は、デフォルトでは MicroShift の OLM とともにインストールされません。ここには一例として記載されています。
- 3
securityContextConfig
の値は、MicroShift に対してrestricted
に設定する必要があります。
次のコマンドを実行して、
CatalogSource
設定を適用します。$ oc apply -f <my-catalog-source.yaml> 1
- 1
<my-catalog-source.yaml>
をカタログソース設定ファイル名に置き換えます。この例では、catalogsource.yaml
が使用されます。
出力例
catalogsource.operators.coreos.com/operatorhubio-catalog created
カタログソースが適用されていることを確認するには、次のコマンドを使用して
READY
状態を確認します。$ oc describe catalogsources.operators.coreos.com -n openshift-marketplace operatorhubio-catalog
出力例
Name: operatorhubio-catalog Namespace: openshift-marketplace Labels: <none> Annotations: <none> API Version: operators.coreos.com/v1alpha1 Kind: CatalogSource Metadata: Creation Timestamp: 2024-01-31T09:55:31Z Generation: 1 Resource Version: 1212 UID: 4edc1a96-83cd-4de9-ac8c-c269ca895f3e Spec: Display Name: Community Operators Grpc Pod Config: Security Context Config: restricted Image: quay.io/operatorhubio/catalog:latest Publisher: OperatorHub.io Source Type: grpc Update Strategy: Registry Poll: Interval: 60m Status: Connection State: Address: operatorhubio-catalog.openshift-marketplace.svc:50051 Last Connect: 2024-01-31T09:55:57Z Last Observed State: READY 1 Registry Service: Created At: 2024-01-31T09:55:31Z Port: 50051 Protocol: grpc Service Name: operatorhubio-catalog Service Namespace: openshift-marketplace Events: <none>
- 1
- ステータスは
READY
と報告されます。
次のコマンドを使用して、カタログソースが実行されていることを確認します。
$ oc get pods -n openshift-marketplace -l olm.catalogSource=operatorhubio-catalog
出力例
NAME READY STATUS RESTARTS AGE operatorhubio-catalog-x24nh 1/1 Running 0 59s
次の YAML 例を使用して、Subscription CR 設定ファイルを作成します。
サブスクリプションカスタムリソース YAML の例
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: my-cert-manager namespace: openshift-operators spec: channel: stable name: cert-manager source: operatorhubio-catalog sourceNamespace: openshift-marketplace 1
- 1
- グローバル namespace。
sourceNamespace
値をopenshift-marketplace
に設定すると、カタログもopenshift-marketplace
namespace で実行される場合に、Operator を複数の namespace で実行できるようになります。
次のコマンドを実行して、Subscription CR 設定を適用します。
$ oc apply -f <my-subscription-cr.yaml> 1
- 1
<my-subscription-cr.yaml>
を Subscription CR ファイル名に置き換えます。この例では、sub.yaml
が使用されます。
出力例
subscription.operators.coreos.com/my-cert-manager created
- 使用する特定のオペランドの設定ファイルを作成し、今すぐ適用できます。
検証
次のコマンドを使用して、Operator が実行されていることを確認します。
$ oc get pods -n openshift-operators 1
- 1
- Subscription CR の namespace が使用されます。
注記Operator が開始するまで 1 - 2 分ほどお待ちください。
出力例
NAME READY STATUS RESTARTS AGE cert-manager-7df8994ddb-4vrkr 1/1 Running 0 19s cert-manager-cainjector-5746db8fd7-69442 1/1 Running 0 18s cert-manager-webhook-f858bf58b-748nt 1/1 Running 0 18s
8.2.5.3. 特定の namespace のネットワーククラスターに OLM ベースの Operator を追加する
Operator の namespace (例: olm-microshift
) を指定する場合は、この手順を使用します。この例では、カタログのスコープが設定されており、グローバルな openshift-marketplace
namespace で使用できます。Operator はグローバル namespace のコンテンツを使用しますが、olm-microshift
namespace でのみ実行されます。ネットワーク接続のある MicroShift クラスターの場合、Operator Lifecycle Manager (OLM) は、リモートレジストリーでホストされているソースにアクセスできます。
特定の namespace にインストールされているすべての Operator は、同じ監視スコープを持つ必要があります。この場合、監視スコープは OwnNamespace です。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 - Operator Lifecycle Manager (OLM) がインストールされている。
- グローバル namespace で実行中のカスタムカタログが作成されている。
手順
次のコマンドを使用して、OLM が実行されていることを確認します。
$ oc -n openshift-operator-lifecycle-manager get pod -l app=olm-operator
出力例
NAME READY STATUS RESTARTS AGE olm-operator-85b5c6786-n6kbc 1/1 Running 0 16m
次のコマンドを使用して、OLM カタログ Operator が実行されていることを確認します。
$ oc -n openshift-operator-lifecycle-manager get pod -l app=catalog-operator
出力例
NAME READY STATUS RESTARTS AGE catalog-operator-5fc7f857b6-tj8cf 1/1 Running 0 16m
次の YAML 例を使用して、namespace を作成します。
namespace YAML の例
apiVersion: v1 kind: Namespace metadata: name: olm-microshift
次のコマンドを使用して、namespace 設定を適用します。
$ oc apply -f _<ns.yaml>_ 1
- 1
- <ns.yaml> を namespace 設定ファイルの名前に置き換えます。この例では、
olm-microshift
が使用されます。
出力例
namespace/olm-microshift created
次の YAML 例を使用して、Operator グループ YAML を作成します。
Operator グループ YAML の例
kind: OperatorGroup apiVersion: operators.coreos.com/v1 metadata: name: og namespace: olm-microshift spec: 1 targetNamespaces: - olm-microshift
- 1
- グローバル namespace を使用する Operator の場合は、
spec.targetNamespaces
フィールドと値を省略します。
次のコマンドを実行して、Operator グループ設定を適用します。
$ oc apply -f _<og.yaml>_ 1
- 1
- <og.yaml> を Operator グループ設定ファイルの名前に置き換えます。
出力例
operatorgroup.operators.coreos.com/og created
次のサンプル YAML を使用して、
CatalogSource
オブジェクトを作成します。カタログソース YAML の例
apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: operatorhubio-catalog namespace: openshift-marketplace 1 spec: sourceType: grpc image: quay.io/operatorhubio/catalog:latest displayName: Community Operators 2 publisher: OperatorHub.io grpcPodConfig: securityContextConfig: restricted 3 updateStrategy: registryPoll: interval: 60m
- 1
- グローバル namespace。
metadata.namespace
をopenshift-marketplace
に設定すると、カタログがすべての namespace で実行できるようになります。任意の namespace の Subscription CR は、openshift-marketplace
namespace で作成されたカタログを参照できます。 - 2
- コミュニティー Operator は、デフォルトでは MicroShift の OLM とともにインストールされません。ここには一例として記載されています。
- 3
securityContextConfig
の値は、MicroShift に対してrestricted
に設定する必要があります。
次のコマンドを実行して、
CatalogSource
設定を適用します。$ oc apply -f _<my-catalog-source.yaml>_ 1
- 1
- <my-catalog-source.yaml> をカタログソース設定ファイル名に置き換えます。
カタログソースが適用されていることを確認するには、次のコマンドを使用して
READY
状態を確認します。$ oc describe catalogsources.operators.coreos.com -n openshift-marketplace operatorhubio-catalog
出力例
Name: operatorhubio-catalog Namespace: openshift-marketplace Labels: <none> Annotations: <none> API Version: operators.coreos.com/v1alpha1 Kind: CatalogSource Metadata: Creation Timestamp: 2024-01-31T10:09:46Z Generation: 1 Resource Version: 2811 UID: 60ce4a36-86d3-4921-b9fc-84d67c28df48 Spec: Display Name: Community Operators Grpc Pod Config: Security Context Config: restricted Image: quay.io/operatorhubio/catalog:latest Publisher: OperatorHub.io Source Type: grpc Update Strategy: Registry Poll: Interval: 60m Status: Connection State: Address: operatorhubio-catalog.openshift-marketplace.svc:50051 Last Connect: 2024-01-31T10:10:04Z Last Observed State: READY 1 Registry Service: Created At: 2024-01-31T10:09:46Z Port: 50051 Protocol: grpc Service Name: operatorhubio-catalog Service Namespace: openshift-marketplace Events: <none>
- 1
- ステータスは
READY
と報告されます。
次のコマンドを使用して、カタログソースが実行されていることを確認します。
$ oc get pods -n openshift-marketplace -l olm.catalogSource=operatorhubio-catalog
出力例
NAME READY STATUS RESTARTS AGE operatorhubio-catalog-j7sc8 1/1 Running 0 43s
次の YAML 例を使用して、Subscription CR 設定ファイルを作成します。
サブスクリプションカスタムリソース YAML の例
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: my-gitlab-operator-kubernetes namespace: olm-microshift 1 spec: channel: stable name: gitlab-operator-kubernetes source: operatorhubio-catalog sourceNamespace: openshift-marketplace 2
次のコマンドを実行して、Subscription CR 設定を適用します。
$ oc apply -f _<my-subscription-cr.yaml>_
出力例
subscription.operators.coreos.com/my-gitlab-operator-kubernetes
- 使用する特定のオペランドの設定ファイルを作成し、今すぐ適用できます。
検証
次のコマンドを使用して、Operator が実行されていることを確認します。
$ oc get pods -n olm-microshift 1
- 1
- Subscription CR の namespace が使用されます。
注記Operator が開始するまで 1 - 2 分ほどお待ちください。
出力例
NAME READY STATUS RESTARTS AGE gitlab-controller-manager-69bb6df7d6-g7ntx 2/2 Running 0 3m24s