logo
Alauda DevOps Pipelines Docs
logo
Alauda DevOps Pipelines Docs
Navigation

Overview

Introduction
Architecture
Feature Overview
Lifecycle Policy
Quick Start
Release Notes

Concepts

TektonConfig
TektonPipeline
Install
Upgrade

Configure

Adjusting Optional Configuration Items of Subcomponents
Configuring Resource Quotas for Pipeline Components
Pod Template Configuration Guide
Regular Cleanup of TaskRun and PipelineRun Resources

How To

Deploying tekton-pipelines in a global cluster through TektonConfig

Pipelines

Introduction
Architecture

Concepts

Tasks
TaskRuns
Pipelines
PipelineRuns
StepActions
Resolvers
Workspaces
Pod Templates
Quick Start
permissions

how_to

Adjust Dockerfile for Building Task-Compatible Custom Images

trouble_shooting

Failed to create pod due to config error when using custom images in Tekton

Triggers

Introduction
Architecture

Core Concepts

Core Concepts
EventListener
Trigger
Interceptor
TriggerBinding
TriggerTemplate
Quick Start

How To

Setup EventListener
Use GitLab Event Triggers
Create TriggerTemplate

Troubleshooting

The Pipeline is not automatically triggered
Permission Description

Hub

Introduction
Architecture

Core Concepts

Concepts
Understanding Tekton Hub
Permission Description

Configure

Tekton Hub Configuration
Adding Custom Catalogs

Tutorials

Creating a Custom Catalog
Writing Tasks for Tekton Hub
Writing Pipelines for Tekton Hub

Results

Introduction
Architecture

Concepts

Core Concepts
Tekton Results
Quick Start
permissions

Configure

Database Configuration

Supply Chain Security

Introduction
Architecture

Concepts

Core Concepts
Understanding Tekton Chains
Quick Start

API Reference

Introduction

Kubernetes APIs

Pipelines

Pipeline [tekton.dev/v1]
Task [tekton.dev/v1]
PipelineRun [tekton.dev/v1]
TaskRun [tekton.dev/v1]
ClusterTask [tekton.dev/v1]
Run [tekton.dev/v1]
CustomRun [tekton.dev/v1]
StepAction [tekton.dev/v1]
VerificationPolicy [tekton.dev/v1alpha1]
ResolutionRequest [resolution.tekton.dev/v1beta1]

Triggers

Trigger [triggers.tekton.dev/v1beta1]
TriggerTemplate [triggers.tekton.dev/v1beta1]
EventListener [triggers.tekton.dev/v1beta1]
TriggerBinding [triggers.tekton.dev/v1beta1]
Interceptor [triggers.tekton.dev/v1alpha1]
ClusterTriggerBinding [triggers.tekton.dev/v1beta1]
ClusterInterceptor [triggers.tekton.dev/v1alpha1]

Operator

TektonConfig [operator.tekton.dev/v1alpha1]
TektonInstallerSet [operator.tekton.dev/v1alpha1]
TektonPipeline [operator.tekton.dev/v1alpha1]
TektonTrigger [operator.tekton.dev/v1alpha1]
TektonChain [operator.tekton.dev/v1alpha1]
TektonHub [operator.tekton.dev/v1alpha1]
TektonResult [operator.tekton.dev/v1alpha1]
TektonInstallerSet [operator.tekton.dev/v1alpha1]
OpenShift Pipelines as Code [operator.tekton.dev/v1alpha1]

Advanced APIs

Results

Introduction to API Usage
Results List
Results Details
Result records List
Result logs List
📝 Edit this page on GitHub
Previous PageTektonConfig
Next PageInstall

#TektonPipeline

TektonPipeline is a custom resource provided by the Tekton Operator that allows you to install, update, and manage Tekton Pipelines in your Kubernetes cluster. It provides a declarative way to configure and maintain your Tekton Pipeline components without manually applying manifests.

#TOC

#Terminology Explanation

TermDescription
TektonPipelineA custom resource that manages the lifecycle of Tekton Pipeline components in a Kubernetes cluster.
Tekton OperatorA Kubernetes operator that manages Tekton components including Pipeline, Triggers, Dashboard, and more.
targetNamespaceThe namespace where Tekton Pipeline components will be installed.
Pipeline ControllerThe main controller that processes Pipeline and Task resources.
WebhookA component that validates Tekton Pipeline resources before they are persisted to the cluster.

