Tekton
Tekton es una solución cloud native para construir sistemas CI/CD y completamente de código abierto. Forma parte de la CNCF y está desarrollado específicamente para ejecutarse en Kubernetes.
Posee un conjunto de recursos personalizados de Kubernetes que definen los bloques de construcción que puedes crear y reutilizar para tus pipelines. Una vez instalado, Tekton Pipelines está disponible a través de la CLI de Kubernetes (kubectl) y mediante llamadas a la API, al igual que los pods y otros recursos.
Ventajas
-
Personalizable. Las entidades de Tekton son totalmente personalizables, permitiendo un alto grado de flexibilidad. Los ingenieros de plataforma pueden definir un catálogo muy detallado de bloques de construcción para que los desarrolladores los usen en una amplia variedad de escenarios.
-
Reutilizable. Las entidades de Tekton son totalmente portátiles, por lo que, una vez definidas, cualquier persona dentro de la organización puede usar un pipeline específico y reutilizar sus bloques de construcción. Esto permite que los desarrolladores creen pipelines complejos rápidamente sin "reinventar la rueda".
-
Ampliable. El Tekton Catalog es un repositorio de bloques de construcción de Tekton impulsado por la comunidad. Puedes crear rápidamente nuevos pipelines y ampliar los pipelines existentes utilizando componentes prefabricados del Tekton Catalog.
-
Estandarizado. Tekton se instala y ejecuta como una extensión en tu clúster de Kubernetes y usa el modelo de recursos de Kubernetes bien establecido. Las cargas de trabajo de Tekton se ejecutan dentro de contenedores de Kubernetes.
-
Escalable. Para aumentar tu capacidad de carga de trabajo, simplemente puedes añadir nodos a tu clúster. Tekton escala con tu clúster sin necesidad de redefinir tus asignaciones de recursos o realizar otras modificaciones en tus pipelines.
Componentes
Los controladores trabajan sobre objetos personalizados extendiendo la API de Kubernetes mediante CRDs.
Tekton Pipelines es la base de Tekton. Define un conjunto de recursos personalizados de Kubernetes que actúan como bloques de construcción a partir de los cuales puedes ensamblar pipelines de CI/CD.
Tekton Triggers son los eventos que generan los pipelines, por ejemplo un pull request o triggers específicos creados en el panel de control.
Tekton CLI (tkn) creada sobre la CLI de Kubernetes, que te permite interactuar con Tekton.
Tekton Dashboard es una interfaz gráfica basada en web para Tekton Pipelines que muestra información sobre la ejecución de tus pipelines.
Tekton Catalog es un repositorio de bloques de construcción de Tekton contribuidos por la comunidad para reutilizar código y generar pipelines.
Tekton Hub es una interfaz gráfica basada en web para acceder al Catálogo de Tekton.
Tekton Chain proporciona herramientas para generar, almacenar y firmar la procedencia de artefactos construidos con Tekton Pipelines.
Tekton tiene pocas cosas, pero con mucho poder, lo que lo hace fácil de aprender, y combinado con el catálogo ayuda bastante al equipo a adoptar la herramienta.
Conceptos
Steps son la parte más pequeña de un pipeline. Cada step recibe un conjunto específico de entradas y produce un conjunto específico de salidas que pueden usarse como entradas en el siguiente step. Todo step pertenece a una task y una task tiene su propio pod en Kubernetes, por lo que si los steps son de la misma task se ejecutan en el mismo pod. Cada step será un contenedor dentro del pod de la task.
Tasks son una serie ordenada de steps. Una task también puede recibir entradas y generar salidas para las tasks siguientes. Cada Task se ejecuta en su propio Pod de Kubernetes. Las tasks dentro de un Pipeline no comparten datos. Para ello debes configurar explícitamente cada Task para que sus salidas sean entradas en la siguiente task si es necesario. Cada task es un pod que puede tener varios contenedores (steps).
Observa que los steps generan entradas y salidas para steps y las tasks generan entradas y salidas para tasks.
Pipelines son una serie ordenada de tasks.
Las tasks pueden usarse para cosas sencillas y los pipelines toman un conjunto de tasks y crean algo complejo.
TaskRuns y PipelineRuns
Un pipelineRun es una ejecución específica de un pipeline. Por ejemplo, puedes pedir a Tekton que ejecute tu flujo de trabajo de CI/CD dos veces al día, y cada ejecución se convertirá en un recurso pipelineRun rastreable en tu clúster de Kubernetes. Puedes visualizar el estado de tu flujo de trabajo de CI/CD, incluidas las especificaciones de cada ejecución de tarea con pipelineRuns. Podemos tener un pipeline creado e instanciarlo con entradas para diferentes entornos. El código del pipeline sigue siendo el mismo pero realizan todo el trabajo con entradas diferentes.
Una taskRun es una ejecución específica de una task. Los TaskRuns también están disponibles cuando eliges ejecutar una task fuera de un pipeline, con lo cual puedes visualizar las especificidades de cada ejecución de paso en una task. Piensa en las tasks como funciones que reciben parámetros, es decir, es algo genérico y el TaskRun como si lo hubiéramos instanciado con los parámetros correctos.
Los TaskRuns y pipelineRuns conectan recursos con tasks y pipelines. Una ejecución debe incluir las direcciones reales de los recursos, como las URLs de los repositorios, sus necesidades de tarea o pipeline. Este diseño permite que los desarrolladores reutilicen tareas y pipelines para diferentes entradas y salidas.

¿Cómo funciona?
Cada pod que Tekton crea tiene un entrypoint para mantener el pod vivo. Recibe los pasos y los ejecuta cuando el contenedor está listo. Al final muere y desaparece.
Todo el estado del pipeline se rastrea a través de las anotaciones de los pods que se proyectan dentro de cada uno de los contenedores que existen en ellos.
Algunos contenedores adicionales se programan en los pods para marcar el antes y el después de los contenedores que realmente ejecutan los steps. Sirven para marcar el inicio y el fin de la ejecución.
Sabemos que los pods comparten volúmenes internamente de forma muy fácil, lo que hace que Tekton sea muy eficaz.
Tekton Vs Argo Workflow
Estas dos herramientas son muy similares incluso en la declaración de los manifiestos, hacen lo mismo pero con nombres diferentes. La ventaja que veo en Tekton es una comunidad más comprometida que proporciona tasks listas de mejor calidad para reutilizar código.
El Catálogo de Argo Workflow es el competidor de TektonHub. Observa la diferencia entre ellos.
Hay otras herramientas disponibles, generalmente se usa Tekton para crear algo mucho más elaborado.