3.10. TektonConfig カスタムリソース設定のカスタマイズ
Red Hat OpenShift Pipelines では、TektonConfig カスタムリソース (CR) を使用して以下の設定をカスタマイズできます。
- Red Hat OpenShift Pipelines コントロールプレーンの設定
- デフォルトサービスアカウントの変更
- サービスモニターの無効化
- パイプラインリゾルバーの設定
- クラスタータスクとパイプラインテンプレートの無効化
- Tekton Hub 統合の無効化
- RBAC リソースの自動作成の無効化
- タスク実行とパイプライン実行のプルーニング
3.10.1. 前提条件
- Red Hat OpenShift Pipelines Operator がインストールされている。
3.10.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 インスタンスをクリックして、
TektonConfigCR の詳細を表示します。 - YAML タブをクリックします。
要件に応じて
TektonConfigYAML ファイルを編集します。デフォルト値が適用された
TektonConfigCR の例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
3.10.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 バンドルという名前の実験的アルファ機能の使用が可能になります。 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): 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.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ラベルに指定されたデフォルト値が含まれます。このデフォルト値は、何も指定されていない場合にすべてのTaskRunPod に適用されます。たとえば、default-managed-by-label-value: tekton-pipelinesです。 -
default-pod-template: このフィールドは、指定されていない場合にデフォルトのTaskRunおよびPipelineRunPod テンプレートを設定します。 -
default-cloud-events-sink: このフィールドは、何も指定されていない場合に、TaskRunおよびPipelineRunリソースに使用されるデフォルトのCloudEventsシンクを設定します。 -
default-task-run-workspace-binding: このフィールドには、Taskリソースが宣言するワークスペースのデフォルトワークスペース設定が含まれますが、TaskRunリソースは明示的に宣言されません。 -
default-affinity-assistant-pod-template: このフィールドは、何も指定されていない場合にアフィニティーアシスタント Pod が使用するデフォルトのPipelineRunPod テンプレートを設定します。 -
default-max-matrix-combinations-count: このフィールドには、何も指定されていない場合の、マトリクスから生成される組み合わせの最大数のデフォルト値が含まれます。
3.10.3. OpenShift Pipelines のデフォルトサービスアカウントの変更
OpenShift 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
3.10.4. サービスモニターの無効化
OpenShift 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'
3.10.5. パイプラインリゾルバーの設定
リゾルバーはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
パイプラインリゾルバーは、TektonConfig カスタムリソース (CR) で設定できます。パイプラインリゾルバーは、有効または無効にできます。
-
enable-bundles-resolver -
enable-cluster-resolver -
enable-git-resolver -
enable-hub-resolver
例
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 形式で以下のフィールドを定義し、各パイプラインリゾルバーを設定できます。
例
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.10.6. クラスタータスクとパイプラインテンプレートの無効化
デフォルトでは、TektonAddon カスタムリソース (CR) は、クラスター上の OpenShift 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'
3.10.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.10.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.10.9. タスク実行とパイプライン実行の自動プルーニング
古い TaskRun オブジェクトと PipelineRun オブジェクト、およびそれらの実行されたインスタンスは、アクティブな実行に使用できる物理リソースを占有します。リソースの使用を最適化するために、Red Hat OpenShift Pipelines は、クラスター管理者がさまざまな namespace で未使用のオブジェクトとそのインスタンスを自動的にプルーニングするために使用できるアノテーションを提供します。
アノテーションを指定して自動プルーニングを設定すると、namespace 全体に影響します。namespace で個々のタスク実行とパイプライン実行を選択的に自動プルーニングすることはできません。
3.10.9.1. デフォルトのプルーナー設定
パイプラインの実行に関連付けられたリソースの定期的なプルーニングのデフォルト設定は次のとおりです。
デフォルト設定の例
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
...
spec:
pruner:
keep: 100
resources:
- pipelinerun
schedule: 0 8 * * *
...
namespace の注釈を使用して、namespace のデフォルトのプルーナー設定をオーバーライドできます。
3.10.9.2. タスク実行とパイプライン実行を自動的にプルーニングするためのアノテーション
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
...