7.4. OLM 1.0 でのプレーンバンドルの管理 (テクノロジープレビュー)


Operator Lifecycle Manager (OLM) 1.0 では、プレーンバンドル は YAML 形式の任意の Kubernetes マニフェストの静的コレクションです。olm.bundle スキーマオブジェクトの実験的な olm.bundle.mediatype プロパティーは、プレーンバンドル (plain+v0) と通常の (registry+v1) バンドルを区別します。

重要

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

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

クラスター管理者は、次の手順を実行することで、プレーンバンドルイメージを含むファイルベースのカタログを構築して公開できます。

  1. プレーンなバンドルイメージを構築します。
  2. ファイルベースのカタログを作成します。
  3. プレーンバンドルイメージをファイルベースのカタログに追加します。
  4. カタログをイメージとして作成します。
  5. カタログイメージを公開します。

7.4.1. 前提条件

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

    注記

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

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

    警告

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

  • OpenShift CLI (oc) がワークステーションにインストールされている。
  • opm CLI がワークステーションにインストールされている。
  • Docker または Podman がワークステーションにインストールされている。
  • Quay などのコンテナーレジストリーへのプッシュアクセス
  • プロジェクトのルートにあるフラットディレクトリー内に、次の構造のような Kubernetes マニフェストがある。

    ディレクトリー構造の例

    manifests
    ├── namespace.yaml
    ├── service_account.yaml
    ├── cluster_role.yaml
    ├── cluster_role_binding.yaml
    └── deployment.yaml

7.4.2. イメージソースからプレーンバンドルイメージを構築する

Operator Controller は現在、プレーンバンドルイメージ からのみ作成されたプレーンバンドルのインストールをサポートしています。

手順

  1. プロジェクトのルートで、バンドルイメージを構築できる Dockerfile を作成します。

    plainbundle.Dockerfile の例

    FROM scratch 1
    ADD manifests /manifests

    1
    イメージのサイズを小さくするには、FROM scratch ディレクティブを使用します。バンドルイメージには他のファイルやディレクトリーは必要ありません。
  2. 次の例のように、任意のビルドツールを使用して Open Container Initiative (OCI) 準拠のイメージをビルドします。

    $ podman build -f plainbundle.Dockerfile -t \
        quay.io/<organization_name>/<repository_name>:<image_tag> . 1
    1
    プッシュアクセス権限があるリポジトリーを参照するイメージタグを使用します。
  3. 次のコマンドを実行して、イメージをリモートレジストリーにプッシュします。

    $ podman push quay.io/<organization_name>/<repository_name>:<image_tag>

7.4.3. ファイルベースのカタログの作成

ファイルベースのカタログがない場合は、次の手順を実行してカタログを初期化する必要があります。

手順

  1. 次のコマンドを実行して、カタログ用のディレクトリーを作成します。

    $ mkdir <catalog_dir>
  2. 前の手順と同じディレクトリーレベルで opm generate dockerfile コマンドを実行して、カタログイメージを構築できる Dockerfile を生成します。

    $ opm generate dockerfile <catalog_dir> \
        -i registry.redhat.io/openshift4/ose-operator-registry:v4.14 1
    1
    -i フラグを使用して公式の Red Hat ベースイメージを指定します。それ以外の場合、Dockerfile はデフォルトのアップストリームイメージを使用します。
    注記

    生成された Dockerfile は、直前の手順で作成したカタログディレクトリーと同じ親ディレクトリーに存在する必要があります。

    ディレクトリー構造の例

    .
    ├── <catalog_dir>
    └── <catalog_dir>.Dockerfile

  3. opm init コマンドを実行して、カタログに拡張機能のパッケージ定義を追加します。

    $ opm init <extension_name> \
        --output json \
        > <catalog_dir>/index.json

    このコマンドは、指定されたカタログ設定ファイルに olm.package 宣言型設定 blob を生成します。

7.4.4. ファイルベースのカタログへのプレーンバンドルの追加

opm render コマンドは、カタログへのプレーンバンドルの追加をサポートしていません。次の手順に示すように、プレーンバンドルをファイルベースのカタログに手動で追加する必要があります。

手順

  1. カタログの index.json または index.yaml ファイルが、次の例のようになっていることを確認します。

    <catalog_dir>/index.json ファイルの例

    {
        {
         "schema": "olm.package",
         "name": "<extension_name>",
         "defaultChannel": ""
        }
    }

  2. olm.bundle ブロブを作成するには、次の例のように、index.json または index.yaml ファイルを編集します。

    olm.bundle ブロブを含む <catalog_dir>/index.json ファイルの例

    {
       "schema": "olm.bundle",
        "name": "<extension_name>.v<version>",
        "package": "<extension_name>",
        "image": "quay.io/<organization_name>/<repository_name>:<image_tag>",
        "properties": [
            {
                "type": "olm.package",
                "value": {
                "packageName": "<extension_name>",
                "version": "<bundle_version>"
                }
            },
            {
                "type": "olm.bundle.mediatype",
                "value": "plain+v0"
            }
      ]
    }

  3. olm.channel ブロブを作成するには、次の例のように、index.json または index.yaml ファイルを編集します。

    olm.channel ブロブを含む <catalog_dir>/index.json ファイルの例

    {
        "schema": "olm.channel",
        "name": "<desired_channel_name>",
        "package": "<extension_name>",
        "entries": [
            {
                "name": "<extension_name>.v<version>"
            }
        ]
    }

検証

  1. index.json または index.yaml ファイルを開き、次の例のようになっていることを確認します。

    <catalog_dir>/index.json ファイルの例

    {
        "schema": "olm.package",
        "name": "example-extension",
        "defaultChannel": "preview"
    }
    {
        "schema": "olm.bundle",
        "name": "example-extension.v0.0.1",
        "package": "example-extension",
        "image": "quay.io/example-org/example-extension-bundle:v0.0.1",
        "properties": [
            {
                "type": "olm.package",
                "value": {
                "packageName": "example-extension",
                "version": "0.0.1"
                }
            },
            {
                "type": "olm.bundle.mediatype",
                "value": "plain+v0"
            }
        ]
    }
    {
        "schema": "olm.channel",
        "name": "preview",
        "package": "example-extension",
        "entries": [
            {
                "name": "example-extension.v0.0.1"
            }
        ]
    }

  2. 次のコマンドを実行してカタログを検証します。

    $ opm validate <catalog_dir>

7.4.5. ファイルベースのカタログの構築と公開

手順

  1. 次のコマンドを実行して、ファイルベースのカタログをイメージとしてビルドします。

    $ podman build -f <catalog_dir>.Dockerfile -t \
        quay.io/<organization_name>/<repository_name>:<image_tag> .
  2. 次のコマンドを実行して、カタログイメージをプッシュします。

    $ podman push quay.io/<organization_name>/<repository_name>:<image_tag>
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.