OpenShift - Tekton
Last updated
Last updated
El autor original de esta página es Haroun
Según la documentación: Tekton es un marco de trabajo de código abierto poderoso y flexible para crear sistemas de CI/CD, permitiendo a los desarrolladores construir, probar y desplegar en proveedores de nube y sistemas locales. Tanto Jenkins como Tekton se pueden usar para probar, construir y desplegar aplicaciones, sin embargo, Tekton es Cloud Native.
Con Tekton, todo está representado por archivos YAML. Los desarrolladores pueden crear Recursos Personalizados (CR) de tipo Pipelines
y especificar múltiples Tasks
en ellos que desean ejecutar. Para ejecutar un Pipeline, deben crearse recursos de tipo PipelineRun
.
Cuando tekton está instalado, se crea una cuenta de servicio (sa) llamada pipeline en cada namespace. Cuando se ejecuta un Pipeline, se generará un pod utilizando esta sa llamada pipeline
para ejecutar las tareas definidas en el archivo YAML.
Por defecto, la cuenta de servicio del pipeline puede usar la capacidad pipelines-scc
. Esto se debe a la configuración global predeterminada de tekton. De hecho, la configuración global de tekton también es un YAML en un objeto de openshift llamado TektonConfig
que se puede ver si tienes algunos roles de lector en el clúster.
En cualquier namespace, si puedes obtener el token de la cuenta de servicio del pipeline, podrás usar pipelines-scc
.
El problema es que el scc predeterminado que la cuenta de servicio del pipeline puede usar es controlable por el usuario. Esto se puede hacer utilizando una etiqueta en la definición del namespace. Por ejemplo, si puedo crear un namespace con la siguiente definición yaml:
El operador tekton otorgará a la cuenta de servicio del pipeline en test-namespace
la capacidad de usar el scc privilegiado. Esto permitirá el montaje del nodo.
Los documentos de Tekton sobre cómo restringir la anulación de scc añadiendo una etiqueta en el objeto TektonConfig
.
Esta etiqueta se llama max-allowed