# OpenShift - Tekton **इस पृष्ठ के मूल लेखक हैं** [**Haroun**](https://www.linkedin.com/in/haroun-al-mounayar-571830211) ### Tekton क्या है दस्तावेज़ के अनुसार: _Tekton एक शक्तिशाली और लचीला ओपन-सोर्स ढांचा है जो CI/CD सिस्टम बनाने के लिए है, जिससे डेवलपर्स क्लाउड प्रदाताओं और ऑन-प्रिमाइस सिस्टम पर निर्माण, परीक्षण और तैनाती कर सकते हैं।_ Jenkins और Tekton दोनों का उपयोग अनुप्रयोगों का परीक्षण, निर्माण और तैनाती के लिए किया जा सकता है, हालाँकि Tekton क्लाउड नेटिव है। Tekton के साथ सब कुछ YAML फ़ाइलों द्वारा दर्शाया जाता है। डेवलपर्स `Pipelines` प्रकार के कस्टम संसाधन (CR) बना सकते हैं और उनमें कई `Tasks` निर्दिष्ट कर सकते हैं जिन्हें वे चलाना चाहते हैं। एक Pipeline चलाने के लिए `PipelineRun` प्रकार के संसाधन बनाए जाने चाहिए। जब tekton स्थापित होता है, तो हर namespace में एक सेवा खाता (sa) बनाया जाता है जिसे pipeline कहा जाता है। जब एक Pipeline चलाई जाती है, तो YAML फ़ाइल में परिभाषित कार्यों को चलाने के लिए इस sa का उपयोग करके एक pod उत्पन्न किया जाएगा जिसे `pipeline` कहा जाता है। {{#ref}} https://tekton.dev/docs/getting-started/pipelines/ {{#endref}} ### Pipeline सेवा खाता क्षमताएँ डिफ़ॉल्ट रूप से, pipeline सेवा खाता `pipelines-scc` क्षमता का उपयोग कर सकता है। यह tekton की वैश्विक डिफ़ॉल्ट कॉन्फ़िगरेशन के कारण है। वास्तव में, tekton की वैश्विक कॉन्फ़िगरेशन भी एक YAML है जो एक openshift ऑब्जेक्ट में है जिसे `TektonConfig` कहा जाता है जिसे आप क्लस्टर में कुछ रीडर भूमिकाएँ होने पर देख सकते हैं। ```yaml 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 बना सकता हूँ: ```yaml apiVersion: v1 kind: Namespace metadata: name: test-namespace annotations: operator.tekton.dev/scc: privileged ``` tekton ऑपरेटर `test-namespace` में पाइपलाइन सेवा खाते को scc privileged का उपयोग करने की क्षमता देगा। इससे नोड को माउंट करने की अनुमति मिलेगी। ### समाधान Tekton दस्तावेज़ों में `TektonConfig` ऑब्जेक्ट में लेबल जोड़कर scc के ओवरराइड को प्रतिबंधित करने के बारे में बताया गया है। {{#ref}} https://tekton.dev/docs/operator/sccconfig/ {{#endref}} इस लेबल को `max-allowed` कहा जाता है। ```yaml apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: ... ... platforms: openshift: scc: default: "restricted-v2" maxAllowed: "privileged" ```