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. ハブリゾルバーの設定
ハブリゾルバーを設定することで、リソースをプルするためのデフォルトのハブとデフォルトのカタログ設定を変更できます。
手順
TektonConfigカスタムリソースを編集するには、次のコマンドを入力します。$ oc edit TektonConfig config
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のいずれかです。デフォルト:
artifactkindtaskまたはpipelineのいずれか。デフォルト:
tasknameハブから取得するタスクまたはパイプラインの名前。
golang-buildversionハブから取得するタスクまたはパイプラインのバージョン。数値を引用符 (
") で囲む必要があります。"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: test3.8.2. Tekton バンドルからのリモートパイプラインまたはタスクの指定
バンドルリゾルバーを使用して、Tekton バンドルからリモートパイプラインまたはタスクを指定できます。Tekton バンドルは、OpenShift コンテナーリポジトリーなどの任意の OCI リポジトリーから利用できる OCI イメージです。
3.8.2.1. バンドルリゾルバーの設定
バンドルリゾルバーを設定することで、Tekton バンドルからリソースを取得するためのデフォルトのサービスアカウント名とデフォルトの種類を変更できます。
手順
TektonConfigカスタムリソースを編集するには、次のコマンドを入力します。$ oc edit TektonConfig config
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
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レジストリー認証情報を作成するときに使用するサービスアカウントの名前。
defaultbundle取得するイメージを指すバンドル URL。
gcr.io/tekton-releases/catalog/upstream/golang-build:0.1nameバンドルから取り出すリソースの名前。
golang-buildkindバンドルから取り出すリソースの種類。
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: test3.8.3. 同じクラスターからのリモートパイプラインまたはタスクの指定
クラスターリゾルバーを使用して、Red Hat OpenShift Pipelines が実行している OpenShift Container Platform クラスター上の namespace で定義されているリモートパイプラインまたはタスクを指定できます。
3.8.3.1. クラスターリゾルバーの設定
クラスターリゾルバーのデフォルトの種類と namesspace を変更したり、クラスターリゾルバーが使用できる名前空間を制限したりできます。
手順
TektonConfigカスタムリソースを編集するには、次のコマンドを入力します。$ oc edit TektonConfig config
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
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-pipelinenamespaceリソースを含むクラスター内の名前空間。
other-namespacekind取得するリソースの種類。
パイプラインパイプラインまたはタスクに追加のパラメーターが必要な場合は、これらのパラメーターを
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: test3.8.4. Git リポジトリーからのリモートパイプラインまたはタスクの指定
Git リゾルバーを使用して、Git リポジトリーからリモートパイプラインまたはタスクを指定できます。リポジトリーには、パイプラインまたはタスクを定義する YAML ファイルが含まれている必要があります。Git リゾルバーは、匿名でクローンを作成するか、認証された SCM API を使用してリポジトリーにアクセスできます。
3.8.4.1. 匿名 Git クローン作成用の Git リゾルバーの設定
匿名 Git クローン作成を使用する場合は、Git リポジトリーからリモートパイプラインとタスクをプルするためのデフォルトの Git リビジョン、フェッチタイムアウト、およびデフォルトのリポジトリー URL を設定できます。
手順
TektonConfigカスタムリソースを編集するには、次のコマンドを入力します。$ oc edit TektonConfig config
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
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 クローン参照を使用してパイプラインとタスクを取得することもできます。
手順
TektonConfigカスタムリソースを編集するには、次のコマンドを入力します。$ oc edit TektonConfig config
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 クローン解決にかかる最大時間は、たとえば、
1m、2s、700msです。Red Hat OpenShift Pipelines は、すべての解決リクエストに対して 1 分のグローバル最大タイムアウトも適用します。 - 3
- SCM プロバイダーのタイプ。
- 4
- 認証された SCM API で使用するベース URL。
github.com、gitlab.com、または BitBucket Cloud を使用している場合、この設定は必要ありません。 - 5
- SCM プロバイダー API トークンを含むシークレットの名前。
- 6
- トークンを含むトークンシークレット内のキー。
- 7
- トークンシークレットを含む名前空間 (
defaultでない場合)。 - 8
- オプション: 認証された API を使用する場合のリポジトリーのデフォルトの組織。この組織は、リゾルバーパラメーターで組織を指定しない場合に使用されます。
認証された SCM API を使用するには、scm-type、api-token-secret-name、および api-token-secret-key 設定が必要です。
3.8.4.3. Git リゾルバーを使用したリモートパイプラインまたはタスクの指定
パイプライン実行を作成するときに、Git リポジトリーからリモートパイプラインを指定できます。パイプラインまたはタスク実行を作成するときに、Git リポジトリーからリモートタスクを指定できます。
前提条件
- 認証された SCM API を使用する場合は、Git リゾルバーに対して認証された Git 接続を設定する必要があります。
手順
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.gitrepo認証された SCM API を使用する場合のリポジトリー名。
test-infraorg認証された SCM API を使用する場合のリポジトリーの組織。
tektoncdrevisionリポジトリー内の Git リビジョン。ブランチ名、タグ名、またはコミット SHA ハッシュを指定できます。
aeb957601cf41c012be462827053a21a420befcamainv0.38.2pathInRepoリポジトリー内の 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