Tekton Concepts: Difference between revisions
(→Task) |
|||
(212 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=External= | |||
* https://tekton.dev | |||
=Internal= | =Internal= | ||
* [[Tekton#Subjects|Tekton]] | * [[Tekton#Subjects|Tekton]] | ||
Line 5: | Line 7: | ||
=Overview= | =Overview= | ||
Tekton is a cloud-native solution for building CI/CD pipelines. 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. It has several components: [[#Tekton_Pipelines|Tekton Pipelines]], [[#Tekton_CLI|Tekton CLI]] and [[#Tekton_Catalog|Tekton Catalog]]. Tekton is part of the [https://cd.foundation/ CD Foundation], a [https://www.linuxfoundation.org/projects/ Linux Foundation] project. | Tekton is a cloud-native solution for building CI/CD pipelines. 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. It is implemented as a set of Kubernetes [[Kubernetes_Custom_Resources#Overview|Custom Resources]]. It has several components: [[#Tekton_Pipelines|Tekton Pipelines]], [[#Tekton_CLI|Tekton CLI]] and [[#Tekton_Catalog|Tekton Catalog]]. Once deployed, Tekton can be accessed via [[#Tekton_CLI|Tekton CLI]] commands or API calls. Tekton is part of the [https://cd.foundation/ CD Foundation], a [https://www.linuxfoundation.org/projects/ Linux Foundation] project. | ||
=Tekton Runtime Model= | |||
[[#Tekton_Pipelines|Tekton Pipelines]] tracks the state of a [[Tekton_Pipeline#Overview|pipeline]] using [[Kubernetes_Labels_and_Annotations#Annotations|Kubernetes annotations]], which are projected inside each [[Tekton_Step#Step_Container|step container]] in the form of files with the [[Kubernetes_Downward_API_Concepts#Overview|Kubernetes Downward API]]. The step container entrypoint binary watches these projected files and will only start the command the step is supposed to execute only if a specific annotation appears as file. For more details see: {{Internal|Tekton_Labels_and_Annotations#Overview|Tekton Labels and Annotations}} | |||
In addition, Tekton Pipelines schedules some containers to run automatically before and after the step containers to support built-in features such as the retrieval of input resources and the uploading the outputs to wherever they are supposed to go. | |||
=Task= | |||
{{Internal|Tekton Task|Task}} | |||
==ClusterTask== | |||
A [[#Task|task]] is available in a certain namespace, while a ClusterTask is available across the entire cluster. A ClusterTask behaves identically to a task. When declaring a ClusterTask in the pipeline definition, the <code>kind</code> sub-field of the <code>taskRef</code> should be explicitly set to <code>ClusterTask</code>. If not specified, <code>kind</code> defaults to <code>Task</code>. | |||
<syntaxhighlight lang='yaml'> | <syntaxhighlight lang='yaml'> | ||
apiVersion: tekton.dev/v1beta1 | apiVersion: tekton.dev/v1beta1 | ||
kind: | kind: Pipeline | ||
metadata: | metadata: | ||
[...] | |||
spec: | spec: | ||
tasks: | |||
- name: | - name: some-cluster-task | ||
taskRef: | |||
name: some-task | |||
kind: ClusterTask | |||
... | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== | ==Custom Task and Run== | ||
{{Internal|Tekton_Custom_Task_and_Run|Custom Task and Run}} | |||
==TaskRun= | =Step= | ||
{{ | {{Internal|Tekton Step|Step}} | ||
=TaskRun= | |||
Include discussion on [[Tekton_TaskRun#Pod_Template|pod templates]]: | |||
{{Internal|Tekton TaskRun#Overview|TaskRun}} | |||
=Pipeline= | |||
{{Internal|Tekton Pipeline#Overview|Pipeline}} | |||
=PipelineRun= | |||
{{Internal|Tekton_PipelineRun#Overview|PipelineRun}} | |||
=<span id='Workspace'></span>Workspaces= | |||
{{Internal|Tekton Workspaces#Overview|Workspaces}} | |||
< | =<span id='Input_Resource'></span><span id='Output_Resource'></span><span id='PipelineResource'></span><span id='Input'></span><span id='Output'></span>Resource= | ||
{{Internal|Tekton Resource#Overview|Resources}} | |||
</ | |||
=== | |||
= | =Result= | ||
{{ | {{Internal|Tekton_Results#Overview|Results}} | ||
< | =<span id='Event'></span>Events= | ||
{{Internal|Tekton Events|Events}} | |||
</ | |||
{{ | |||
=<span id='Bundle'></span>Bundles= | |||
{{Internal|Tekton Bundle#Overview|Bundles}} | |||
=Parameters= | |||
{{Internal|Tekton_Parameters|Parameters}} | |||
=<span id='LimitRange'></span>Resource Management= | |||
This section contains a discussion on [[Tekton_Resource_Management#LimitRange|LimitRange]]. | |||
{{Internal|Tekton Resource Management#Overview|Resource Management}} | |||
=Security= | |||
{{Internal|Tekton_Security|Security}} | |||
=Metrics= | |||
{{Internal|Tekton Metrics#Overview|Tekton Metrics}} | |||
=Hermetic Builds= | |||
{{External|https://tekton.dev/docs/pipelines/hermetic/}} | |||
=Conditions= | |||
{{External|https://tekton.dev/docs/pipelines/conditions/}} | |||
Conditions are deprecated, use <code>[[Tekton_Pipeline#Conditional_Execution_with_when|when]]</code> expressions instead. | |||
= | |||
== | =Programming Model= | ||
<font color=darkkhaki> | |||
== | Process Task Authoring Recommendations: https://github.com/tektoncd/catalog/blob/main/recommendations.md | ||
</font> | |||
==<span id='Variable_Substitution'><span>Variables== | |||
<font color=darkkhaki>TO PROCESS: | |||
* https://tekton.dev/docs/pipelines/variables/ | |||
* https://tekton.dev/docs/pipelines/tasks/#using-variable-substitution | |||
* Variables available in a Task https://tekton.dev/docs/pipelines/variables/#variables-available-in-a-task | |||
* Variables available in a Pipeline https://tekton.dev/docs/pipelines/variables/#variables-available-in-a-pipeline | |||
* Fields that accept variable substitutions: https://tekton.dev/docs/pipelines/variables/#fields-that-accept-variable-substitutions | |||
* Using variable substitution in pipelines: https://tekton.dev/docs/pipelines/pipelines/#using-variable-substitution | |||
</font> | |||
== | ==Code Examples== | ||
<font color=darkkhaki> | |||
* Code Examples: https://tekton.dev/docs/pipelines/tasks/#code-examples | |||
* Code Examples: https://github.com/tektoncd/pipeline/tree/main/examples | |||
* TaskRun code examples: https://tekton.dev/docs/pipelines/taskruns/#code-examples | |||
* https://github.com/tektoncd/pipeline/blob/release-v0.35.x/examples/v1beta1/taskruns/run-steps-as-non-root.yaml | |||
* Pipeline code examples: https://github.com/tektoncd/pipeline/tree/main/examples | |||
* Variable substitution: https://tekton.dev/docs/pipelines/tasks/#using-variable-substitution | |||
Start the list here: | |||
* How to do this | |||
* How to do that | |||
</font> | |||
=Playground= | |||
{{External|https://github.com/ovidiuf/playground/tree/master/tekton}} | |||
=Tekton Components= | =Tekton Components= | ||
==Tekton Pipelines== | ==Tekton Pipelines== | ||
Line 132: | Line 114: | ||
==Tekton CLI== | ==Tekton CLI== | ||
{{ | {{Internal|Tekton_CLI#Overview|Tekton CLI}} | ||
==Tekton API== | ==Tekton API== | ||
Tekton APIs are currently available for [[#Pipeline|Pipelines]] and [[#Trigger|Triggers]] allow you to programmatically interact with the Tekton components. | Tekton APIs are currently available for [[#Pipeline|Pipelines]] and [[#Trigger|Triggers]] allow you to programmatically interact with the Tekton components. | ||
==Tekton Catalog== | ==Tekton Catalog== | ||
{{ | {{Internal|Tekton_Catalog#Overview|Tekton Catalog}} | ||
==Tekton Hub== | ==Tekton Hub== | ||
{{ | {{Internal|Tekton_Hub#Overview|Tekton Hub}} | ||
==Tekton Triggers== | ==<span id='Trigger'></span>Tekton Triggers== | ||
{{ | {{Internal|Tekton_Triggers#Overview|Tekton Triggers}} | ||
==Tekton Dashboard== | ==Tekton Dashboard== | ||
{{ | {{Internal|Tekton_Dashboard#Overview|Tekton Dashboard}} | ||
==Tekton Operator== | ==Tekton Operator== | ||
{{ | {{Internal|Tekton_Operator#Overview|Tekton Operator}} | ||
= | ==HA Support== | ||
Tekton | {{Internal|Tekton_Operations#HA_Support|Tekton Operations | HA Support}} |
Latest revision as of 05:45, 29 April 2022
External
Internal
Overview
Tekton is a cloud-native solution for building CI/CD pipelines. 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. It is implemented as a set of Kubernetes Custom Resources. It has several components: Tekton Pipelines, Tekton CLI and Tekton Catalog. Once deployed, Tekton can be accessed via Tekton CLI commands or API calls. Tekton is part of the CD Foundation, a Linux Foundation project.
Tekton Runtime Model
Tekton Pipelines tracks the state of a pipeline using Kubernetes annotations, which are projected inside each step container in the form of files with the Kubernetes Downward API. The step container entrypoint binary watches these projected files and will only start the command the step is supposed to execute only if a specific annotation appears as file. For more details see:
In addition, Tekton Pipelines schedules some containers to run automatically before and after the step containers to support built-in features such as the retrieval of input resources and the uploading the outputs to wherever they are supposed to go.
Task
ClusterTask
A task is available in a certain namespace, while a ClusterTask is available across the entire cluster. A ClusterTask behaves identically to a task. When declaring a ClusterTask in the pipeline definition, the kind
sub-field of the taskRef
should be explicitly set to ClusterTask
. If not specified, kind
defaults to Task
.
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
[...]
spec:
tasks:
- name: some-cluster-task
taskRef:
name: some-task
kind: ClusterTask
...
Custom Task and Run
Step
TaskRun
Include discussion on pod templates:
Pipeline
PipelineRun
Workspaces
Resource
Result
Events
Bundles
Parameters
Resource Management
This section contains a discussion on LimitRange.
Security
Metrics
Hermetic Builds
Conditions
Conditions are deprecated, use when
expressions instead.
Programming Model
Process Task Authoring Recommendations: https://github.com/tektoncd/catalog/blob/main/recommendations.md
Variables
TO PROCESS:
- https://tekton.dev/docs/pipelines/variables/
- https://tekton.dev/docs/pipelines/tasks/#using-variable-substitution
- Variables available in a Task https://tekton.dev/docs/pipelines/variables/#variables-available-in-a-task
- Variables available in a Pipeline https://tekton.dev/docs/pipelines/variables/#variables-available-in-a-pipeline
- Fields that accept variable substitutions: https://tekton.dev/docs/pipelines/variables/#fields-that-accept-variable-substitutions
- Using variable substitution in pipelines: https://tekton.dev/docs/pipelines/pipelines/#using-variable-substitution
Code Examples
- Code Examples: https://tekton.dev/docs/pipelines/tasks/#code-examples
- Code Examples: https://github.com/tektoncd/pipeline/tree/main/examples
- TaskRun code examples: https://tekton.dev/docs/pipelines/taskruns/#code-examples
- https://github.com/tektoncd/pipeline/blob/release-v0.35.x/examples/v1beta1/taskruns/run-steps-as-non-root.yaml
- Pipeline code examples: https://github.com/tektoncd/pipeline/tree/main/examples
- Variable substitution: https://tekton.dev/docs/pipelines/tasks/#using-variable-substitution
Start the list here:
- How to do this
- How to do that
Playground
Tekton Components
Tekton Pipelines
Tekton Pipelines is the component that implements the core functionality of Tekton and sets the foundation for other components. It is implemented as a set of Kubernetes Custom Resources.
Tekton Pipeline Runtime
Tekton Pipelines Controller
Tekton Pipelines Webhook
Tekton Pipeline Operations
Tekton CLI
Tekton API
Tekton APIs are currently available for Pipelines and Triggers allow you to programmatically interact with the Tekton components.