5.12. Operator バンドルの検証


Operator の作成者は、Operator SDK で bundle validate コマンドを実行して Operator バンドルのコンテンツおよび形式を検証できます。リモート Operator バンドルイメージまたはローカル Operator バンドルディレクトリーでコマンドを実行できます。

5.12.1. bundle validate コマンドについて

Operator SDK scorecard コマンドは設定ファイルおよびテストイメージに基づいて Operator でテストを実行できますが、bundle validate サブコマンドは、ローカルバンドルディレクトリーおよびリモートバンドルイメージのコンテンツおよび構造を検証できます。

bundle validate コマンドの構文

$ operator-sdk bundle validate <bundle_dir_or_image> <flags>

注記

bundle validate コマンドは、make bundle コマンドを使用してバンドルをビルドすると自動的に実行されます。

バンドルイメージはリモートレジストリーからプルされ、検証前にローカルにビルドされます。ローカルバンドルディレクトリーには Operator メタデータおよびマニフェストが含まれている必要があります。バンドルメタデータとマニフェストには、以下のバンドルレイアウトと同様の構造が必要です。

バンドルレイアウトの例

./bundle
  ├── manifests
  │   ├── cache.my.domain_memcacheds.yaml
  │   └── memcached-operator.clusterserviceversion.yaml
  └── metadata
      └── annotations.yaml

エラーが検出されない場合、バンドルテストは検証に合格し、終了コード 0 で終了します。

出力例

INFO[0000] All validation tests have completed successfully

エラーが検出されると、テストは検証に失敗し、終了コード 1 で終了します。

出力例

ERRO[0000] Error: Value cache.example.com/v1alpha1, Kind=Memcached: CRD "cache.example.com/v1alpha1, Kind=Memcached" is present in bundle "" but not defined in CSV

警告が含まれるバンドルテストは、エラーが検出されていない限り、終了コード 0 で検証を終了すことができます。テストはエラーが発生した場合にのみ失敗します。

出力例

WARN[0000] Warning: Value : (memcached-operator.v0.0.1) annotations not found
INFO[0000] All validation tests have completed successfully

bundle validate サブコマンドの詳細を確認するには、以下のコマンドを実行してください。

$ operator-sdk bundle validate -h

5.12.2. ビルトインのバンドル検証テスト

Operator SDK には、スイートに編成された事前定義済みのバリデーターが同梱されています。バリデーターを指定せずに bundle validate コマンドを実行すると、デフォルトのテストが実行されます。デフォルトテストは、バンドルが Operator Framework コミュニティーによって定義された仕様に準拠していることを確認します。詳細は、「Bundle format」を参照してください。

OperatorHub の互換性や非推奨の Kubernetes API などの問題の有無をテストするために、オプションのバリデーターを実行できます。オプションバリデーターは、必ずデフォルトのテストに追加して実行されます。

オプションのテストスイートの bundle validate コマンドの構文

$ operator-sdk bundle validate <bundle_dir_or_image>
  --select-optional <test_label>

表5.22 追加の bundle validate バリデーター
名前説明ラベル

Operator Framework

このバリデーターは、Operator Framework によって提供されるバリデーターのスイート全体に対して Operator バンドルをテストします。

suite=operatorframework

OperatorHub

このバリデーターは、OperatorHub との互換性に関して、Operator バンドルをテストします。

name=operatorhub

Good Practices

このバリデーターは、Operator バンドルが Operator Framework で定義されるグッドプラクティスに準拠するかどうかをテストします。これは、空の CRD 記述またはサポート対象外の Operator Lifecycle Manager (OLM) リソースなどの問題の有無をチェックします。

name=good-practices

関連情報

5.12.3. bundle validate コマンドの実行

デフォルトのバリデーターは、bundle validate コマンドを実行するたびにテストを実行します。オプションのバリデーターは、--select-optional フラグを使用して実行できます。オプションバリデーターは、デフォルトのテストに追加してテストを実行します。

前提条件

  • Operator プロジェクトが Operator SDK を使用して生成されていること。

