forked from tektoncd/website
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Publishes a comprehensive overview of Tekton.
- Loading branch information
1 parent
bcef712
commit 81ca55d
Showing
1 changed file
with
127 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
<!-- | ||
--- | ||
linkTitle: "Overview of Tekton" | ||
weight: 1 | ||
--- | ||
--> | ||
|
||
# Overview of Tekton | ||
|
||
This document describes Tekton, its components, as well as its benefits and caveats. It also describes the most | ||
common usage scenarios for Tekton. | ||
|
||
## What is Tekton? | ||
|
||
Tekton is a cloud-native solution for building CI/CD pipelines. It consists of Tekton Pipelines, which provides | ||
the building blocks, and of supporting components, such as Tekton CLI and Tekton Catalog, that make Tekton a complete | ||
ecosystem. Tekton is part of the [CD Foundation](https://cd.foundation/), a | ||
[Linux Foundation](https://www.linuxfoundation.org/projects/) project. | ||
|
||
Tekton installs and runs as an extension on a Kubernetes cluster and comprises a set of Kubernetes Custom Resources | ||
that define the building blocks you can create and reuse for your pipelines. Once installed, Tekton Pipelines becomes | ||
available via the Kubernetes CLI (kubectl) and via API calls, just like pods and other resources. | ||
|
||
## Who uses Tekton? | ||
|
||
Tekton users typically fall into the following categories: | ||
|
||
- **Platform engineers** who build CI/CD systems for the developers in their organization. | ||
- **Developers** who use those CI/CD systems to do their work. | ||
|
||
## What are the benefits of Tekton? | ||
|
||
Tekton provides the following benefits to builders and users of CI/CD systems: | ||
|
||
- **Customizable.** Tekton entities are fully customizable, allowing for a high degree of flexibility. Platform engineers | ||
can define a highly detailed catalog of building blocks for developers to use in a wide variety of scenarios. | ||
- **Reusable.** Tekton entities are fully portable, so once defined, anyone within the organization can use a given | ||
pipeline and reuse its building blocks. This allows developers to quickly build complex pipelines without "reinventing | ||
the wheel." | ||
- **Expandable.** Tekton Catalog is a community-driven repository of Tekton building blocks. You can quickly create new and | ||
expand existing pipelines using pre-made components from the Tekton Catalog. | ||
- **Standardized.** Tekton installs and runs as an extension on your Kubernetes cluster and uses the well-established | ||
Kubernetes resource model. Tekton workloads execute inside Kubernetes containers. | ||
- **Scalable.** To increase your workload capacity, you can simply add nodes to your cluster. Tekton scales with your cluster | ||
without the need to redefine your resource allocations or any other modifications to your pipelines. | ||
|
||
## What are the components of Tekton? | ||
|
||
Tekton consists of the following components: | ||
|
||
- **[Tekton Pipelines](https://github.com/tektoncd/pipeline/blob/master/docs/README.md)** is the foundation of Tekton. It | ||
defines a set of Kubernetes [Custom Resources](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) | ||
that act as building blocks from which you can assemble CI/CD pipelines. | ||
|
||
- **[Tekton Triggers](https://github.com/tektoncd/triggers/blob/master/README.md)** allows you to instantiate pipelines based on events. | ||
For example, you can trigger the instantiation and execution of a pipeline every time a PR is merged against a GitHub repository. You | ||
can also build a user interface that launches specific Tekton triggers. | ||
|
||
- **[Tekton CLI](https://github.com/tektoncd/cli/blob/master/README.md)** provides a command-line interface called `tkn`, built on top | ||
of the Kubernetes CLI, that allows you to interact with Tekton. | ||
|
||
- **[Tekton Dashboard](https://github.com/tektoncd/dashboard/blob/master/README.md)** is a Web-based graphical interface for Tekton | ||
Pipelines that displays information about the execution of your pipelines. It is currently a work-in-progress. | ||
|
||
- **[Tekton Catalog](https://github.com/tektoncd/catalog/blob/v1beta1/README.md)** is a repository of high-quality, community-contributed | ||
Tekton building blocks - `Tasks`, `Pipelines`, and so on - that are ready for use in your own pipelines. | ||
|
||
- **[Tekton Hub](https://github.com/tektoncd/hub/blob/master/README.md)** is a Web-based graphical interface for accessing the Tekton Catalog. | ||
|
||
- **[Tekton Operator](https://github.com/tektoncd/operator/blob/master/README.md)** is a Kubernetes [Operator pattern](https://operatorhub.io/what-is-an-operator) | ||
that allows you to install, update, and remove Tekton projects on your Kubernetes cluster. | ||
|
||
|
||
## How do I work with Tekton? | ||
|
||
To install Tekton, you need a Kubernetes cluster running a | ||
[version of Kubernetes specified for the current Tekton release](https://github.com/tektoncd/pipeline/#want-to-start-using-pipelines). | ||
Once installed, you can interact with Tekton using one of the following: | ||
|
||
- **[The tkn CLI](https://github.com/tektoncd/cli/blob/master/README.md)**, also known as the Tekton CLI, is the preferred command-line method | ||
for interacting with Tekton. `tkn` provides a quick and streamlined experience, including high-level commands and color coding. To use it, | ||
you only need to be familiar with Tekton. | ||
- **[The kubectl CLI](https://kubernetes.io/docs/reference/kubectl/overview/)**, also known as the Kubernetes CLI, provides substantially more | ||
granularity for controlling Tekton at the expense of higher complexity. Interacting with Tekton via kubectl is typically reserved for debugging | ||
your pipelines and troubleshooting your builds. | ||
- **[The Tekton APIs](https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/)**, currently | ||
available for [Pipelines](https://pkg.go.dev/github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1?tab=doc) and | ||
[Triggers](https://pkg.go.dev/github.com/tektoncd/[email protected]/pkg/apis/triggers/v1alpha1?tab=doc), allow you to programmatically interact | ||
with Tekton components. This is typically reserved for highly customized CI/CD systems. In most scenarios, `tkn` and `kubectl` are the preferred | ||
methods of controlling Tekton. | ||
|
||
We also recommend having the following items configured on your Kubernetes cluster: | ||
|
||
- Persistent volume claims for specifying inputs and outputs. | ||
- Permissions appropriate to your environment and business needs. | ||
- Storage for building and pushing images (if applicable). | ||
|
||
## What can I do with Tekton? | ||
|
||
Tekton introduces the concept of `Tasks`, which specify the workloads you want to run: | ||
|
||
- [`Task`](https://github.com/tektoncd/pipeline/blob/master/docs/tasks.md) - defines a series of ordered `Steps`, and each `Step` invokes a specific | ||
build tool on a specific set of inputs and produces a specific set of outputs, which can be used as inputs in the next `Step`. | ||
|
||
- [`Pipeline`](https://github.com/tektoncd/pipeline/blob/master/docs/pipelines.md) - defines a series of ordered `Tasks`, and just like `Steps` in a | ||
`Task`, a `Task` in a `Pipeline` can use the output of a previously executed `Task` as its input. | ||
|
||
- [`TaskRun`](https://github.com/tektoncd/pipeline/blob/master/docs/taskruns.md) - instantiates a specific `Task` to execute on a particular set of | ||
inputs and produce a particular set of outputs. In other words, the `Task` tells Tekton what to do, and a `TaskRun` tells Tekton what to do it **on**, | ||
as well as any additional details on how to exactly do it, such as build flags. | ||
|
||
- [`PipelineRun`](https://github.com/tektoncd/pipeline/blob/master/docs/pipelineruns.md) - instantiates a specific `Pipeline` to execute on a particular | ||
set of inputs and produce a particular set of outputs to particular destinations. | ||
|
||
Each `Task` executes in its own Kubernetes Pod. Thus, by default, `Tasks` within a `Pipeline` do not share data. To share data among `Tasks`, | ||
you must explicitly configure each `Task` to make its outputs available to the next `Task` and to ingest the outputs of a previously executed | ||
`Task` as its inputs, whichever is applicable. | ||
|
||
### When to use which? | ||
|
||
- `Task` - useful for simpler workloads such as running a test, a lint, or building a Kaniko cache. A single `Task` executes in a single | ||
Kubernetes Pod, uses a single disk, and generally keeps things simple. | ||
- `Pipeline` - useful for complex workloads, such as static analysis, as well as testing, building, and deploying complex projects. | ||
|
||
### I want to learn more! | ||
|
||
To learn more about the Tekton entities described above and start using Tekton, see the [Tekton Pipelines Overview](https://github.com/tektoncd/pipeline/blob/master/docs/README.md). |