3.8. 해결자를 사용하여 원격 파이프라인 및 작업 지정

파이프라인 및 작업은 CI/CD 프로세스에 재사용 가능한 블록입니다. 이전에 개발했거나 다른 사용자가 개발한 파이프라인 또는 작업을 재사용하여 정의를 복사하여 붙여넣을 필요 없이 재사용할 수 있습니다. 이러한 파이프라인 또는 작업은 클러스터의 다른 네임스페이스에서 공용 카탈로그에 이르기까지 여러 유형의 소스에서 사용할 수 있습니다.

파이프라인 실행 리소스에서 기존 소스의 파이프라인을 지정할 수 있습니다. 파이프라인 리소스 또는 작업 실행 리소스에서 기존 소스의 작업을 지정할 수 있습니다.

이러한 경우 Red Hat OpenShift Pipelines 의 해결자는 런타임 시 지정된 소스에서 파이프라인 또는 작업 정의를 검색합니다.

다음 해결자는 Red Hat OpenShift Pipelines의 기본 설치 프로그램에서 사용할 수 있습니다.

hub resolver
Artifact Hub 또는 Tekton Hub에서 사용할 수 있는 Pipelines Catalog에서 작업 또는 파이프라인을 검색합니다.
bundles resolver
OpenShift 컨테이너 리포지토리와 같은 OCI 리포지토리에서 사용할 수 있는 OCI 이미지인 Tekton 번들에서 작업 또는 파이프라인을 검색합니다.
클러스터 확인자
특정 네임스페이스의 동일한 OpenShift Container Platform 클러스터에서 이미 생성된 작업 또는 파이프라인을 검색합니다.
git resolver
Git 리포지토리에서 작업 또는 파이프라인 바인딩을 검색합니다. 리포지토리, 분기 및 경로를 지정해야 합니다.

3.8.1. Tekton 카탈로그에서 원격 파이프라인 또는 작업 지정

hub resolver를 사용하여 Artifact Hub 의 공용 Tekton 카탈로그 또는 Tekton Hub 인스턴스에 정의된 원격 파이프라인 또는 작업을 지정할 수 있습니다.

중요

Artifact Hub 프로젝트는 Red Hat OpenShift Pipelines에서 지원되지 않습니다. Artifact Hub의 구성만 지원됩니다.

3.8.1.1. hub resolver 구성

hub resolver를 구성하여 리소스 가져오기에 대한 기본 허브와 기본 카탈로그 설정을 변경할 수 있습니다.

프로세스

  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의 아티팩트 또는 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. hub resolver를 사용하여 원격 파이프라인 또는 작업 지정

