OpenShift - Tekton

Ο αρχικός συγγραφέας αυτής της σελίδας είναι Haroun

Τι είναι το tekton

Σύμφωνα με το έγγραφο: Το Tekton είναι ένα ισχυρό και ευέλικτο ανοιχτού κώδικα πλαίσιο για τη δημιουργία συστημάτων CI/CD, επιτρέποντας στους προγραμματιστές να κατασκευάζουν, να δοκιμάζουν και να αναπτύσσουν σε παρόχους cloud και σε τοπικά συστήματα. Και οι δύο Jenkins και Tekton μπορούν να χρησιμοποιηθούν για να δοκιμάσουν, να κατασκευάσουν και να αναπτύξουν εφαρμογές, ωστόσο το Tekton είναι Cloud Native.

Με το Tekton, όλα εκπροσωπούνται από αρχεία YAML. Οι προγραμματιστές μπορούν να δημιουργήσουν Custom Resources (CR) τύπου Pipelines και να καθορίσουν πολλαπλά Tasks σε αυτά που θέλουν να εκτελέσουν. Για να εκτελέσετε μια Pipeline, πρέπει να δημιουργηθούν πόροι τύπου PipelineRun.

Όταν εγκατασταθεί το tekton, δημιουργείται ένας λογαριασμός υπηρεσίας (sa) που ονομάζεται pipeline σε κάθε namespace. Όταν εκτελείται μια Pipeline, θα δημιουργηθεί ένα pod χρησιμοποιώντας αυτόν τον sa που ονομάζεται pipeline για να εκτελέσει τις εργασίες που ορίζονται στο αρχείο YAML.

Tekton Doc σχετικά με τις Pipelines

Οι δυνατότητες του λογαριασμού υπηρεσίας Pipeline

Από προεπιλογή, ο λογαριασμός υπηρεσίας pipeline μπορεί να χρησιμοποιήσει τη δυνατότητα pipelines-scc. Αυτό οφείλεται στη παγκόσμια προεπιλεγμένη ρύθμιση του tekton. Στην πραγματικότητα, η παγκόσμια ρύθμιση του tekton είναι επίσης ένα YAML σε ένα αντικείμενο openshift που ονομάζεται TektonConfig που μπορεί να δει αν έχετε κάποιους ρόλους αναγνωστών στο cluster.

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

Σε οποιοδήποτε namespace, αν μπορέσετε να αποκτήσετε το token του pipeline service account, θα μπορείτε να χρησιμοποιήσετε το pipelines-scc.

Η Κακή Διαμόρφωση

Το πρόβλημα είναι ότι το προεπιλεγμένο scc που μπορεί να χρησιμοποιήσει το pipeline sa είναι ελεγχόμενο από τον χρήστη. Αυτό μπορεί να γίνει χρησιμοποιώντας μια ετικέτα στον ορισμό του namespace. Για παράδειγμα, αν μπορώ να δημιουργήσω ένα namespace με τον παρακάτω ορισμό yaml:

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

Ο τεκτονικός χειριστής θα δώσει στον λογαριασμό υπηρεσίας pipeline στο test-namespace τη δυνατότητα να χρησιμοποιεί το scc privileged. Αυτό θα επιτρέψει την τοποθέτηση του κόμβου.

Η διόρθωση

Τα έγγραφα του Tekton σχετικά με το πώς να περιορίσετε την υπέρβαση του scc προσθέτοντας μια ετικέτα στο αντικείμενο TektonConfig.

Έγγραφο Tekton σχετικά με το scc

Αυτή η ετικέτα ονομάζεται max-allowed

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

Last updated