手順

  1. ローカルバンドルディレクトリーに対してデフォルトのバリデーターを実行する場合は、Operator プロジェクトディレクトリーから以下のコマンドを入力します。

    $ operator-sdk bundle validate ./bundle
  2. リモート Operator バンドルイメージに対してデフォルトのバリデーターを実行する必要がある場合は、以下のコマンドを入力します。

    $ operator-sdk bundle validate \
      <bundle_registry>/<bundle_image_name>:<tag>

    ここでは、以下のようになります。

    <bundle_registry>
    バンドルがホストされるレジストリーを指定します (例: quay.io/example)。
    <bundle_image_name>
    バンドルイメージの名前を指定します (例: memcached-operator)。
    <tag>

    v1.31.0 などのバンドルイメージのタグを指定します。

    注記

    Operator バンドルイメージを検証する必要がある場合は、イメージをリモートレジストリーでホストする必要があります。Operator SDK はイメージをプルし、テストを実行する前にこれをローカルにビルドします。bundle validate コマンドは、ローカルバンドルイメージのテストをサポートしません。

  3. Operator バンドルに対して追加のバリデーターを実行する必要がある場合は、以下のコマンドを入力します。

    $ operator-sdk bundle validate \
      <bundle_dir_or_image> \
      --select-optional <test_label>

    ここでは、以下のようになります。

    <bundle_dir_or_image>
    ~/projects/memcached または quay.io/example/memcached-operator:v1.31.0 などのローカルバンドルディレクトリーまたはリモートバンドルイメージを指定します。
    <test_label>

    実行するバリデーターの名前を指定します (例: name=good-practices)。

    出力例

    ERRO[0000] Error: Value apiextensions.k8s.io/v1, Kind=CustomResource: unsupported media type registry+v1 for bundle object
    WARN[0000] Warning: Value k8sevent.v0.0.1: owned CRD "k8sevents.k8s.k8sevent.com" has an empty description

5.12.4. Operator のマルチプラットフォーム対応の検証

bundle validate コマンドを実行すると、Operator のマルチプラットフォーム対応性を検証できます。このコマンドは、Operator プロジェクトが次の条件を満たしていることを確認します。

  • Operator のマネージャーイメージは、クラスターサービスバージョン (CSV) ファイルでラベル付けされているプラットフォームをサポートします。
  • Operator の CSV には、Operator Lifecycle Manager (OLM) および OperatorHub でサポートされているプラットフォームのラベルが含まれています。

手順

  • 次のコマンドを実行して、Operator プロジェクトが複数のアーキテクチャーに対応しているかどうかを検証します。

    $ operator-sdk bundle validate ./bundle \
      --select-optional name=multiarch

    検証メッセージの例

    INFO[0020] All validation tests have completed successfully

    マネージャーイメージに CSV ラベルがない場合のエラーメッセージの例

    ERRO[0016] Error: Value test-operator.v0.0.1: not all images specified are providing the support described via the CSV labels. Note that (SO.architecture): (linux.ppc64le) was not found for the image(s) [quay.io/example-org/test-operator:v1alpha1]
    ERRO[0016] Error: Value test-operator.v0.0.1: not all images specified are providing the support described via the CSV labels. Note that (SO.architecture): (linux.s390x) was not found for the image(s) [quay.io/example-org/test-operator:v1alpha1]
    ERRO[0016] Error: Value test-operator.v0.0.1: not all images specified are providing the support described via the CSV labels. Note that (SO.architecture): (linux.amd64) was not found for the image(s) [quay.io/example-org/test-operator:v1alpha1]
    ERRO[0016] Error: Value test-operator.v0.0.1: not all images specified are providing the support described via the CSV labels. Note that (SO.architecture): (linux.arm64) was not found for the image(s) [quay.io/example-org/test-operator:v1alpha1]

    OperatorHub フラグが欠落している場合のエラーメッセージの例

    WARN[0014] Warning: Value test-operator.v0.0.1: check if the CSV is missing the label (operatorframework.io/arch.<value>) for the Arch(s): ["amd64" "arm64" "ppc64le" "s390x"]. Be aware that your Operator manager image ["quay.io/example-org/test-operator:v1alpha1"] provides this support. Thus, it is very likely that you want to provide it and if you support more than amd64 architectures, you MUST,use the required labels for all which are supported.Otherwise, your solution cannot be listed on the cluster for these architectures

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.