3.8. リゾルバーを使用したリモートパイプラインとタスクの指定

パイプラインとタスクは、CI/CD プロセスの再利用可能なブロックです。以前に開発したパイプラインやタスク、または他の人が開発したパイプラインやタスクを、定義をコピーして貼り付けることなく再利用できます。これらのパイプラインまたはタスクは、クラスター上の他の namespace からパブリックカタログに至るまで、いくつかの種類のソースから利用できます。

パイプライン実行リソースでは、既存のソースからパイプラインを指定できます。パイプラインリソースまたはタスク実行リソースでは、既存のソースからタスクを指定できます。

このような場合、Red Hat OpenShift Pipelines の リゾルバー は、実行時に指定されたソースからパイプラインまたはタスク定義を取得します。

以下のリゾルバーは、Red Hat OpenShift Pipelines のデフォルトのインストールで使用できます。

ハブリゾルバー
Artifact Hub または Tekton Hub で利用可能な Pipelines Catalog からタスクまたはパイプラインを取得します。
バンドルリゾルバー
Tekton バンドルからタスクまたはパイプラインを取得します。Tekton バンドルは、OpenShift コンテナーリポジトリーなどの任意の OCI リポジトリーから利用できる OCI イメージです。
クラスターリゾルバー
特定の namespace の同じ OpenShift Container Platform クラスター上にすでに作成されているタスクまたはパイプラインを取得します。
Git リゾルバー
Git リポジトリーからタスクまたはパイプラインバインディングを取得します。リポジトリー、ブランチ、パスを指定する必要があります。

3.8.1. Tekton カタログからのリモートパイプラインまたはタスクの指定

ハブリゾルバーを使用して、Artifact Hub のパブリック Tekton カタログまたは Tekton Hub のインスタンスで定義されたリモートパイプラインまたはタスクを指定できます。

重要

Artifact Hub プロジェクトは、Red Hat OpenShift Pipelines ではサポートされていません。Artifact Hub の設定のみがサポートされます。

3.8.1.1. ハブリゾルバーの設定

ハブリゾルバーを設定することで、リソースをプルするためのデフォルトのハブとデフォルトのカタログ設定を変更できます。

手順

  1. TektonConfig カスタムリソースを編集するには、次のコマンドを入力します。

    $ oc edit TektonConfig config
  2. TektonConfig カスタムリソースで、pipeline.hub-resolver-config 仕様を編集します。

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      pipeline:
        hub-resolver-config:
          default-tekton-hub-catalog: Tekton 1
          default-artifact-hub-task-catalog: tekton-catalog-tasks 2
          default-artifact-hub-pipeline-catalog: tekton-catalog-pipelines 3
          defailt-kind: pipeline 4
          default-type: tekton 5
          tekton-hub-api: "https://my-custom-tekton-hub.example.com" 6
          artifact-hub-api: "https://my-custom-artifact-hub.example.com" 7
    1
    リソースをプルするためのデフォルトの Tekton Hub カタログ。
    2
    タスクリソースをプルするためのデフォルトの Artifact Hub カタログ。
    3
    パイプラインリソースをプルするためのデフォルトの Artifact Hub カタログ。
    4
    参照のデフォルトのオブジェクトの種類。
    5
    リソースをプルするためのデフォルトのハブ。Artifact Hub の場合は artifact、Tekton Hub の場合は tekton
    6
    default-type オプションが tekton に設定されている場合に使用される Tekton Hub API。
    7
    オプション: default-type オプションが artifact に設定されている場合に使用される Artifact Hub API。
    重要

    default-type オプションを tekton に設定する場合は、tekton-hub-api 値を設定して Tekton Hub の独自のインスタンスを設定する必要があります。

    default-type オプションを artifact に設定すると、リゾルバーはデフォルトで https://artifacthub.io/ のパブリックハブ API を使用します。artifact-hub-api 値を設定することで、独自の Artifact Hub API を設定できます。

3.8.1.2. ハブリゾルバーを使用したリモートパイプラインまたはタスクの指定

パイプライン実行を作成するときに、Artifact Hub または Tekton Hub からリモートパイプラインを指定できます。パイプラインまたはタスク実行を作成するときに、Artifact Hub または Tekton Hub からリモートタスクを指定できます。

