OpenShift - Tekton
Der ursprüngliche Autor dieser Seite ist Haroun
Was ist Tekton
Laut der Dokumentation: Tekton ist ein leistungsstarkes und flexibles Open-Source-Framework zur Erstellung von CI/CD-Systemen, das Entwicklern ermöglicht, über Cloud-Anbieter und lokale Systeme hinweg zu bauen, zu testen und bereitzustellen. Sowohl Jenkins als auch Tekton können verwendet werden, um Anwendungen zu testen, zu bauen und bereitzustellen, jedoch ist Tekton Cloud Native.
Mit Tekton wird alles durch YAML-Dateien dargestellt. Entwickler können benutzerdefinierte Ressourcen (CR) vom Typ Pipelines
erstellen und mehrere Tasks
angeben, die sie ausführen möchten. Um eine Pipeline auszuführen, müssen Ressourcen vom Typ PipelineRun
erstellt werden.
Wenn Tekton installiert ist, wird in jedem Namespace ein Dienstkonto (sa) namens pipeline erstellt. Wenn eine Pipeline ausgeführt wird, wird ein Pod erstellt, der dieses sa namens pipeline
verwendet, um die im YAML-Dokument definierten Aufgaben auszuführen.
Die Fähigkeiten des Pipeline-Dienstkontos
Standardmäßig kann das Pipeline-Dienstkonto die Fähigkeit pipelines-scc
nutzen. Dies liegt an der globalen Standardkonfiguration von Tekton. Tatsächlich ist die globale Konfiguration von Tekton ebenfalls ein YAML in einem OpenShift-Objekt namens TektonConfig
, das sichtbar ist, wenn Sie einige Leserollen im Cluster haben.
In jedem Namespace, wenn Sie das Token des Pipeline-Servicekontos erhalten können, werden Sie in der Lage sein, pipelines-scc
zu verwenden.
Die Fehlkonfiguration
Das Problem ist, dass die standardmäßige SCC, die das Pipeline-SA verwenden kann, vom Benutzer kontrollierbar ist. Dies kann durch ein Label in der Namespace-Definition erfolgen. Zum Beispiel, wenn ich einen Namespace mit der folgenden YAML-Definition erstellen kann:
Der Tekton-Operator wird dem Pipeline-Dienstkonto im test-namespace
die Fähigkeit geben, die scc privileged zu verwenden. Dies ermöglicht das Mounten des Knotens.
Die Lösung
Tekton-Dokumente darüber, wie man die Überschreibung von scc einschränken kann, indem man ein Label im TektonConfig
-Objekt hinzufügt.
Dieses Label wird max-allowed
genannt.
Last updated