5.7.7. Operator 条件の有効化


Operator Lifecycle Manager (OLM) は、Operator を管理する一方で OLM の動作に影響を与える複雑な状態を通信するためのチャネルを Operator に提供します。デフォルトで、OLM は Operator のインストール時に OperatorCondition カスタムリソース定義 (CRD) を作成します。OperatorCondition カスタムリソース (CR) に設定される条件に基づいて、OLM の動作は随時変わります。

Operator 条件をサポートするには、Operator は OLM によって作成された OperatorCondition CR を読み取ることができ、次のタスクを完了することができる必要があります。

  • 特定の条件を取得します。
  • 特定の条件のステータスを設定します。

これは、operator-lib ライブラリーを使用して実行できます。Operator の作成者は、ライブラリーがクラスター内の Operator が所有する OperatorCondition CR にアクセスできるように Operator に controller-runtime クライアント を指定できます。

ライブラリーは汎用的な Conditions インターフェイスを提供します。これには、OperatorCondition CR で conditionTypeGet および Set を実行するための以下のメソッドがあります。

Get
特定の条件を取得するために、ライブラリーは controller-runtimeclient.Get 機能を使用します。これには、conditionAccessor にあるタイプが types.NamespacedNameObjectKey が必要です。
Set
特定の条件のステータスを更新するために、ライブラリーは controller-runtimeclient.Update 機能を使用します。conditionType が CRD にない場合、エラーが生じます。

Operator は CR の status サブリソースのみを変更することができます。Operator は status.conditions 配列を削除したり、条件を追加できるようにこれを更新したりすることができます。条件にあるフィールドの形式および説明の詳細は、アップストリームの Condition GoDocs を参照してください。

注記

Operator SDK 1.28.0 は operator-lib v0.11.0 をサポートします。

前提条件

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

手順

Operator プロジェクトで Operator 条件を有効にするには、以下を実行します。

  1. Operator プロジェクトの go.mod ファイルで、operator-framework/operator-lib を必要なライブラリーとして追加します。

    module github.com/example-inc/memcached-operator
    
    go 1.15
    
    require (
      k8s.io/apimachinery v0.19.2
      k8s.io/client-go v0.19.2
      sigs.k8s.io/controller-runtime v0.7.0
      operator-framework/operator-lib v0.3.0
    )
  2. Operator ロジックに独自のコンストラクターを作成すると、次の結果が得られます。

    • controller-runtime クライアントを許可します。
    • conditionType を受け入れます。
    • 条件を更新または追加する Condition インターフェイスを返します。

    現時点で OLM は Upgradeable 状態をサポートするため、Upgradeable 条件にアクセスするためのメソッドを持つインターフェイスを作成できます。以下に例を示します。

    import (
      ...
      apiv1 "github.com/operator-framework/api/pkg/operators/v1"
    )
    
    func NewUpgradeable(cl client.Client) (Condition, error) {
      return NewCondition(cl, "apiv1.OperatorUpgradeable")
    }
    
    cond, err := NewUpgradeable(cl);

    この例では、NewUpgradeable コンストラクターが、タイプ Condition の変数 cond を使用するためにさらに使用されます。cond 変数には、OLM の Upgradeable 条件を処理するために使用できる Get および Set メソッドが含まれます。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る