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 コントロールプレーンを使用可能な状態にします。

手順

  1. Web コンソールの Administrator パースペクティブで、AdministrationCustomResourceDefinitions に移動します。
  2. Search by name ボックスを使用して、tektonconfigs.operator.tekton.dev カスタムリソース定義 (CRD) を検索します。TektonConfig をクリックし、CRD の詳細ページを表示します。
  3. Instances タブをクリックします。
  4. config インスタンスをクリックして、TektonConfig CR の詳細を表示します。
  5. YAML タブをクリックします。
  6. 要件に応じて 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: fullminimal の両方の値が適用されます。

      注記

      embedded-status フィールドは非推奨となり、将来のリリースで削除される予定です。さらに、パイプラインにデフォルトで埋め込まれるステータスは、minimal に変更されます。

  • Enable-api-fields (デフォルト: stable): このフィールドを設定すると、どの機能が有効になるかが決まります。使用できる値はは stablebeta、または 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-typemetrics.pipelinerun.duration-type (デフォルト: histogram): これらのフィールドを設定すると、タスクまたはパイプライン実行の期間のタイプが決まります。使用できる値は、gauge または histogram です。
  • metrics.taskrun.level (デフォルト: task): このフィールドにより、タスク実行メトリクスのレベルが決まります。使用できる値は、taskruntask、または namespace です。
  • metrics.pipelinerun.level (デフォルト: Pipeline): このフィールドにより、パイプライン実行メトリクスのレベルが決まります。使用できる値は、pipelinerunpipeline、または 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-since7200 に設定します。

    注記

    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
...

4.10.9. 関連情報