#Why We Need TektonPipeline

#The Challenge of Managing Tekton Components

Manually installing and maintaining Tekton Pipeline components involves:

  • Applying multiple manifests for different components
  • Keeping track of component versions and their compatibility
  • Managing upgrades and rollbacks safely
  • Configuring components consistently across environments
  • Handling custom configurations for specific deployments

This approach leads to:

  • Complex management procedures
  • Potential for misconfiguration
  • Difficulty in tracking the deployed state
  • Challenges in implementing consistent upgrades

#How TektonPipeline Addresses These Problems

The TektonPipeline resource provides a declarative, Kubernetes-native way to:

  1. Simplify installation: Install all Pipeline components with a single resource
  2. Centralize configuration: Manage all component settings in one place
  3. Automate upgrades: Easily upgrade to new versions by updating the resource
  4. Ensure consistency: Apply the same configuration across different environments
  5. Support customization: Customize Pipeline components based on specific requirements

This approach enables better management of Tekton Pipeline components while maintaining the flexibility to customize as needed.

#Advantages

  • Simplified management: Single resource to manage all Pipeline components
  • Declarative configuration: Define the desired state and let the operator handle implementation details
  • Version control: Easy tracking of configuration changes through GitOps practices
  • Automated reconciliation: Operator ensures the actual state matches the desired state
  • Configuration validation: Built-in validation of configuration parameters
  • Streamlined upgrades: Simplified process for upgrading to new versions
  • Kubernetes-native: Integrates seamlessly with the Kubernetes ecosystem

#Applicable Scenarios

TektonPipeline is essential in the following scenarios:

  1. Initial Deployment: Setting up Tekton Pipeline in a new Kubernetes cluster.

  2. Configuration Management: Managing Pipeline configuration changes over time.

  3. Version Upgrades: Upgrading Tekton Pipeline to newer versions.

  4. Multi-Cluster Deployments: Ensuring consistent Pipeline deployment across multiple clusters.

  5. Custom Deployments: Implementing specific Pipeline configurations for different environments.

  6. GitOps Workflows: Including Pipeline configuration in GitOps deployment processes.

#Constraints and Limitations

  • Requires the Tekton Operator to be installed in the cluster
  • Some advanced configurations may require other Tekton Operator resources
  • Changes to certain fields may require component restarts
  • Must follow Kubernetes resource management principles

#Principles

#TektonPipeline Structure

A TektonPipeline resource has the following structure:

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonPipeline
metadata:
  name: pipeline
spec:
  targetNamespace: tekton-pipelines
  await-sidecar-readiness: true
  coschedule: workspaces
  disable-affinity-assistant: false
  disable-creds-init: false
  disable-home-env-overwrite: true
  disable-working-directory-overwrite: true
  disable-inline-spec: "taskrun,pipelinerun,pipeline"
  enable-api-fields: beta
  enable-bundles-resolver: true
  enable-cel-in-whenexpression: false
  enable-cluster-resolver: true
  enable-custom-tasks: true
  enable-git-resolver: true
  enable-hub-resolver: true
  enable-param-enum: false
  enable-provenance-in-status: true
  enable-step-actions: false
  enforce-nonfalsifiability: none
  keep-pod-on-cancel: false
  max-result-size: 4096
  metrics.count.enable-reason: false
  metrics.pipelinerun.duration-type: histogram
  metrics.pipelinerun.level: pipeline
  metrics.taskrun.duration-type: histogram
  metrics.taskrun.level: task
  require-git-ssh-secret-known-hosts: false
  results-from: termination-message
  running-in-environment-with-injected-sidecars: true
  send-cloudevents-for-runs: false
  set-security-context: false
  trusted-resources-verification-no-match-policy: ignore
  performance:
    disable-ha: false
    buckets: 1
    replicas: 1
    threads-per-controller: 2
    kube-api-qps: 5.0
    kube-api-burst: 10
    statefulset-ordinals: false
  options:
    disabled: false
    configMaps: {}
    deployments: {}

