OpenShift - Tekton

L'auteur original de cette page est Haroun

Qu'est-ce que tekton

Selon la documentation : Tekton est un cadre open-source puissant et flexible pour créer des systèmes CI/CD, permettant aux développeurs de construire, tester et déployer sur des fournisseurs de cloud et des systèmes sur site. Jenkins et Tekton peuvent être utilisés pour tester, construire et déployer des applications, cependant Tekton est Cloud Native.

Avec Tekton, tout est représenté par des fichiers YAML. Les développeurs peuvent créer des Ressources Personnalisées (CR) de type Pipelines et spécifier plusieurs Tasks qu'ils souhaitent exécuter. Pour exécuter une ressource Pipeline, des ressources de type PipelineRun doivent être créées.

Lorsque tekton est installé, un compte de service (sa) appelé pipeline est créé dans chaque namespace. Lorsqu'un Pipeline est exécuté, un pod sera généré en utilisant ce sa appelé pipeline pour exécuter les tâches définies dans le fichier YAML.

Documentation Tekton sur les Pipelines

Les capacités du compte de service Pipeline

Par défaut, le compte de service pipeline peut utiliser la capacité pipelines-scc. Cela est dû à la configuration par défaut globale de tekton. En fait, la configuration globale de tekton est également un YAML dans un objet openshift appelé TektonConfig qui peut être vu si vous avez des rôles de lecteur dans le cluster.

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
...
...
platforms:
openshift:
scc:
default: "pipelines-scc"

Dans n'importe quel espace de noms, si vous pouvez obtenir le jeton de compte de service de pipeline, vous pourrez utiliser pipelines-scc.

La mauvaise configuration

Le problème est que le scc par défaut que le compte de service de pipeline peut utiliser est contrôlable par l'utilisateur. Cela peut être fait en utilisant une étiquette dans la définition de l'espace de noms. Par exemple, si je peux créer un espace de noms avec la définition yaml suivante :

apiVersion: v1
kind: Namespace
metadata:
name: test-namespace
annotations:
operator.tekton.dev/scc: privileged

L'opérateur tekton donnera au compte de service de pipeline dans test-namespace la capacité d'utiliser le scc privileged. Cela permettra le montage du nœud.

La solution

Les documents Tekton sur la façon de restreindre l'override de scc en ajoutant une étiquette dans l'objet TektonConfig.

Document Tekton sur scc

Cette étiquette s'appelle max-allowed

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
...
...
platforms:
openshift:
scc:
default: "restricted-v2"
maxAllowed: "privileged"

Last updated