3.13. タスク実行とパイプライン実行の自動プルーニング
古い TaskRun オブジェクトと PipelineRun オブジェクト、およびそれらの実行されたインスタンスは、アクティブな実行に使用できる物理リソースを占有します。これらのリソースを最適に利用するために、Red Hat OpenShift Pipelines は、さまざまな namespace 内の未使用のオブジェクトとそのインスタンスを自動的に削除するプルーナーコンポーネントを提供します。
TektonConfig カスタムリソースを使用してインストール全体のプルーナーを設定し、namespace のアノテーションを使用して namespace の設定を変更できます。ただし、namespace で個々のタスク実行とパイプライン実行を選択的に自動プルーニングすることはできません。
3.13.1. プルーナーの設定 リンクのコピーリンクがクリップボードにコピーされました!
TektonConfig カスタムリソースを使用して、パイプラインの実行とタスクの実行に関連付けられたリソースの定期的なプルーニングを設定できます。
次の例は、デフォルト設定に対応します。
プルーナー設定の例
| パラメーター | 説明 |
|---|---|
|
| プルーナープロセスを実行するための Cron スケジュール。デフォルトのスケジュールでは、プロセスは毎日 08:00 に実行されます。Cron スケジュール構文の詳細は、Kubernetes ドキュメントの Cron schedule syntax を参照してください。 |
|
|
プルーナーが適用されるリソースのタイプ。使用可能なリソースの種類は、 |
|
| 保持するすべてのタイプの最新のリソースの数。 |
|
|
|
|
|
リソースを保持する最大時間 (分単位)。たとえば、6 日以上前に作成されたリソースを保持するには、 |
|
| このパラメーターは任意です。何らかの理由でプルーナージョブがスケジュールされたタイミングで開始しない場合、この設定でジョブを開始できる最大時間を秒単位で設定します。指定された時間内にジョブが開始されないと、OpenShift Pipelines はこのジョブが失敗したと見なし、次のスケジュールされた時間にプルーナーを開始します。このパラメーターを指定せず、プルーナージョブがスケジュールされたタイミングで開始されないと、可能な限り、OpenShift Pipelines は後からジョブを開始しようとします。 |
keep パラメーターと keep-since パラメーターは相互に排他的です。設定ではそのうちの 1 つだけを使用してください。
3.13.2. タスク実行とパイプライン実行を自動的にプルーニングするためのアノテーション リンクのコピーリンクがクリップボードにコピーされました!
ネームスペース内のタスク実行とパイプライン実行の自動プルーニングの設定を変更するには、namespace にアノテーションを設定します。
次の namespace のアノテーションは、TektonConfig カスタムリソースの対応するキーと同じ意味を持ちます。
-
operator.tekton.dev/prune.schedule -
operator.tekton.dev/prune.resources -
operator.tekton.dev/prune.keep -
operator.tekton.dev/prune.prune-per-resource -
operator.tekton.dev/prune.keep-since
Operator.tekton.dev/prune.resources アノテーションは、コンマ区切りのリストを受け入れます。タスク実行とパイプライン実行の両方をプルーニングするには、このアノテーションを "taskrun, pipelinerun" に設定します。
次の追加の namespace アノテーションを使用できます。
-
Operator.tekton.dev/prune.skip:trueに設定すると、アノテーションが設定されている namespace はプルーニングされません。 -
operator.tekton.dev/prune.strategy: このアノテーションの値をkeepまたはkeep-sinceのいずれかに設定します。
たとえば、次のアノテーションは、過去 5 日間に作成されたすべてのタスク実行とパイプライン実行を保持し、古いリソースを削除します。
自動プルーニングアノテーションの例
3.13.3. イベントベースのプルーナーの有効化 リンクのコピーリンクがクリップボードにコピーされました!
イベントベースのプルーナーはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
イベントベースの tektonpruner コントローラーを使用すると、設定可能なポリシーに基づいて、PipelineRuns や TaskRuns などの完了したリソースを自動的に削除できます。デフォルトのジョブベースのプルーナーとは異なり、イベントベースのプルーナーはリソースイベントをリッスンし、ほぼリアルタイムでリソースをプルーニングします。
イベントベースのプルーナーは以下と一緒に使用できます。
リソースアノテーション Tekton Results パイプライン as Code
Operator はイベントベースのプルーナーでのこれらの機能の使用を制限しません。ただし、将来のリリースでは、競合が検出されると検証が導入される可能性があります。
イベントベースのプルーナーを有効にする前に、TektonConfig カスタムリソース(CR)でデフォルトのプルーナーを無効にする必要があります。プルーナータイプの両方が有効になっている場合、デプロイメントの readiness ステータスが False に変更され、以下のエラーメッセージが出力に表示されます。
Components not in ready state: Invalid Pruner Configuration!! Both pruners, tektonpruner(event based) and pruner(job based) cannot be enabled simultaneously. Please disable one of them.
Components not in ready state: Invalid Pruner Configuration!! Both pruners, tektonpruner(event based) and pruner(job based) cannot be enabled simultaneously. Please disable one of them.
手順
TektonConfig CR で、
spec.pruner.disabledフィールドをtrueに設定してデフォルトのプルーナーを無効にし、spec.tektonpruner.disabledフィールドをfalseに設定してイベントベースのプルーナーを有効にします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新された CR を適用すると、Operator は
tekton-pruner-controllerPod をopenshift-pipelinesnamespace にデプロイします。以下の設定マップが
openshift-pipelinesnamespace に表示されることを確認します。Expand ConfigMap 目的 tekton-pruner-default-specデフォルトのプルーニング動作を定義する
pruner-infoコントローラーが使用する内部ランタイムデータを保存する
config-logging-tekton-prunerプルーナーのロギング設定を行う
config-observability-tekton-prunerメトリクスやトレーシングなどの可観測性機能を有効にする
デフォルトのプルーナーとは異なり、TektonConfig CR を変更することによってのみイベントベースのプルーナーを有効または無効にすることができます。tekton-pruner-default-spec 設定マップを変更して他のすべてのプルーニング動作を設定します。
検証
tekton-pruner-controllerPod が実行中であることを確認するには、次のコマンドを実行します。oc get pods -n openshift-pipelines
$ oc get pods -n openshift-pipelinesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力に
Running状態のtekton-pruner-controllerPod が含まれていることを確認します。出力例:tekton-pruner-controller-<id> Running
$ tekton-pruner-controller-<id> RunningCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.13.4. イベントベースのプルーナーの設定 リンクのコピーリンクがクリップボードにコピーされました!
イベントベースのプルーナーはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
イベントベースのプルーナーのプルーニング動作を設定するには、openshift-pipelines namespace の tekton-pruner-default-spec 設定マップを変更します。この設定マップは、グローバルプルーニングポリシーとオプションの namespace 固有のオーバーライドの両方をサポートします。
以下の例は、グローバルプルーニングルールを使用するデフォルトの tekton-pruner-default-spec 設定マップを示しています。
-
ttlSecondsAfterFinished: 300: リソース 300 秒(5 分)を削除します。 -
successfulHistoryLimit: 3Retain 3 successful の実行。 -
failedHistoryLimit: 3: Retain 3 failed runs. -
historyLimit: 5: 保持を 5 の実行に制限します。この設定は、ステータス固有の制限が定義されていない場合に使用されます。
enforcedConfigLevel を namespace に設定し、namespaces セクションでポリシーを設定することで、個々の namespace のプルーニングルールを定義できます。次の例では、dev-project namespace 内のリソースに 60 秒の有効期間 (TTL) が適用されます。
以下のパラメーターは、tekton-pruner-default-spec Config Map の global-config セクションで使用できます。
| パラメーター | 説明 |
|---|---|
|
| 完了後の固定期間(秒数)後にリソースを削除します。 |
|
| 最近成功した実行の指定数を保持し、以前に成功した実行を削除します。 |
|
| 最近失敗した実行の指定数を保持し、以前に失敗した実行を削除します。 |
|
| ステータス固有の制限が定義されていない場合は、一般的な履歴制限を適用します。 |
|
|
プルーナーが設定を適用するレベルを指定します。受け入れられる値: |
|
| namespace ごとのプルーニングルールを定義します。 |