3.12. タスク実行とパイプライン実行の自動プルーニング
古い TaskRun
オブジェクトと PipelineRun
オブジェクト、およびそれらの実行されたインスタンスは、アクティブな実行に使用できる物理リソースを占有します。これらのリソースを最適に利用するために、Red Hat OpenShift Pipelines は、さまざまな namespace 内の未使用のオブジェクトとそのインスタンスを自動的に削除するプルーナーコンポーネントを提供します。
TektonConfig
カスタムリソースを使用してインストール全体のプルーナーを設定し、namespace のアノテーションを使用して namespace の設定を変更できます。ただし、namespace で個々のタスク実行とパイプライン実行を選択的に自動プルーニングすることはできません。
3.12.1. プルーナーの設定
TektonConfig
カスタムリソースを使用して、パイプラインの実行とタスクの実行に関連付けられたリソースの定期的なプルーニングを設定できます。
次の例は、デフォルト設定に対応します。
プルーナー設定の例
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config # ... spec: pruner: resources: - taskrun - pipelinerun keep: 100 prune-per-resource: false schedule: "* 8 * * *" startingDeadlineSeconds: 60 # ...
パラメーター | 説明 |
---|---|
| プルーナープロセスを実行するための Cron スケジュール。デフォルトのスケジュールでは、プロセスは毎日 08:00 に実行されます。Cron スケジュール構文の詳細は、Kubernetes ドキュメントの Cron schedule syntax を参照してください。 |
|
プルーナーが適用されるリソースのタイプ。使用可能なリソースの種類は、 |
| 保持するすべてのタイプの最新のリソースの数。 |
|
|
|
リソースを保持する最大時間 (分単位)。たとえば、6 日以上前に作成されたリソースを保持するには、 |
| このパラメーターは任意です。何らかの理由でプルーナージョブがスケジュールされたタイミングで開始されない場合、この設定ではジョブを開始できる最大時間を秒単位で設定します。指定された時間内にジョブが開始されない場合、OpenShift Pipelines はこのジョブが失敗したと見なし、次のスケジュールされた時間にプルーナーを開始します。このパラメーターを指定せず、プルーナージョブがスケジュールされたタイミングで開始されない場合、可能な限り、OpenShift Pipelines は後からジョブを開始しようとします。 |
keep
パラメーターと keep-since
パラメーターは相互に排他的です。設定ではそのうちの 1 つだけを使用してください。
3.12.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 日間に作成されたすべてのタスク実行とパイプライン実行を保持し、古いリソースを削除します。
自動プルーニングアノテーションの例
kind: Namespace apiVersion: v1 # ... spec: annotations: operator.tekton.dev/prune.resources: "taskrun, pipelinerun" operator.tekton.dev/prune.keep-since: 7200 # ...