#Key Components and Their Relationships

  1. targetNamespace: Where Tekton Pipeline components will be installed

    • Default is "tekton-pipelines"
    • All Pipeline components will be created in this namespace
    • Make sure you have permissions to create resources in this namespace
  2. version: The version of Tekton Pipeline to install

    • Can specify a specific version like "v0.45.0"
    • Omitting this field will install the latest version supported by the operator
  3. Feature flags: Many configuration options to control Pipeline behavior

    • disable-affinity-assistant: Controls affinity assistant behavior
    • disable-creds-init: Controls credential initialization
    • enable-api-fields: Controls which API fields are enabled
    • enable-custom-tasks: Enables the use of custom tasks
    • And many more as shown in the full structure above
  4. performance: Settings for high-availability and performance tuning

    • replicas: Number of controller replicas
    • buckets: Number of buckets for the controller
    • threads-per-controller: Number of worker threads per controller
    • statefulset-ordinals: Enables StatefulSet Ordinals mode

#Configuration Examples

#Basic Installation

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonPipeline
metadata:
  name: pipeline
spec:
  targetNamespace: tekton-pipelines

#Customized Installation with Feature Flags

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonPipeline
metadata:
  name: pipeline
spec:
  targetNamespace: tekton-pipelines
  disable-affinity-assistant: true
  disable-creds-init: true
  enable-api-fields: beta
  enable-custom-tasks: true
  results-from: sidecar-logs
  max-result-size: 4096

#High Availability Configuration

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonPipeline
metadata:
  name: pipeline
spec:
  targetNamespace: tekton-pipelines
  performance:
    disable-ha: false
    buckets: 10
    replicas: 3
    threads-per-controller: 4
    kube-api-qps: 10.0
    kube-api-burst: 20

#Important Parameter Explanations Related to TektonPipeline

#Feature Flags

Feature flags control specific behaviors of the Pipeline controller.

#Applicable Scenarios

  • Disabling the affinity assistant for performance reasons
  • Enabling or disabling specific Pipeline features
  • Configuring environment-specific settings

#Constraints and Limitations

  • Some feature flags might be deprecated in future versions
  • Changing certain flags may require pipeline reruns
  • Compatibility considerations between different flags

#Principles/Parameter Explanation

Common feature flags include:

  • disable-affinity-assistant (Default: false): Setting this flag to "true" will prevent Tekton from creating an Affinity Assistant for every TaskRun sharing a PVC workspace.

  • disable-creds-init (Default: false): Setting this flag to "true" will prevent Tekton scanning attached service accounts and injecting any credentials it finds into your Steps.

  • await-sidecar-readiness (Default: true): Controls whether to wait for sidecar containers to be running before starting a TaskRun's first step.

  • running-in-environment-with-injected-sidecars (Default: true): Should be set to false when Pipelines is running in a cluster that does not use injected sidecars such as Istio.

  • enable-custom-tasks (Default: false): Enables the use of custom tasks from within pipelines.

#Metrics Properties

Metrics properties control how metrics are collected and reported.

#Applicable Scenarios

  • Setting up monitoring for Tekton pipelines
  • Customizing metric collection behavior
  • Integrating with observability systems

#Configuration Examples

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonPipeline
metadata:
  name: pipeline
spec:
  targetNamespace: tekton-pipelines
  metrics.pipelinerun.duration-type: histogram
  metrics.pipelinerun.level: pipeline
  metrics.taskrun.duration-type: histogram
  metrics.taskrun.level: task
  metrics.count.enable-reason: true

#Performance Configuration

The performance section allows for tuning the controller's performance characteristics.

#Applicable Scenarios

  • Scaling for high-volume pipeline execution
  • Optimizing resource usage
  • Implementing high-availability configurations

#Configuration Examples

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonPipeline
metadata:
  name: pipeline
spec:
  targetNamespace: tekton-pipelines
  performance:
    disable-ha: false
    buckets: 5
    replicas: 2
    threads-per-controller: 4
    kube-api-qps: 10.0
    kube-api-burst: 20
    statefulset-ordinals: true

#Reference Materials

  • Tekton Operator Documentation
  • TektonPipeline Official Documentation
  • Tekton Pipeline Documentation
  • Kubernetes Operator Pattern