3.11. TektonConfig カスタムリソース設定のカスタマイズ
Red Hat OpenShift Pipelines では、TektonConfig
カスタムリソース (CR) を使用して以下の設定をカスタマイズできます。
- Red Hat OpenShift Pipelines コントロールプレーンの設定
- デフォルトサービスアカウントの変更
- サービスモニターの無効化
- パイプラインリゾルバーの設定
- クラスタータスクとパイプラインテンプレートの無効化
- Tekton Hub 統合の無効化
- RBAC リソースの自動作成の無効化
- タスク実行とパイプライン実行のプルーニング
3.11.1. 前提条件
- Red Hat OpenShift Pipelines Operator がインストールされている。
3.11.2. Red Hat OpenShift Pipelines コントロールプレーンの設定
TektonConfig
カスタムリソース (CR) の設定フィールドを編集して、OpenShift Pipelines コントロールプレーンをカスタマイズできます。Red Hat OpenShift Pipelines Operator は設定フィールドにデフォルト値を自動的に追加し、OpenShift Pipelines コントロールプレーンを使用可能な状態にします。
手順
- Web コンソールの Administrator パースペクティブで、Administration → CustomResourceDefinitions に移動します。
-
Search by name ボックスを使用して、
tektonconfigs.operator.tekton.dev
カスタムリソース定義 (CRD) を検索します。TektonConfig をクリックし、CRD の詳細ページを表示します。 - Instances タブをクリックします。
-
config インスタンスをクリックして、
TektonConfig
CR の詳細を表示します。 - YAML タブをクリックします。
要件に応じて
TektonConfig
YAML ファイルを編集します。デフォルト値が適用された
TektonConfig
CR の例apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: pipeline: running-in-environment-with-injected-sidecars: true metrics.taskrun.duration-type: histogram metrics.pipelinerun.duration-type: histogram await-sidecar-readiness: true params: - name: enableMetrics value: 'true' default-service-account: pipeline require-git-ssh-secret-known-hosts: false enable-tekton-oci-bundles: false metrics.taskrun.level: task metrics.pipelinerun.level: pipeline enable-api-fields: stable enable-provenance-in-status: false enable-custom-tasks: true disable-creds-init: false disable-affinity-assistant: true
3.11.2.1. デフォルト値が適用された変更可能フィールド
次のリストには、デフォルト値が適用された TektonConfig
CR の変更可能フィールドがすべて含まれています。
running-in-environment-with-injected-sidecars
(デフォルト:true
): Istio などの注入済みサイドカーを使用しないクラスターでパイプラインを実行する場合は、このフィールドをfalse
に設定します。false
に設定すると、パイプラインがタスク実行を開始するまでにかかる時間が短縮されます。注記注入されたサイドカーを使用するクラスターの場合、このフィールドを
false
に設定すると、予期しない動作が発生する可能性があります。-
await-sidecar-readiness
(デフォルト:true
):TaskRun
サイドカーコンテナーの実行を待たずに OpenShift が動作を開始するようにするには、このフィールドをfalse
に設定します。これにより、downwardAPI
ボリュームタイプをサポートしない環境でのタスク実行が可能になります。 -
default-service-account
(デフォルト:Pipeline
): 特に指定されていない場合、このフィールドにはTaskRun
およびPipelineRun
リソースに使用するデフォルトのサービスアカウント名が設定されます。 require-git-ssh-secret-known-hosts
(デフォルト:false
): このフィールドをtrue
に設定するには、Git SSH シークレットにknown_hosts
フィールドが含まれている必要があります。- Git SSH シークレットの設定について、詳しくは 関連情報 セクションの Git の SSH 認証の設定 を参照してください。
-
Enable-tekton-oci-bundles
(デフォルト:false
): このフィールドをtrue
に設定すると、Tekton OCI バンドルという名前の実験的アルファ機能の使用が可能になります。 Enable-api-fields
(デフォルト:stable
): このフィールドを設定すると、どの機能が有効になるかが決まります。使用できる値ははstable
、beta
、またはalpha
です。注記Red Hat OpenShift Pipelines で
alpha
値はサポートされていません。-
Enable-provenance-in-status
(デフォルト:false
): このフィールドをtrue
に設定すると、TaskRun
ステータスおよびPipelineRun
ステータスのprovenance
フィールドへの入力が可能になります。provenance
フィールドには、リモートタスクまたはパイプライン定義の取得元などの、タスク実行およびパイプライン実行で使用されるリソースのメタデータが含まれます。 -
Enable-custom-tasks
(デフォルト:true
): このフィールドをfalse
に設定すると、パイプラインでのカスタムタスクの使用が無効になります。 -
disable-creds-init
(デフォルト:false
): OpenShift Pipelines が接続されたサービスアカウントをスキャンしてステップに認証情報を挿入しないようにするには、このフィールドをtrue
に設定します。 -
disable-affinity-assistant
(デフォルト:true
): 永続ボリューム要求ワークスペースを共有する各TaskRun
リソースに対してアフィニティーアシスタントを有効にするには、このフィールドをfalse
に設定します。
メトリクスオプション
TektonConfig
CR の次のメトリクスフィールドのデフォルト値を変更できます。
-
metrics.taskrun.duration-type
とmetrics.pipelinerun.duration-type
(デフォルト:histogram
): これらのフィールドを設定すると、タスクまたはパイプライン実行の期間のタイプが決まります。使用できる値は、gauge
またはhistogram
です。 -
metrics.taskrun.level
(デフォルト:task
): このフィールドにより、タスク実行メトリクスのレベルが決まります。使用できる値は、taskrun
、task
、またはnamespace
です。 -
metrics.pipelinerun.level
(デフォルト:Pipeline
): このフィールドにより、パイプライン実行メトリクスのレベルが決まります。使用できる値は、pipelinerun
、pipeline
、またはnamespace
です。
3.11.2.2. 任意の設定フィールド
次のフィールドにはデフォルト値がなく、設定した場合にのみ考慮されます。デフォルトでは、Operator はこれらのフィールドを TektonConfig
カスタムリソース (CR) に追加も設定もしません。
-
default-timeout-minutes
:TaskRun
およびPipelineRun
リソースの作成時に指定していない場合、このフィールドがデフォルトのタイムアウトを設定します。タスク実行またはパイプライン実行にかかる時間が設定された分数より長いと、タスク実行またはパイプライン実行はタイムアウトになり、キャンセルされます。たとえば、default-timeout-minutes: 60
はデフォルトを 60 分に設定します。 -
default-managed-by-label-value
: このフィールドには、app.kubernetes.io/managed-by
ラベルに指定されたデフォルト値が含まれます。このデフォルト値は、何も指定されていない場合にすべてのTaskRun
Pod に適用されます。たとえば、default-managed-by-label-value: tekton-pipelines
です。 -
default-pod-template
: このフィールドは、指定されていない場合にデフォルトのTaskRun
およびPipelineRun
Pod テンプレートを設定します。 -
default-cloud-events-sink
: このフィールドは、何も指定されていない場合に、TaskRun
およびPipelineRun
リソースに使用されるデフォルトのCloudEvents
シンクを設定します。 -
default-task-run-workspace-binding
: このフィールドには、Task
リソースが宣言するワークスペースのデフォルトワークスペース設定が含まれますが、TaskRun
リソースは明示的に宣言されません。 -
default-affinity-assistant-pod-template
: このフィールドは、何も指定されていない場合にアフィニティーアシスタント Pod が使用するデフォルトのPipelineRun
Pod テンプレートを設定します。 -
default-max-matrix-combinations-count
: このフィールドには、何も指定されていない場合の、マトリクスから生成される組み合わせの最大数のデフォルト値が含まれます。
3.11.3. OpenShift Pipelines のデフォルトサービスアカウントの変更
OpenShift Pipeline のデフォルトサービスアカウントは、.spec.pipeline
および .spec.trigger
仕様の default-service-account
フィールドを編集して変更できます。デフォルトのサービスアカウントの名前は pipeline
です。
Example
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: pipeline: default-service-account: pipeline trigger: default-service-account: pipeline enable-api-fields: stable
3.11.4. サービスモニターの無効化
OpenShift Pipeline の一部であるサービスモニターを無効にして、Telemetry データを公開できます。サービスモニターを無効にするには、TektonConfig
カスタムリソース (CR) の .spec.pipeline
仕様で enableMetrics
パラメーターを false
に設定します。
Example
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: pipeline: params: - name: enableMetrics value: 'false'
3.11.5. パイプラインリゾルバーの設定
パイプラインリゾルバーは、TektonConfig
カスタムリソース (CR) で設定できます。パイプラインリゾルバーは、有効または無効にできます。
-
enable-bundles-resolver
-
enable-cluster-resolver
-
enable-git-resolver
-
enable-hub-resolver
Example
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: pipeline: enable-bundles-resolver: true enable-cluster-resolver: true enable-git-resolver: true enable-hub-resolver: true
TektonConfig
CR でリゾルバー固有の設定も指定できます。たとえば、map[string]string
形式で以下のフィールドを定義し、各パイプラインリゾルバーを設定できます。
Example
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: pipeline: bundles-resolver-config: default-service-account: pipelines cluster-resolver-config: default-namespace: test git-resolver-config: server-url: localhost.com hub-resolver-config: default-tekton-hub-catalog: tekton
3.11.6. クラスタータスクとパイプラインテンプレートの無効化
デフォルトでは、TektonAddon
カスタムリソース (CR) は、クラスター上の OpenShift Pipeline と併せて clusterTasks
および pipelineTemplates
リソースをインストールします。
clusterTasks
および pipelineTemplates
リソースのインストールを無効にするには、.spec.addon
仕様でパラメーターの値を false
に設定します。さらに、communityClusterTasks
パラメーターも無効にできます。
Example
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: addon: params: - name: clusterTasks value: 'false' - name: pipelineTemplates value: 'false' - name: communityClusterTasks value: 'true'
3.11.7. Tekton Hub 統合の無効化
Web コンソールの Developer パースペクティブで Tekton Hub の統合を無効にするには、TektonConfig
カスタムリソース (CR) の enable-devconsole-integration
パラメーターを false
に設定します。
Tekton Hub 無効化の例
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: hub: params: - name: enable-devconsole-integration value: false
3.11.8. RBAC リソースの自動作成の無効化
Red Hat OpenShift Pipelines Operator のデフォルトインストールは、^(openshift|kube)-*
正規表現パターンに一致する namespace を除き、クラスター内のすべての namespace について複数のロールベースアクセス制御 (RBAC) リソースを作成します。これらの RBAC リソースの中で、pipelines-scc-rolebinding
SCC (security context constraint) のロールバインディングリソースは、関連する pipelines-scc
SCC に RunAsAny
権限があるため、セキュリティー上の問題となる可能性があります。
Red Hat OpenShift Pipelines Operator のインストール後にクラスター全体の RBAC リソースの自動作成を無効にするには、クラスター管理者は、クラスターレベルの TektonConfig
カスタムリソース (CR) で createRbacResource
パラメーターを false
に設定します。
TektonConfig
CR の例
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: params: - name: createRbacResource value: "false" ...
クラスター管理者または適切な権限を持つユーザーとして、すべての namespace の RBAC リソースの自動作成を無効にすると、デフォルトの ClusterTask
リソースは機能しません。ClusterTask
リソースを機能させるには、それぞれの意図された namespace について RBAC リソースを手動で作成する必要があります。
3.11.9. タスク実行とパイプライン実行の自動プルーニング
古い TaskRun
オブジェクトと PipelineRun
オブジェクト、およびそれらの実行されたインスタンスは、アクティブな実行に使用できる物理リソースを占有します。これらのリソースを最適に利用するために、Red Hat OpenShift Pipelines は、さまざまな namespace 内の未使用のオブジェクトとそのインスタンスを自動的に削除するプルーナーコンポーネントを提供します。
TektonConfig
カスタムリソースを使用してインストール全体のプルーナーを設定し、namespace のアノテーションを使用して namespace の設定を変更できます。ただし、namespace で個々のタスク実行とパイプライン実行を選択的に自動プルーニングすることはできません。
3.11.9.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 * * *" # ...
表3.18 プルーナー設定でサポートされているパラメーター
パラメーター | 説明 |
---|---|
| プルーナープロセスを実行するための Cron スケジュール。デフォルトのスケジュールでは、プロセスは毎日 08:00 に実行されます。Cron スケジュール構文の詳細は、Kubernetes ドキュメントの Cron schedule syntax を参照してください。 |
|
プルーナーが適用されるリソースのタイプ。使用可能なリソースの種類は、 |
| 保持するすべてのタイプの最新のリソースの数。 |
|
|
|
リソースを保持する最大時間 (分単位)。たとえば、6 日以上前に作成されたリソースを保持するには、 |
keep
パラメーターと keep-since
パラメーターは相互に排他的です。設定ではそのうちの 1 つだけを使用してください。
3.11.9.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 # ...