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

手順

  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
        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): このフィールドを設定すると、どの機能が有効になるかが決まります。使用できる値はは 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): OpenShift 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 です。

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 プルーナー設定でサポートされているパラメーター

パラメーター説明

schedule

プルーナープロセスを実行するための Cron スケジュール。デフォルトのスケジュールでは、プロセスは毎日 08:00 に実行されます。Cron スケジュール構文の詳細は、Kubernetes ドキュメントの Cron schedule syntax を参照してください。

resources

プルーナーが適用されるリソースのタイプ。使用可能なリソースの種類は、taskrunPipelinerun です。

keep

保持するすべてのタイプの最新のリソースの数。

prune-per-resource

false に設定した場合、keep パラメーターの値はタスク実行またはパイプライン実行の合計数を示します。たとえば、keep100 に設定されている場合、プルーナーは最新のタスク実行 100 件と最新のパイプライン実行 100 件を保持し、他のすべてのリソースを削除します。

true に設定すると、keep パラメーターの値は、各パイプラインを参照するパイプライン実行と、各タスクを参照するタスク実行に対して個別に計算されます。たとえば、keep100 に設定されている場合、プルーナーは Pipeline1 の最新のパイプライン実行 100 件、Pipeline2 の最新のパイプライン実行 100 件、Task1 の最新のタスク実行 100 件などを保持し、他のすべてのリソースを削除します。

keep-since

リソースを保持する最大時間 (分単位)。たとえば、6 日以上前に作成されたリソースを保持するには、keep-since7200 に設定します。

注記

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

3.11.10. 関連情報