検索

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

download PDF

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

重要

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

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

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

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

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

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

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

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

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

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

5.14.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.