5.17. Go ベースの Operator 用のオブジェクトプルーニングユーティリティー


operator-libプルーニングユーティリティーを使用すると、Go ベースの Operator は、オブジェクトが不要になったときにオブジェクトをクリーンアップまたはプルーニングできます。Operator の作成者は、ユーティリティーを使用してカスタムフックと戦略を作成することもできます。

重要

Operator プロジェクトの関連スキャフォールディングおよびテストツールなど、Red Hat がサポートするバージョンの Operator SDK CLI ツールは非推奨となり、OpenShift Container Platform の今後のリリースで削除される予定です。Red Hat は、現在のリリースライフサイクル中にこの機能のバグ修正とサポートを提供しますが、この機能は今後、機能拡張の提供はなく、OpenShift Container Platform リリースから削除されます。

新しい Operator プロジェクトを作成する場合、Red Hat がサポートするバージョンの Operator SDK は推奨されません。既存の Operator プロジェクトを使用する Operator 作成者は、OpenShift Container Platform 4.16 でリリースされるバージョンの Operator SDK CLI ツールを使用してプロジェクトを維持し、OpenShift Container Platform の新しいバージョンを対象とする Operator リリースを作成できます。

Operator プロジェクトの次の関連ベースイメージは 非推奨 ではありません。これらのベースイメージのランタイム機能と設定 API は、バグ修正と CVE への対応のために引き続きサポートされます。

  • Ansible ベースの Operator プロジェクトのベースイメージ
  • Helm ベースの Operator プロジェクトのベースイメージ

OpenShift Container Platform で非推奨となったか、削除された主な機能の最新の一覧は、OpenShift Container Platform リリースノートの 非推奨および削除された機能 セクションを参照してください。

サポートされていない、コミュニティーによって管理されているバージョンの Operator SDK は、Operator SDK (Operator Framework) を参照してください。

5.17.1. operator-lib プルーニングユーティリティーについて

ジョブや Pod などのオブジェクトは、Operator ライフサイクルの通常の部分として作成されます。クラスター管理者または Operator がこれらのオブジェクトを削除しない場合には、そのままクラスターにとどまり、リソースを消費する可能性があります。

以前は、不要なオブジェクトの整理に次のオプションを使用できました。

  • Operator の作成者は、Operator 向けに独自のプルーニングソリューションを作成する必要がありました。
  • クラスター管理者は、自分でオブジェクトをクリーンアップする必要がありました。

operator-libプルーニングユーティリティーでは、特定の namespace の Kubernetes クラスターからオブジェクトを削除します。このライブラリーは、Operator Framework の一部としてoperator-libライブラリーのバージョン0.9.0で追加されました。

5.17.2. プルーニングユーティリティーの設定

operator-libプルーニングユーティリティーは Go で記述されており、Go ベースの Operator の一般的なプルーニング戦略が含まれています。

設定例

cfg = Config{
        log:           logf.Log.WithName("prune"),
        DryRun:        false,
        Clientset:     client,
        LabelSelector: "app=<operator_name>",
        Resources: []schema.GroupVersionKind{
                {Group: "", Version: "", Kind: PodKind},
        },
        Namespaces: []string{"<operator_namespace>"},
        Strategy: StrategyConfig{
                Mode:            MaxCountStrategy,
                MaxCountSetting: 1,
        },
        PreDeleteHook: myhook,
}

プルーニングユーティリティー設定ファイルは、次のフィールドを使用してプルーニングアクションを定義します。

設定フィールド説明

log

ライブラリーログメッセージの処理に使用されるロガー。

DryRun

リソースを削除するかどうかを決定するブール値。trueに設定すると、ユーティリティーは実行されますが、リソースは削除されません。

Clientset

Client-Kubernetes API 呼び出しに使用される Client-go Kubernetes ClientSet。

LabelSelector

プルーニングするリソースの検索時に使用される Kubernetes ラベルセレクター式。

Resources

Kubernetes リソースの種類。PodKindJobKindは現在サポートされています。

Namespaces

リソースを検索する Kubernetes namespace のリスト。

ストラテジー

実行するプルーニングストラテジー。

Strategy.Mode

MaxCountStrategyMaxAgeStrategy、または CustomStrategy が現在サポートされています。

Strategy.MaxCountSetting

プルーニングユーティリティーの実行後に残るリソース数を指定する MaxCountStrategy の整数値。

Strategy.MaxAgeSetting

リソースのプルーニングの有効期限を指定する Go time.Duration の文字列。例: 48h

Strategy.CustomSettings

カスタムストラテジー関数に指定可能な Go マップの値

PreDeleteHook

オプション: リソースのプルーニング前に呼び出す Go 関数

CustomStrategy

オプション: カスタムプルーニングストラテジーを実装する Go 関数

プルーニングの実行

プルーニング設定で execute 関数を実行して、プルーニングアクションを呼び出すことができます。

err := cfg.Execute(ctx)

cron パッケージを使用するか、トリガーイベントを指定してプルーニングユーティリティーを呼び出して、プルーニングアクションを呼び出すこともできます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.