7.2. コンポーネントとアーキテクチャー
7.2.1. OLM 1.0 コンポーネントの概要 (テクノロジープレビュー)
OLM 1.0 は、テクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
Operator Lifecycle Manager (OLM) 1.0 は、次のコンポーネントプロジェクトで構成されています。
- Operator Controller
- Operator Controller は OLM 1.0 の中心的なコンポーネントで、API を使用して Kubernetes を拡張します。ユーザーはこれを使用して、Operator や拡張機能をインストールし、そのライフサイクルを管理できます。カタログから情報を使用します。
- RukPak
- RukPak は、クラウドネイティブコンテンツをパッケージ化して配布するためのプラグイン可能なソリューションです。インストール、更新、ポリシーに関する高度なストラテジーをサポートします。
- Catalogd
- Catalogd は、クラスター上のクライアントが使用する、コンテナーイメージにパッケージ化されて出荷されるファイルベースのカタログ (FBC) コンテンツを展開する Kubernetes 拡張機能です。OLM 1.0 マイクロサービスアーキテクチャーのコンポーネントである catalogd は、Kubernetes 拡張機能の作成者がパッケージ化した拡張機能のメタデータをホストします。これは、ユーザーがインストール可能なコンテンツを発見するのに役立ちます。
7.2.2. Operator Controller (テクノロジープレビュー)
Operator Controller は、Operator Lifecycle Manager (OLM) 1.0 の中心的なコンポーネントであり、他の OLM 1.0 コンポーネント (catalogd) を使用します。Operator Controller は API で Kubernetes を拡張し、これを通してユーザーは Operator や機能拡張をインストールできます。
OLM 1.0 は、テクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
7.2.2.1. ClusterExtension API
Operator Controller は、インストールされた拡張機能のインスタンスを表す単一のリソースである新しい ClusterExtension
API オブジェクトを提供します。これには、registry+v1
バンドル形式を介した Operator などが含まれます。この clusterextension.olm.operatorframework.io
API は、ユーザー向け API を 1 つのオブジェクトに統合することで、インストールされた拡張機能の管理を効率化します。
OLM 1.0 では、ClusterExtension
オブジェクトはクラスタースコープです。これは、関連する Subscription
および OperatorGroup
オブジェクトの設定に応じて、Operator が namespace スコープまたはクラスタースコープのいずれかになる可能性がある従来の OLM とは異なります。
以前の動作の詳細は、マルチテナンシーと Operator のコロケーション を参照してください。
ClusterExtension
オブジェクトの例
apiVersion: olm.operatorframework.io/v1alpha1 kind: ClusterExtension metadata: name: <operator_name> spec: packageName: <package_name> installNamespace: <namespace_name> channel: <channel_name> version: <version_number>
7.2.2.1.1. ターゲットバージョンを指定するカスタムリソース (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.2.3. Rukpak (テクノロジープレビュー)
Operator Lifecycle Manager (OLM) 1.0 は、RukPak コンポーネントとそのリソースを使用してクラウドネイティブコンテンツを管理します。
OLM 1.0 は、テクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
7.2.3.1. RukPak について
RukPak は、クラウドネイティブコンテンツをパッケージ化して配布するためのプラグイン可能なソリューションです。インストール、更新、ポリシーに関する高度なストラテジーをサポートします。
RukPak は、Kubernetes クラスターにアーティファクトをインストールするためのコンテンツエコシステムを提供します。OpenShift Container Platform 4.16 では、RukPak は従来の Operator Lifecycle Manager (OLM) バンドルをアーティファクトとしてサポートします。その後、RukPak はこれらのアーティファクトを安全な方法で管理、スケーリング、アップグレードして、強力なクラスター拡張を実現できます。
テクノロジープレビューコンポーネントである RukPak は FIPS をサポートしていません。OpenShift Container Platform 4.16 では、Operator Lifecycle Manager (OLM) 1.0 は RukPak に依存します。その結果、RukPak と OLM 1.0 は、FIPS モードが有効になっているクラスターでは実行されません。
RukPak は、コントローラーのセットと BundleDeployment
API を中核としています。この API は、クラスターにインストールするコンテンツと、そのコンテンツの実行中のデプロイメントを作成する方法を表すカスタムリソース定義 (CRD) としてパッケージ化されています。コントローラーは API を監視します。
一般的な用語
- バンドル
- クラスターにデプロイされるコンテンツを定義する Kubernetes マニフェストのコレクション
- バンドルイメージ
- ファイルシステム内にバンドルがあるコンテナーイメージ
- バンドル Git リポジトリー
- ディレクトリー内にバンドルがある Git リポジトリー
- プロビジョナー
- Kubernetes クラスターにコンテンツをインストールして管理するコントローラー
- バンドルデプロイメント
- バンドルのデプロイされたインスタンスを生成します
7.2.3.2. プロビジョナーについて
RukPak は、プロビジョナー と呼ばれる一連のコントローラーで構成され、Kubernetes クラスターにコンテンツをインストールして管理します。プロビジョナーは BundleDeployment
オブジェクトと連携してコンテンツをクラスターに取り込んでインストールし、クラスター内にリソースを生成します。
現在、レジストリープロビジョナー が実装されており、RukPak に含まれています。レジストリーバンドル (registry+v1
バンドル) には、従来の Operator Lifecycle Manager (OLM) バンドル形式で編成された静的 Kubernetes YAML マニフェストのセットが含まれています。レジストリープロビジョナーは、レジストリーバンドルを取得して展開します。
プロビジョナーには一意の ID が割り当てられます。プロビジョナーは、その ID と同じ spec.provisionerClassName
フィールドを使用してバンドルと BundleDeployment
オブジェクトを調整します。たとえば、レジストリープロビジョナーは、指定された registry+v1
バンドルをクラスターに展開し、それをインスタンス化して、バンドルのコンテンツをクラスターで利用できるようにできます。
プロビジョナーは、プロビジョナーを明示的に参照する BundleDeployment
リソースを監視します。特定のバンドルについて、プロビジョナーはバンドルのコンテンツをクラスターに展開します。次に、そのバンドルを参照する BundleDeployment
リソースを指定すると、プロビジョナーはバンドルのコンテンツをインストールし、それらのリソースのライフサイクルを管理します。
関連情報
7.2.3.3. BundleDeployment
OpenShift Container Platform 4.16 では、RukPak の BundleDeployment
は、バンドルをアクティブにするタイミングを指定します。これには、アクティブなバンドルの古いバージョンからのピボットが含まれます。
BundleDeployment
オブジェクトは、オブジェクトのインストールと削除によって Kubernetes クラスターの状態を変更します。インストールされるコンテンツを検証して信頼し、RBAC を使用して BundleDeployment
API へのアクセスを、それらのアクセス許可を必要とするユーザーのみに制限することが重要です。
Pod がコンテナーイメージのインスタンスを生成するのと同じように、バンドルのデプロイではデプロイされたバージョンのバンドルが生成されます。バンドルのデプロイは、Pod の概念の一般化と見なすことができます。
バンドルのデプロイが参照されたバンドルに基づいてクラスターに変更を加える方法の詳細は、そのバンドルのデプロイを監視するように設定されているプロビジョナーによって定義されます。
7.2.4. Catalogd (テクノロジープレビュー)
Operator Lifecycle Manager (OLM) 1.0 は、catalogd コンポーネントとそのリソースを使用して、Operator カタログと機能拡張カタログを管理します。
OLM 1.0 は、テクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
7.2.4.1. 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.2.4.1.1. 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 を指定します。