OpenShift - Tekton
Reading time: 2 minutes
इस पृष्ठ के मूल लेखक हैं Haroun
Tekton क्या है
दस्तावेज़ के अनुसार: Tekton एक शक्तिशाली और लचीला ओपन-सोर्स ढांचा है जो CI/CD सिस्टम बनाने के लिए है, जिससे डेवलपर्स क्लाउड प्रदाताओं और ऑन-प्रिमाइस सिस्टम पर निर्माण, परीक्षण और तैनाती कर सकते हैं। Jenkins और Tekton दोनों का उपयोग अनुप्रयोगों का परीक्षण, निर्माण और तैनाती के लिए किया जा सकता है, हालाँकि Tekton क्लाउड नेटिव है।
Tekton के साथ सब कुछ YAML फ़ाइलों द्वारा दर्शाया जाता है। डेवलपर्स Pipelines
प्रकार के कस्टम संसाधन (CR) बना सकते हैं और उनमें कई Tasks
निर्दिष्ट कर सकते हैं जिन्हें वे चलाना चाहते हैं। एक Pipeline चलाने के लिए PipelineRun
प्रकार के संसाधन बनाए जाने चाहिए।
जब tekton स्थापित होता है, तो हर namespace में एक सेवा खाता (sa) बनाया जाता है जिसे pipeline कहा जाता है। जब एक Pipeline चलाई जाती है, तो YAML फ़ाइल में परिभाषित कार्यों को चलाने के लिए इस sa का उपयोग करके एक pod उत्पन्न किया जाएगा जिसे pipeline
कहा जाता है।
Getting Started with Pipelines | Tekton
Pipeline सेवा खाता क्षमताएँ
डिफ़ॉल्ट रूप से, pipeline सेवा खाता pipelines-scc
क्षमता का उपयोग कर सकता है। यह tekton की वैश्विक डिफ़ॉल्ट कॉन्फ़िगरेशन के कारण है। वास्तव में, tekton की वैश्विक कॉन्फ़िगरेशन भी एक YAML है जो एक openshift ऑब्जेक्ट में है जिसे TektonConfig
कहा जाता है जिसे आप क्लस्टर में कुछ रीडर भूमिकाएँ होने पर देख सकते हैं।
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
...
...
platforms:
openshift:
scc:
default: "pipelines-scc"
किसी भी namespace में, यदि आप pipeline सेवा खाता टोकन प्राप्त कर सकते हैं, तो आप pipelines-scc
का उपयोग कर सकेंगे।
Misconfig
समस्या यह है कि डिफ़ॉल्ट scc जिसे pipeline sa उपयोग कर सकता है, वह उपयोगकर्ता द्वारा नियंत्रित किया जा सकता है। यह namespace परिभाषा में एक लेबल का उपयोग करके किया जा सकता है। उदाहरण के लिए, यदि मैं निम्नलिखित yaml परिभाषा के साथ एक namespace बना सकता हूँ:
apiVersion: v1
kind: Namespace
metadata:
name: test-namespace
annotations:
operator.tekton.dev/scc: privileged
tekton ऑपरेटर test-namespace
में पाइपलाइन सेवा खाते को scc privileged का उपयोग करने की क्षमता देगा। इससे नोड को माउंट करने की अनुमति मिलेगी।
समाधान
Tekton दस्तावेज़ों में TektonConfig
ऑब्जेक्ट में लेबल जोड़कर scc के ओवरराइड को प्रतिबंधित करने के बारे में बताया गया है।
इस लेबल को max-allowed
कहा जाता है।
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
...
...
platforms:
openshift:
scc:
default: "restricted-v2"
maxAllowed: "privileged"