Tekton
Tekton é uma solução cloud native para construir sistemas CI/CD e totalmente open source. Faz parte da CNCF e desenvolvido especialmente para rodar no Kubernetes.
Possui um conjunto de custom resources do Kubernetes que definem os blocos de construção que você pode criar e reutilizar para seus pipelines. Uma vez instalado, o Tekton Pipelines fica disponível por meio do Kubernetes CLI (kubectl) e por meio de chamadas de API, assim como pods e outros recursos.
Vantagens
-
Personalizável. As entidades Tekton são totalmente personalizáveis, permitindo um alto grau de flexibilidade. Engenheiros de plataforma podem definir um catálogo altamente detalhado de blocos de construção para desenvolvedores usarem em uma ampla variedade de cenários.
-
Reutilizável. As entidades Tekton são totalmente portáteis, então, uma vez definidas, qualquer pessoa dentro da organização pode usar um pipeline específico e reutilizar seus blocos de construção. Isso permite que os desenvolvedores criem pipelines complexos rapidamente sem “reinventar a roda”.
-
Expansível. O Tekton Catalog é um repositório de blocos de construção Tekton conduzido pela comunidade. Você pode criar rapidamente novos pipelines e expandir pipelines existentes usando componentes pré-fabricados do Tekton Catalog.
-
Padronizado. O Tekton é instalado e executado como uma extensão no seu cluster Kubernetes e usa o modelo de recurso Kubernetes bem estabelecido. As cargas de trabalho do Tekton são executadas dentro de contêineres Kubernetes.
-
Escalável. Para aumentar sua capacidade de carga de trabalho, você pode simplesmente adicionar nós ao seu cluster. O Tekton escala com seu cluster sem a necessidade de redefinir suas alocações de recursos ou quaisquer outras modificações em seus pipelines.
Componentes
As controller trabalham em cima de objetos customizados extendendo a api do kubernetes através do CRD.
Tekton Pipelines é a base do Tekton. Ele define um conjunto de Kubernetes Custom Resources que atuam como blocos de construção a partir dos quais você pode montar pipelines de CI/CD.
Tekton Triggers são os eventos que geram as pipelines um pull request por exemplo ou gatilhos específicos criados no dashboard.
Tekton CLI (tkn) criada sobre o Kubernetes CLI, que permite que você interaja com o Tekton.
Tekton Dashboard é uma interface gráfica baseada na Web para Tekton Pipelines que exibe informações sobre a execução de seus pipelines.
Tekton Catalog é um repositório de blocos de construção Tekton contribuídos pela comunidade para reaproveitamento de código para gerar as pipelines.
Tekton Hub é uma interface gráfica baseada na Web para acessar o Catálogo Tekton.
Tekton Chain fornece ferramentas para gerar, armazenar e assinar a procedência de artefatos construídos com o Tekton Pipelines.
Tekton possui poucas coisas, mas com muito poder o que torna-se fácil de aprender, aliado ao catalog ajuda bastante a equipe em absorver a ferramenta.
Conceitos
Steps são a menor parte de um pipeline. Cada step recebe conjunto específico de entradas e produz um conjunto específico de saídas que podem ser usadas como entradas no próximo step. Todo step pertence a uma task e uma task possui seu próprio pod no kubernetes, logo se os steps são da mesma task rodam no mesmo pod. Cada step será um contêiner dentro do pod da task.
Tasks são uma série ordenada de steps. Uma task também pode receber entradas e gerar saídas para as tasks seguintes. Cada Task executa em seu próprio Pod do Kubernetes. Tasks dentro de um Pipeline não compartilham dados. Para isso você deve configurar explicitamente cada Task para tornar suas saídas como entradas na próxima task caso necessário. Cada task é um pod que podem ter vários contêineres (steps).
Observe que steps geram entrada e saídas para steps e tasks geram entrada e saída para tasks.
Pipelines São uma série ordenada de tasks.
As tasks podem ser usadas para coisas simples e os pipelines pegam um conjunto de tasks e criam algo complexo.
TaskRuns e PipelineRuns
Um pipelineRun é uma execução específica de um pipeline. Por exemplo, você pode pedir ao Tekton para executar seu fluxo de trabalho de CI/CD duas vezes por dia, e cada execução se tornará um recurso pipelineRun rastreável em seu cluster Kubernetes. Você pode visualizar o status do seu fluxo de trabalho de CI/CD, incluindo as especificações de cada execução de tarefa com pipelineRuns. Podemos ter uma pipeline criada e instanciá-la com entradas para ambientes diferentes. O código da pipeline torna-se o mesmo mas fazem todo o trabalho com entradas diferentes.
Uma taskRun é uma execução específica de uma task. TaskRuns também estão disponíveis quando você escolhe executar uma task fora de um pipeline, com o qual você pode visualizar as especificidades de cada execução de etapa em uma task. Pense que em tasks como funções que recebem parâmetros, ou seja, é algo genérico e a TaskRun se tivéssemos instanciado com os parâmetros corretos.
TaskRuns e pipelineRuns conectam recursos com tasks e pipelines. Uma execução deve incluir os endereços reais dos recursos, como as URLs dos repositórios, suas necessidades de tarefa ou pipeline. Este design permite que os desenvolvedores reutilizem tarefas e pipelines para diferentes entradas e saídas.

Como funciona?
Todo pod que o tekton cria possui um entrypoint para segurar o pod vivo. Ele recebe os passos e executa quando o contêiner está pronto. Ao final morre e some.
Todo o estado do pipeline é rastreado através dos annotations dos pods que são projetadas para dentro de cada um dos contêineres que nele existem.
Alguns contêineres extras são agendados nos pods para marcar o antes e o depois dos contêineres que realmente executam os steps. Servem para marcar o início e o fim da execução.
Sabemos que os pods compartilham volumes dentro de forma muito fácil o que torna o tekton muito eficaz.
Tekton Vs Argo Workflow
Essas duas ferramentas são muito parecida até na declaração dos manifestos, fazem a mesma coisa porém com nomes diferentes. A vantagem que eu vejo no Tekton é uma comunidade mais engajada fornecendo tasks prontas de melhor qualidade para reaproveitamento de código.
Argo Workflow Catalog é o concorrente do TektonHub. Veja a diferença entre eles.
Existem outras ferramentas disponíveis, geralmente usa-se Tekton para criar algo muito mais elaborado.