OpenShift - Tekton

The original author of this page is Haroun

What is tekton

According to the doc: Tekton to potężny i elastyczny framework open-source do tworzenia systemów CI/CD, umożliwiający deweloperom budowanie, testowanie i wdrażanie aplikacji w różnych dostawcach chmury oraz na systemach lokalnych. Zarówno Jenkins, jak i Tekton mogą być używane do testowania, budowania i wdrażania aplikacji, jednak Tekton jest natywny dla chmury.

With Tekton everything is represented by YAML files. Deweloperzy mogą tworzyć Zasoby Niestandardowe (CR) typu Pipelines i określać w nich wiele Tasks, które chcą uruchomić. Aby uruchomić Pipeline, muszą zostać utworzone zasoby typu PipelineRun.

When tekton is installed a service account (sa) called pipeline is created in every namespace. Gdy Pipeline jest uruchamiany, zostanie utworzony pod przy użyciu tego sa o nazwie pipeline, aby uruchomić zadania zdefiniowane w pliku YAML.

Tekton Doc about Pipelines

The Pipeline service account capabilities

By default, the pipeline service account can use the pipelines-scc capability. Domyślnie konto usługi pipeline może korzystać z możliwości pipelines-scc. To wynika z globalnej domyślnej konfiguracji tekton. W rzeczywistości globalna konfiguracja tekton jest również YAML w obiekcie openshift o nazwie TektonConfig, który można zobaczyć, jeśli masz pewne role czytelnicze w klastrze.

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

W dowolnej przestrzeni nazw, jeśli możesz uzyskać token konta serwisowego pipeline, będziesz mógł użyć pipelines-scc.

Błąd w konfiguracji

Problem polega na tym, że domyślna scc, którą może używać konto serwisowe pipeline, jest kontrolowana przez użytkownika. Można to zrobić za pomocą etykiety w definicji przestrzeni nazw. Na przykład, jeśli mogę utworzyć przestrzeń nazw z następującą definicją yaml:

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

Operator tekton przyzna kontu usługi pipeline w test-namespace możliwość używania scc privileged. To pozwoli na montowanie węzła.

Rozwiązanie

Dokumenty Tekton opisują, jak ograniczyć nadpisywanie scc, dodając etykietę w obiekcie TektonConfig.

Dokument Tekton o scc

Ta etykieta nazywa się max-allowed

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

Last updated