手順

  • Artifact Hub または Tekton Hub からリモートパイプラインまたはタスクを指定するには、pipelineRef または taskRef 仕様で次の参照形式を使用します。

    # ...
      resolver: hub
      params:
      - name: catalog
        value: <catalog>
      - name: type
        value: <catalog_type>
      - name: kind
        value: [pipeline|task]
      - name: name
        value: <resource_name>
      - name: version
        value: <resource_version>
    # ...

    表3.8 ハブリゾルバーでサポートされるパラメーター

    パラメーター説明値の例

    catalog

    リソースを取得するためのカタログ。

    デフォルト: tekton-catalog-tasks (task の種類)。tekton-catalog-pipelines (pipeline の種類の場合)。

    type

    リソースをプルするカタログのタイプ。Artifact Hub の場合は Artifact、Tekton Hub の場合は tekton のいずれかです。

    デフォルト: artifact

    kind

    task または pipeline のいずれか。

    デフォルト: task

    name

    ハブから取得するタスクまたはパイプラインの名前。

    golang-build

    version

    ハブから取得するタスクまたはパイプラインのバージョン。数値を引用符 (") で囲む必要があります。

    "0.5.0"

    パイプラインまたはタスクに追加のパラメーターが必要な場合は、これらのパラメーターを params に指定します。

次のパイプライン実行の例では、カタログからリモートパイプラインを参照します。

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  name: hub-pipeline-reference-demo
spec:
  pipelineRef:
    resolver: hub
    params:
    - name: catalog
      value: tekton-catalog-pipelines
    - name: type
      value: artifact
    - name: kind
      value: pipeline
    - name: name
      value: example-pipeline
    - name: version
      value: "0.1"
    - name: sample-pipeline-parameter
      value: test

次のパイプラインの例は、カタログからリモートタスクを参照します。

apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
  name: pipeline-with-cluster-task-reference-demo
spec:
  tasks:
  - name: "cluster-task-reference-demo"
    taskRef:
      resolver: hub
      params:
      - name: catalog
        value: tekton-catalog-tasks
      - name: type
        value: artifact
      - name: kind
        value: task
      - name: name
        value: example-task
      - name: version
        value: "0.6"
      - name: sample-task-parameter
        value: test

次のタスク実行例では、カタログからリモートタスクを参照します。

apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
  name: cluster-task-reference-demo
spec:
  taskRef:
    resolver: hub
    params:
    - name: catalog
      value: tekton-catalog-tasks
    - name: type
      value: artifact
    - name: kind
      value: task
    - name: name
      value: example-task
    - name: version
      value: "0.6"
    - name: sample-task-parameter
      value: test

3.8.2. Tekton バンドルからのリモートパイプラインまたはタスクの指定

バンドルリゾルバーを使用して、Tekton バンドルからリモートパイプラインまたはタスクを指定できます。Tekton バンドルは、OpenShift コンテナーリポジトリーなどの任意の OCI リポジトリーから利用できる OCI イメージです。

3.8.2.1. バンドルリゾルバーの設定

バンドルリゾルバーを設定することで、Tekton バンドルからリソースを取得するためのデフォルトのサービスアカウント名とデフォルトの種類を変更できます。

手順

  1. TektonConfig カスタムリソースを編集するには、次のコマンドを入力します。

    $ oc edit TektonConfig config
  2. TektonConfig カスタムリソースで、pipeline.bundles-resolver-config 仕様を編集します。

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      pipeline:
        bundles-resolver-config:
          default-service-account: pipelines 1
          default-kind: task 2
    1
    バンドルリクエストに使用するデフォルトのサービスアカウント名。
    2
    バンドルイメージのデフォルトレイヤーの種類。

3.8.2.2. バンドルリゾルバーを使用したリモートパイプラインまたはタスクの指定

パイプライン実行を作成するときに、Tekton バンドルからリモートパイプラインを指定できます。パイプラインまたはタスク実行を作成するときに、Tekton バンドルからリモートタスクを指定できます。

手順

  • Tekton バンドルからリモートパイプラインまたはタスクを指定するには、pipelineRef または taskRef 仕様で次の参照形式を使用します。

    # ...
      resolver: bundles
      params:
      - name: bundle
        value: <fully_qualified_image_name>
      - name: name
        value: <resource_name>
      - name: kind
        value: [pipeline|task]
    # ...

    表3.9 バンドルリゾルバーでサポートされているパラメーター

    パラメーター説明値の例

    serviceAccount

    レジストリー認証情報を作成するときに使用するサービスアカウントの名前。

    default

    bundle

    取得するイメージを指すバンドル URL。

    gcr.io/tekton-releases/catalog/upstream/golang-build:0.1

    name

    バンドルから取り出すリソースの名前。

    golang-build

    kind

    バンドルから取り出すリソースの種類。

    task

    パイプラインまたはタスクに追加のパラメーターが必要な場合は、これらのパラメーターを params に指定します。

次のパイプライン実行の例は、Tekton バンドルからのリモートパイプラインを参照します。

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  name: bundle-pipeline-reference-demo
spec:
  pipelineRef:
    resolver: bundles
    params:
    - name: bundle
      value: registry.example.com:5000/simple/pipeline:latest
    - name: name
      value: hello-pipeline
    - name: kind
      value: pipeline
    - name: sample-pipeline-parameter
      value: test
  params:
  - name: username
    value: "pipelines"

次のパイプラインの例は、Tekton バンドルからのリモートタスクを参照します。

apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
  name: pipeline-with-bundle-task-reference-demo
spec:
  tasks:
  - name: "bundle-task-demo"
    taskRef:
      resolver: bundles
      params:
      - name: bundle
        value: registry.example.com:5000/advanced/task:latest
      - name: name
        value: hello-world
      - name: kind
        value: task
      - name: sample-task-parameter
        value: test

次のタスク実行例では、Tekton バンドルのリモートタスクを参照しています。

apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
  name: bundle-task-reference-demo
spec:
  taskRef:
    resolver: bundles
    params:
    - name: bundle
      value: registry.example.com:5000/simple/new_task:latest
    - name: name
      value: hello-world
    - name: kind
      value: task
    - name: sample-task-parameter
      value: test

3.8.3. 同じクラスターからのリモートパイプラインまたはタスクの指定

クラスターリゾルバーを使用して、Red Hat OpenShift Pipelines が実行している OpenShift Container Platform クラスター上の namespace で定義されているリモートパイプラインまたはタスクを指定できます。

3.8.3.1. クラスターリゾルバーの設定

クラスターリゾルバーのデフォルトの種類と namesspace を変更したり、クラスターリゾルバーが使用できる名前空間を制限したりできます。

手順

  1. TektonConfig カスタムリソースを編集するには、次のコマンドを入力します。

    $ oc edit TektonConfig config
  2. TektonConfig カスタムリソースで、pipeline.cluster-resolver-config 仕様を編集します。

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      pipeline:
        cluster-resolver-config:
          default-kind: pipeline 1
          default-namespace: namespace1 2
          allowed-namespaces: namespace1, namespace2 3
          blocked-namespaces: namespace3, namespace4 4
    1
    パラメーターで指定されていない場合は、フェッチするデフォルトのリソースの種類。
    2
    パラメーターで指定されていない場合、リソースを取得するためのデフォルトの namespace。
    3
    リゾルバーがアクセスを許可される namespace のコンマ区切りのリスト。このキーが定義されていない場合は、すべての namespace が許可されます。
    4
    リゾルバーがアクセスをブロックされる namespace のオプションのコンマ区切りのリスト。このキーが定義されていない場合は、すべての namespace が許可されます。

3.8.3.2. クラスターリゾルバーを使用したリモートパイプラインまたはタスクの指定

パイプライン実行を作成するときに、同じクラスターからのリモートパイプラインを指定できます。パイプラインまたはタスク実行を作成するときに、同じクラスターからリモートタスクを指定できます。

手順

  • 同じクラスターからリモートパイプラインまたはタスクを指定するには、pipelineRef または taskRef 仕様で以下の参照形式を使用します。

    # ...
      resolver: cluster
      params:
      - name: name
        value: <name>
      - name: namespace
        value: <namespace>
      - name: kind
        value: [pipeline|task]
    # ...

    表3.10 クラスターリゾルバーでサポートされているパラメーター

    パラメーター説明値の例

    name

    取得するリソースの名前。

    some-pipeline

    namespace

    リソースを含むクラスター内の名前空間。

    other-namespace

    kind

    取得するリソースの種類。

    パイプライン

    パイプラインまたはタスクに追加のパラメーターが必要な場合は、これらのパラメーターを params に指定します。

次のパイプライン実行の例は、同じクラスターからのリモートパイプラインを参照します。

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  name: cluster-pipeline-reference-demo
spec:
  pipelineRef:
    resolver: cluster
    params:
    - name: name
      value: some-pipeline
    - name: namespace
      value: test-namespace
    - name: kind
      value: pipeline
    - name: sample-pipeline-parameter
      value: test

次のパイプラインの例は、同じクラスターのリモートタスクを参照します。

apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
  name: pipeline-with-cluster-task-reference-demo
spec:
  tasks:
  - name: "cluster-task-reference-demo"
    taskRef:
      resolver: cluster
      params:
      - name: name
        value: some-task
      - name: namespace
        value: test-namespace
      - name: kind
        value: task
      - name: sample-task-parameter
        value: test

次のタスク実行例では、同じクラスターのリモートタスクを参照しています。

apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
  name: cluster-task-reference-demo
spec:
  taskRef:
    resolver: cluster
    params:
    - name: name
      value: some-task
    - name: namespace
      value: test-namespace
    - name: kind
      value: task
    - name: sample-task-parameter
      value: test

3.8.4. Git リポジトリーからのリモートパイプラインまたはタスクの指定

Git リゾルバーを使用して、Git リポジトリーからリモートパイプラインまたはタスクを指定できます。リポジトリーには、パイプラインまたはタスクを定義する YAML ファイルが含まれている必要があります。Git リゾルバーは、匿名でクローンを作成するか、認証された SCM API を使用してリポジトリーにアクセスできます。

3.8.4.1. 匿名 Git クローン作成用の Git リゾルバーの設定

匿名 Git クローン作成を使用する場合は、Git リポジトリーからリモートパイプラインとタスクをプルするためのデフォルトの Git リビジョン、フェッチタイムアウト、およびデフォルトのリポジトリー URL を設定できます。

手順

  1. TektonConfig カスタムリソースを編集するには、次のコマンドを入力します。

    $ oc edit TektonConfig config
  2. TektonConfig カスタムリソースで、pipeline.git-resolver-config 仕様を編集します。

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      pipeline:
        git-resolver-config:
          default-revision: main 1
          fetch-timeout: 1m 2
          default-url: https://github.com/tektoncd/catalog.git 3
    1
    何も指定されていない場合に使用するデフォルトの Git リビジョン。
    2
    単一の Git クローン解決にかかる最大時間は、たとえば、1m2s700ms です。Red Hat OpenShift Pipelines は、すべての解決リクエストに対して 1 分のグローバル最大タイムアウトも適用します。
    3
    何も指定されていない場合、匿名クローン作成用のデフォルトの Git リポジトリー URL。

3.8.4.2. 認証された SCM API の Git リゾルバーの設定

認証された SCM API の場合、認証された Git 接続の設定を設定する必要があります。

go-scm ライブラリーでサポートされている Git リポジトリープロバイダーを使用できます。すべての go-scm 実装が Git リゾルバーでテストされているわけではありませんが、次のプロバイダーが動作することが確認されています。

  • GitHub.com および GitHub Enterprise
  • GitLab.com およびセルフホスト Gitlab
  • Gitea
  • BitBucket Server
  • BitBucket Cloud
注記
  • クラスターの認証済み SCM API を使用して設定できる Git 接続は 1 つだけです。この接続は、クラスターのすべてのユーザーが利用できるようになります。クラスターのすべてのユーザーは、接続用に設定したセキュリティートークンを使用してリポジトリーにアクセスできます。
  • 認証された SCM API を使用するように Git リゾルバーを設定すると、匿名の Git クローン参照を使用してパイプラインとタスクを取得することもできます。

手順

  1. TektonConfig カスタムリソースを編集するには、次のコマンドを入力します。

    $ oc edit TektonConfig config
  2. TektonConfig カスタムリソースで、pipeline.git-resolver-config 仕様を編集します。

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      pipeline:
        git-resolver-config:
          default-revision: main 1
          fetch-timeout: 1m 2
          scm-type: github 3
          server-url: api.internal-github.com 4
          api-token-secret-name: github-auth-secret 5
          api-token-secret-key: github-auth-key 6
          api-token-secret-namespace: github-auth-namespace 7
          default-org: tektoncd 8
    1
    何も指定されていない場合に使用するデフォルトの Git リビジョン。
    2
    単一の Git クローン解決にかかる最大時間は、たとえば、1m2s700ms です。Red Hat OpenShift Pipelines は、すべての解決リクエストに対して 1 分のグローバル最大タイムアウトも適用します。
    3
    SCM プロバイダーのタイプ。
    4
    認証された SCM API で使用するベース URL。github.comgitlab.com、または BitBucket Cloud を使用している場合、この設定は必要ありません。
    5
    SCM プロバイダー API トークンを含むシークレットの名前。
    6
    トークンを含むトークンシークレット内のキー。
    7
    トークンシークレットを含む名前空間 (default でない場合)。
    8
    オプション: 認証された API を使用する場合のリポジトリーのデフォルトの組織。この組織は、リゾルバーパラメーターで組織を指定しない場合に使用されます。
注記

認証された SCM API を使用するには、scm-typeapi-token-secret-name、および api-token-secret-key 設定が必要です。

3.8.4.3. Git リゾルバーを使用したリモートパイプラインまたはタスクの指定

パイプライン実行を作成するときに、Git リポジトリーからリモートパイプラインを指定できます。パイプラインまたはタスク実行を作成するときに、Git リポジトリーからリモートタスクを指定できます。

前提条件

  • 認証された SCM API を使用する場合は、Git リゾルバーに対して認証された Git 接続を設定する必要があります。

手順

  1. Git リポジトリーからリモートパイプラインまたはタスクを指定するには、pipelineRef または taskRef 仕様で次の参照形式を使用します。

    # ...
      resolver: git
      params:
      - name: url
        value: <git_repository_url>
      - name: revision
        value: <branch_name>
      - name: pathInRepo
        value: <path_in_repository>
    # ...

    表3.11 Git リゾルバーでサポートされているパラメーター

    パラメーター説明値の例

    url

    匿名クローン作成を使用する場合のリポジトリーの URL。

    https://github.com/tektoncd/catalog.git

    repo

    認証された SCM API を使用する場合のリポジトリー名。

    test-infra

    org

    認証された SCM API を使用する場合のリポジトリーの組織。

    tektoncd

    revision

    リポジトリー内の Git リビジョン。ブランチ名、タグ名、またはコミット SHA ハッシュを指定できます。

    aeb957601cf41c012be462827053a21a420befca
    main
    v0.38.2

    pathInRepo

    リポジトリー内の YAML ファイルのパス名。

    task/golang-build/0.3/golang-build.yaml

    注記

    リポジトリーのクローンを作成して匿名で取得するには、url パラメーターを使用します。認証された SCM API を使用するには、repo パラメーターを使用します。url パラメーターと repo パラメーターを同時に指定しないでください。

    パイプラインまたはタスクに追加のパラメーターが必要な場合は、これらのパラメーターを params に指定します。

次のパイプライン実行の例では、Git リポジトリーからリモートパイプラインを参照します。

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  name: git-pipeline-reference-demo
spec:
  pipelineRef:
    resolver: git
    params:
    - name: url
      value: https://github.com/tektoncd/catalog.git
    - name: revision
      value: main
    - name: pathInRepo
      value: pipeline/simple/0.1/simple.yaml
    - name: sample-pipeline-parameter
      value: test
  params:
  - name: name
    value: "testPipelineRun"

次のパイプラインの例では、Git リポジトリーからリモートタスクを参照します。

apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
  name: pipeline-with-git-task-reference-demo
spec:
  tasks:
  - name: "git-task-reference-demo"
    taskRef:
      resolver: git
      params:
      - name: url
        value: https://github.com/tektoncd/catalog.git
      - name: revision
        value: main
      - name: pathInRepo
        value: task/git-clone/0.6/git-clone.yaml
      - name: sample-task-parameter
        value: test

次のタスク実行例では、Git リポジトリーからリモートタスクを参照します。

apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
  name: git-task-reference-demo
spec:
  taskRef:
    resolver: git
    params:
    - name: url
      value: https://github.com/tektoncd/catalog.git
    - name: revision
      value: main
    - name: pathInRepo
      value: task/git-clone/0.6/git-clone.yaml
    - name: sample-task-parameter
      value: test

3.8.5. 関連情報