5.13. Go ベースの Operator 用のオブジェクトプルーニングユーティリティー
operator-lib
プルーニングユーティリティーを使用すると、Go ベースの Operator は、オブジェクトが不要になったときにオブジェクトをクリーンアップまたはプルーニングできます。Operator の作成者は、ユーティリティーを使用してカスタムフックと戦略を作成することもできます。
5.13.1. operator-lib プルーニングユーティリティーについて
ジョブや Pod などのオブジェクトは、Operator ライフサイクルの通常の部分として作成されます。クラスター管理者または Operator がこれらのオブジェクトを削除しない場合には、そのままクラスターにとどまり、リソースを消費する可能性があります。
以前は、不要なオブジェクトの整理に次のオプションを使用できました。
- Operator の作成者は、Operator 向けに独自のプルーニングソリューションを作成する必要がありました。
- クラスター管理者は、自分でオブジェクトをクリーンアップする必要がありました。
operator-lib
プルーニングユーティリティーでは、特定の namespace の Kubernetes クラスターからオブジェクトを削除します。このライブラリーは、Operator Framework の一部としてoperator-lib
ライブラリーのバージョン0.9.0
で追加されました。
5.13.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{"default"}, Strategy: StrategyConfig{ Mode: MaxCountStrategy, MaxCountSetting: 1, }, PreDeleteHook: myhook, }
プルーニングユーティリティー設定ファイルは、次のフィールドを使用してプルーニングアクションを定義します。
設定フィールド | 説明 |
---|---|
| ライブラリーログメッセージの処理に使用されるロガー。 |
|
リソースを削除するかどうかを決定するブール値。 |
| Client-Kubernetes API 呼び出しに使用される Client-go Kubernetes ClientSet。 |
| プルーニングするリソースの検索時に使用される Kubernetes ラベルセレクター式。 |
|
Kubernetes リソースの種類。 |
| リソースを検索する Kubernetes namespace のリスト。 |
| 実行するプルーニング戦略。 |
|
|
|
プルーニングユーティリティーの実行後に残っているリソースの数を指定する |
|
リソースのプルーニングの有効期限を指定する Go |
| カスタム戦略関数に指定可能な Go マップの値 |
| オプション: リソースのプルーニング前に呼び出す Go 関数 |
| オプション: カスタムプルーニング戦略を実装する Go 関数 |
プルーニングの実行
プルーニング設定で execute 関数を実行して、プルーニングアクションを呼び出すことができます。
err := cfg.Execute(ctx)
cron パッケージを使用するか、トリガーイベントを指定してプルーニングユーティリティーを呼び出して、プルーニングアクションを呼び出すこともできます。