4.10. TektonConfig カスタムリソース設定のカスタマイズ
Red Hat OpenShift Pipelines では、TektonConfig
カスタムリソース (CR) を使用して以下の設定をカスタマイズできます。
- Red Hat OpenShift Pipelines コントロールプレーンの設定
- デフォルトサービスアカウントの変更
- サービスモニターの無効化
- クラスタータスクとパイプラインテンプレートの無効化
- Tekton Hub 統合の無効化
- RBAC リソースの自動作成の無効化
- タスク実行とパイプライン実行のプルーニング
4.10.1. 前提条件
- Red Hat OpenShift Pipelines Operator がインストールされている。
4.10.2. Red Hat OpenShift Pipelines コントロールプレーンの設定
TektonConfig
カスタムリソース (CR) の設定フィールドを編集して、Pipelines コントロールプレーンをカスタマイズできます。Red Hat OpenShift Pipelines Operator は設定フィールドにデフォルト値を自動的に追加し、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 embedded-status: both enable-api-fields: stable enable-provenance-in-status: false enable-custom-tasks: true disable-creds-init: false disable-affinity-assistant: true
4.10.2.1. デフォルト値が適用された変更可能フィールド
次のリストには、デフォルト値が適用された TektonConfig
CR の変更可能フィールドがすべて含まれています。
running-in-environment-with-injected-sidecars
(デフォルト:true
): Istio などの注入済みサイドカーを使用しないクラスターでパイプラインを実行する場合は、このフィールドをfalse
に設定します。false
に設定すると、パイプラインがタスク実行を開始するまでにかかる時間が短縮されます。注記注入されたサイドカーを使用するクラスターの場合、このフィールドを
false
に設定すると、予期しない動作が発生する可能性があります。-
await-sidecar-readiness
(デフォルト:true
):TaskRun
サイドカーコンテナーの実行を待たずに Pipelines が動作を開始するようにするには、このフィールドを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 バンドルという名前の実験的アルファ機能の使用が可能になります。 embedded-status
(デフォルト:Both
): このフィールドには、次の 3 つの値を使用できます。-
full
:PipelineRun
ステータスにRun
ステータスとTaskRun
ステータスを完全に埋め込めます。 -
minimal
:ChildReferences
フィールドに、ステータスが PipelineRun` の実行とタスク実行の情報 (名前、種類、API バージョンなど) を追加します。 both
:full
とminimal
の両方の値が適用されます。注記embedded-status
フィールドは非推奨となり、将来のリリースで削除される予定です。さらに、パイプラインにデフォルトで埋め込まれるステータスは、minimal
に変更されます。
-
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
): 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
です。
4.10.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
: このフィールドには、何も指定されていない場合の、マトリクスから生成される組み合わせの最大数のデフォルト値が含まれます。
4.10.3. Pipelines のデフォルトサービスアカウントの変更
Pipeline のデフォルトサービスアカウントは、.spec.pipeline
および .spec.trigger
仕様の default-service-account
フィールドを編集して変更できます。デフォルトのサービスアカウントの名前は pipeline
です。
例
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
4.10.4. サービスモニターの無効化
Pipeline の一部であるサービスモニターを無効にして、Telemetry データを公開できます。サービスモニターを無効にするには、TektonConfig
カスタムリソース (CR) の .spec.pipeline
仕様で enableMetrics
パラメーターを false
に設定します。
例
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: pipeline: params: - name: enableMetrics value: 'false'
4.10.5. クラスタータスクとパイプラインテンプレートの無効化
デフォルトでは、TektonAddon
カスタムリソース (CR) は、クラスター上の Pipeline と併せて clusterTasks
および pipelineTemplates
リソースをインストールします。
clusterTasks
および pipelineTemplates
リソースのインストールを無効にするには、.spec.addon
仕様でパラメーターの値を false
に設定します。さらに、communityClusterTasks
パラメーターも無効にできます。
例
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'
4.10.6. 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
4.10.7. 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 リソースを手動で作成する必要があります。
4.10.8. タスク実行とパイプライン実行の自動プルーニング
古い TaskRun
オブジェクトと PipelineRun
オブジェクト、およびそれらの実行されたインスタンスは、アクティブな実行に使用できる物理リソースを占有します。リソースの使用を最適化するために、Red Hat OpenShift Pipelines は、クラスター管理者がさまざまな namespace で未使用のオブジェクトとそのインスタンスを自動的にプルーニングするために使用できるアノテーションを提供します。
アノテーションを指定して自動プルーニングを設定すると、namespace 全体に影響します。namespace で個々のタスク実行とパイプライン実行を選択的に自動プルーニングすることはできません。
4.10.8.1. タスク実行とパイプライン実行を自動的にプルーニングするためのアノテーション
namespace でタスク実行とパイプライン実行を自動的にプルーニングするには、namespace で以下のアノテーションを設定できます。
-
operator.tekton.dev/prune.schedule
: このアノテーションの値がTektonConfig
カスタムリソース定義で指定された値と異なる場合には、その namespace に新規の cron ジョブが作成されます。 -
operator.tekton.dev/prune.skip
:true
に設定されている場合、それが設定されている namespace はプルーニングされません。 -
operator.tekton.dev/prune.resources
: このアノテーションではリソースのコンマ区切りの一覧を使用できます。パイプライン実行などの単一リソースをプルーニングするには、このアノテーションをpipelinerun
に設定します。task run や pipeline run などの複数のリソースをプルーニングするには、このアノテーションを"taskrun, pipelinerun"
に設定します。 -
operator.tekton.dev/prune.keep
: このアノテーションを使用して、プルーニングなしでリソースを保持します。 operator.tekton.dev/prune.keep-since
: このアノテーションを使用して、経過時間をもとにリソースを保持します。このアノテーションの値は、リソースの経過時間 (分単位) と等しくなければなりません。たとえば、6 日以上前に作成されたリソースを保持するには、keep-since
を7200
に設定します。注記keep
およびkeep-since
アノテーションは同時に使用できません。リソースには、どちらか 1 つだけを使用する必要があります。-
operator.tekton.dev/prune.strategy
: このアノテーションの値をkeep
またはkeep-since
のいずれかに設定します。
たとえば、過去 5 日間に作成されたすべてのタスク実行とパイプライン実行を保持し、古いリソースを削除する次のアノテーションについて考えてみます。
自動プルーニングアノテーションの例
... annotations: operator.tekton.dev/prune.resources: "taskrun, pipelinerun" operator.tekton.dev/prune.keep-since: 7200 ...