파이프라인 실행을 생성할 때 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. hub resolver에 대해 지원되는 매개변수

    매개변수설명예시 값

    catalog

    리소스를 가져올 카탈로그입니다.

    기본값: tekton-catalog-tasks ( 작업 종류용), tekton-catalog- pipeline s (파이너 종류용).

    type

    리소스를 가져오는 카탈로그 유형입니다. Artifact Hub의 아티팩트 또는 Tekton Hub의 tekton 중 하나입니다.

    기본값: artifact

    kind

    작업 또는 파이프라인 중 하나입니다.

    기본값: task

    name

    허브에서 가져올 작업 또는 파이프라인의 이름입니다.

    golang-build

    버전

    허브에서 가져올 작업 또는 파이프라인 버전입니다. 숫자 주위에 따옴표(')를 사용해야 합니다.

    "0.5.0"

    파이프라인 또는 작업에 추가 매개변수가 필요한 경우 이러한 매개변수를 매개변수에 제공합니다.

다음 예제 파이프라인 실행은 카탈로그의 원격 파이프라인을 참조합니다.

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 번들에서 원격 파이프라인 또는 작업 지정

bundles resolver를 사용하여 Tekton 번들에서 원격 파이프라인 또는 작업을 지정할 수 있습니다. Tekton 번들은 OpenShift 컨테이너 리포지토리와 같은 OCI 리포지토리에서 사용할 수 있는 OCI 이미지입니다.

3.8.2.1. 번들 확인 프로그램 구성

bundles 확인자를 구성하여 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. bundles resolver에서 지원되는 매개변수

    매개변수설명예시 값

    serviceAccount

    레지스트리 인증 정보를 구성할 때 사용할 서비스 계정의 이름입니다.

    default

    번들

    가져올 이미지를 가리키는 번들 URL입니다.

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

    name

    번들에서 가져올 리소스의 이름입니다.

    golang-build

    kind

    번들에서 제거할 리소스의 종류입니다.

    task

    파이프라인 또는 작업에 추가 매개변수가 필요한 경우 이러한 매개변수를 매개변수에 제공합니다.

다음 예제 파이프라인 실행은 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 클러스터의 네임스페이스에 정의된 원격 파이프라인 또는 작업을 지정할 수 있습니다.

3.8.3.1. 클러스터 확인 프로그램 구성

클러스터 확인자의 기본 종류 및 네임스페이스를 변경하거나 클러스터 확인자가 사용할 수 있는 네임스페이스를 제한할 수 있습니다.

프로세스

  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
    매개변수에 지정되지 않은 경우 리소스를 가져오는 기본 네임스페이스입니다.
    3
    확인자가 액세스할 수 있는 쉼표로 구분된 네임스페이스 목록입니다. 이 키가 정의되지 않은 경우 모든 네임스페이스가 허용됩니다.
    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-pipeline

    namespace

    리소스가 포함된 클러스터의 네임스페이스입니다.

    other-namespace

    kind

    가져올 리소스의 종류입니다.

    pipeline

    파이프라인 또는 작업에 추가 매개변수가 필요한 경우 이러한 매개변수를 매개변수에 제공합니다.

다음 예제 파이프라인 실행은 동일한 클러스터의 원격 파이프라인을 참조합니다.

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 repostory에서 원격 파이프라인 또는 작업을 지정할 수 있습니다. 리포지토리에는 파이프라인 또는 작업을 정의하는 YAML 파일이 포함되어야 합니다. Git 확인자는 Ansible을 복제하거나 인증된 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 복제 확인에 최대 시간이 걸릴 수 있습니다(예: 1m,2s,700ms ). 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 클라우드
참고
  • 클러스터에 대해 인증된 SCM API를 사용하여 하나의 Git 연결만 구성할 수 있습니다. 이 연결은 클러스터의 모든 사용자가 사용할 수 있게 됩니다. 클러스터의 모든 사용자는 연결에 대해 구성하는 보안 토큰을 사용하여 리포지토리에 액세스할 수 있습니다.
  • 인증된 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 복제 확인에 최대 시간이 걸릴 수 있습니다(예: 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
    토큰 시크릿이 포함된 네임스페이스가 기본값이 아닌 경우입니다.
    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 연결을 구성해야 합니다.

프로세스

  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

    리포지토리

    인증된 SCM API를 사용하는 경우 리포지토리 이름입니다.

    test-infra

    조직

    인증된 SCM API를 사용하는 경우 리포지토리의 조직입니다.

    tektoncd

    버전

    리포지토리의 Git 버전입니다. 분기 이름, 태그 이름 또는 커밋 SHA 해시를 지정할 수 있습니다.

    aeb957601cf41c012be462827053a21a420befca
    main
    v0.38.2

    pathInRepo

    리포지토리에 있는 YAML 파일의 경로 이름입니다.

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

    참고

    리포지토리를 복제 및 가져오려면 url 매개변수를 사용합니다. 인증된 SCM API를 사용하려면 repo 매개변수를 사용합니다. url 매개변수와 repo 매개변수를 함께 지정하지 마십시오.

    파이프라인 또는 작업에 추가 매개변수가 필요한 경우 이러한 매개변수를 매개변수에 제공합니다.

다음 예제 파이프라인 실행은 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. 추가 리소스