Skip to main content
Remote Resolution is a Tekton beta feature that allows you to fetch Tasks and Pipelines from remote sources outside the cluster. Tekton provides several built-in resolvers for fetching from git repositories, OCI registries, and more, as well as a framework for writing custom resolvers.

What are Resolvers?

A Resolver is a program that runs in a Kubernetes cluster alongside Tekton Pipelines and “resolves” requests for Tasks and Pipelines from remote locations. For example, if you submit a PipelineRun that needs a Pipeline YAML stored in a git repo, a Resolver fetches the YAML file from git and returns it to Tekton Pipelines. This pattern extends beyond just git, allowing integration with other version control systems, cloud buckets, or storage systems without modifying Tekton Pipelines itself.

Available Resolvers

Git Resolver

Fetch resources from git repositories using anonymous or authenticated access

Hub Resolver

Fetch resources from Artifact Hub or Tekton Hub catalogs

Bundle Resolver

Fetch resources from OCI bundles stored in container registries

Cluster Resolver

Fetch resources from within the same Kubernetes cluster

HTTP Resolver

Fetch resources from HTTP/HTTPS URLs

Custom Resolver

Build your own resolver for custom storage backends

Requirements

  • A cluster running Tekton Pipeline v0.41.0 or later
  • Built-in remote resolvers installed
  • Beta features enabled
  • Appropriate feature flags enabled in the resolvers-feature-flags ConfigMap

Enabling Resolvers

Resolvers are enabled by setting the appropriate feature flag in the resolvers-feature-flags ConfigMap in the tekton-pipelines-resolvers namespace:
apiVersion: v1
kind: ConfigMap
metadata:
  name: resolvers-feature-flags
  namespace: tekton-pipelines-resolvers
data:
  enable-git-resolver: "true"
  enable-hub-resolver: "true"
  enable-bundles-resolver: "true"
  enable-cluster-resolver: "true"
  enable-http-resolver: "true"

Default Resolver Type

You can configure a default resolver type using the default-resolver-type field in the config-defaults ConfigMap (alpha feature):
apiVersion: v1
kind: ConfigMap
metadata:
  name: config-defaults
  namespace: tekton-pipelines
data:
  default-resolver-type: "git"

Resolver Cache Configuration

The resolver cache improves performance by caching resolved resources for bundle and git resolvers. Configure caching globally using the resolver-cache-config ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
  name: resolver-cache-config
  namespace: tekton-pipelines-resolvers
data:
  max-size: "1000"  # Maximum cache entries
  default-ttl: "5m"  # Cache entry time-to-live

max-size

Maximum number of cache entries (default: 1000)

default-ttl

Time-to-live for cache entries (default: 5m)

How Resolution Works

When you reference a remote resource in a PipelineRun or TaskRun:
  1. Tekton creates a ResolutionRequest with the resolver type and parameters
  2. The appropriate resolver receives the request based on label matching
  3. The resolver fetches the resource from the remote location
  4. The resolver returns the resource data to Tekton Pipelines
  5. Tekton executes the Pipeline or Task

ResolutionRequest Status

Each resolved resource includes metadata in ResolutionRequest.Status.RefSource:
  • url/uri: The source location of the resource
  • digest: Hash of the resource content for verification
  • entrypoint: Path or name of the specific resource
This metadata enables supply chain security tools like Tekton Chains to record provenance information.

Getting Started

To start using resolvers, choose the resolver that matches your needs:
  • Use Git Resolver for resources in version control
  • Use Hub Resolver for community-maintained catalog resources
  • Use Bundle Resolver for OCI-bundled resources
  • Use Cluster Resolver for resources in the same cluster
  • Use HTTP Resolver for resources at HTTP/HTTPS URLs
  • Create a Custom Resolver for proprietary storage systems
Remote Resolution was initially created as TEP-060 and migrated into the core Pipelines project in #4710.

Build docs developers (and LLMs) love