हिन्दी

डेवलपर टूल · सिंटेक्स कन्वर्टर्स

Kubectl JSON आउटपुट को एक मेनिफेस्ट में बदलना जिसे आप वास्तव में पढ़ सकते हैं

· यह क्यों मायने रखती है

json yaml डेवलपर-वर्कफ़्लो

निरीक्षण के लिए एक सघन JSON संसाधन इंडेंटेड YAML पेड़ में खुल रहा है
मूल ToolAcre वेक्टर चित्रण

कुबेरनेट्स टूलींग JSON उत्सर्जित करता है जो सटीक है लेकिन स्कैन करना कठिन है, जबकि मैनिफ़ेस्ट YAML में लिखे गए हैं। यह पोस्ट दिखाती है कि क्यों उनके बीच रूपांतरण करने से संसाधन परिभाषाओं को पढ़ने, तुलना करने और पुन: उपयोग करने की गति तेज हो जाती है।

सुबह 2 पर ब्रेसिज़ की दो सौ लाइनें - एक परिनियोजन JSON के रूप में प्राप्त किया गया और जिस फ़ील्ड की आपको आवश्यकता है उसे स्टेटस ब्लॉक में दफन कर दिया गया है

किसी घटना के दौरान, एक बड़ी संसाधन वस्तु मेटाडेटा और स्थिति के बीच प्रासंगिक चयनकर्ता या स्थिति को दफन कर सकती है। कैप्चर किए गए JSON को इंडेंटेड YAML में परिवर्तित करने से सामान्य ऑब्जेक्ट, सरणी, बूलियन, संख्या, स्ट्रिंग और शून्य मानों को बदले बिना विराम चिह्न हटा दिया जाता है। लाभ दृश्य स्कैनिंग है, सत्य का कोई नया स्रोत नहीं।

किसी भी ब्राउज़र पेज का उपयोग करने से पहले टोकन, पते और पहचानकर्ताओं को संशोधित करें। ToolAcre JSON को सख्ती से पार्स करता है और YAML को स्थानीय रूप से डंप करता है। यह किसी क्लस्टर से संपर्क नहीं करता है या नहीं जानता है कि ऑब्जेक्ट क्यूबेक्टल, किसी अन्य क्लाइंट या सहेजे गए फिक्स्चर से आया है या नहीं।

क्यों API JSON बोलता है और मनुष्य YAML लिखते हैं - API सर्वर का प्रारूप, प्रकट परंपरा, और क्यों दोनों एक ही वस्तु का वर्णन करते हैं

उसी JSON आकार के संसाधन वृक्ष को YAML मैपिंग और अनुक्रम के रूप में दर्शाया जा सकता है। यह रिपॉजिटरी यह स्थापित नहीं करती है कि एक विशेष कुबेरनेट्स घटक एक तार प्रतिनिधित्व क्यों चुनता है या प्रत्येक API समापन बिंदु मीडिया प्रकारों पर कैसे बातचीत करता है, इसलिए लेख सामान्य अभ्यास को कुबेरनेट्स आंतरिक के बारे में कार्यान्वयन दावे में बदलने से बचाता है।

जो सिद्ध किया जा सकता है वह संकीर्ण है: JSON इनपुट को JavaScript मान में पार्स किया जाता है और js-yaml उस मान को ब्लॉक शैली में क्रमबद्ध करता है। सारणियाँ क्रमबद्ध रहती हैं, ऑब्जेक्ट कुंजियाँ समान मानों से जुड़ी रहती हैं, और अस्पष्ट स्ट्रिंग्स को सुरक्षात्मक उद्धरण प्राप्त होते हैं।

JSON और YAML समान संसाधन वृक्ष ले जा सकते हैं; API परिवहन दावे इस कन्वर्टर के साक्ष्य से बाहर हैं

इंडेंटेशन और डैश नेस्टिंग को स्कैन करना आसान बनाते हैं, जबकि ब्लॉक स्केलर मल्टीलाइन स्ट्रिंग्स को पढ़ने योग्य बना सकते हैं। वे क्रमबद्ध विकल्प हैं। वे स्थिति नहीं हटाते, API संस्करण को मान्य नहीं करते, या किसी लाइव ऑब्जेक्ट को पुन: आवेदन के लिए उपयुक्त नहीं बनाते। एक उद्धृत तिथि जैसी स्ट्रिंग तब भी टेक्स्ट बनी रहती है जब YAML JSON से कम स्पष्ट दिखती है।

फ़ील्ड का पता लगाने, आकृतियों की तुलना करने और एक समीक्षा प्रति तैयार करने के लिए रूपांतरण का उपयोग करें। सटीक साक्ष्य के लिए मूल JSON रखें। यदि सॉर्ट-कुंजी विकल्प सक्षम किया गया है, तो ऑब्जेक्ट प्रस्तुति आगे बदल जाती है जबकि सरणी क्रम अछूता रहता है।

YAML प्रस्तुति को बदलता है, कुबेरनेट्स ऑब्जेक्ट या उसकी वैधता को नहीं

एक लाइव ऑब्जेक्ट में अक्सर उसके सर्वर या नियंत्रकों द्वारा बनाए गए फ़ील्ड होते हैं। `status`, `managedFields`, `uid` या `resourceVersion` को हटाना पुन: प्रयोज्य मैनिफ़ेस्ट के लिए उपयुक्त हो सकता है, लेकिन ToolAcre उस नीति को नहीं जानता है और उन्हें कभी नहीं हटाता है। रूपांतरण के बाद प्रत्येक विलोपन एक जानबूझकर कुबेरनेट्स-जागरूक संपादन होना चाहिए।

अन्य फ़ील्ड उत्पन्न हो सकते हैं फिर भी इरादे को संरक्षित करने के लिए अभी भी आवश्यक है। गिट में संस्करण के साथ तुलना करें और याद की गई क्लीनअप सूची को लागू करने के बजाय मालिक सिस्टम के वर्तमान दस्तावेज़ से परामर्श लें। कन्वर्टर जानबूझकर डोमेन शब्दार्थ के प्रति अंधा है।

व्यावहारिक उदाहरण: JSON के रूप में प्राप्त एक सेवा - YAML में कन्वर्ट करना, सर्वर-पॉप्युलेट फ़ील्ड को हटाना और गिट में संस्करण के साथ तुलना करना

मेटाडेटा, स्पेक पोर्ट और एक स्टेटस ब्लॉक के साथ एक संशोधित सेवा-आकार वाली वस्तु लें। इसे YAML में परिवर्तित करें, अपनी परिचालन प्रक्रिया का उपयोग करके सर्वर-पॉप्युलेटेड फ़ील्ड की पहचान करें, और केवल पुन: प्रयोज्य आर्टिफैक्ट के लिए स्वीकृत फ़ील्ड को हटा दें। किसी भी लागू चरण से पहले संस्करण नियंत्रण के साथ लेबल, चयनकर्ताओं, पोर्ट और प्रकारों की तुलना करें।

YAML लेखक अपने प्रकारों की सुरक्षा के लिए `NO`, `yes`, `1.0` या दिनांक-दिखने वाले पाठ जैसे स्ट्रिंग उद्धृत कर सकता है। वे उद्धरण ऐसे नहीं हैं जिन्हें यूँ ही हटा दिया जाए। संपादित YAML को JSON में पुनः परिवर्तित करें और डेटा ट्री की तुलना करें, जबकि यह याद रखें कि संपादन के दौरान जोड़ी गई टिप्पणियाँ उस रिवर्स पास से बच नहीं सकती हैं।

विपरीत दिशा - YAML मेनिफ़ेस्ट को JSON में परिवर्तित करके यह देखने के लिए कि API को वास्तव में क्या प्राप्त होगा, जिसमें उद्धृत मान कैसे टाइप किए गए हैं

विपरीत दिशा उपलब्ध है. YAML को सख्त JSON स्कीमा या कोर स्कीमा के अंतर्गत पढ़ा जाता है, फिर JSON को चयनित इंडेंटेशन के साथ लिखा जाता है। सख्त मोड `~`, खाली मान और `0o755` को टेक्स्ट के रूप में रखता है; कोर उन्हें अलग ढंग से हल करता है। न ही `NO` को झूठा मानता है।

इससे यह स्पष्ट दृश्य मिलता है कि ToolAcre का पार्सर JSON-आकार के डेटा के रूप में क्या भेजेगा। यह साबित नहीं करता है कि क्लस्टर की YAML लाइब्रेरी या स्कीमा प्रवेश क्या करेगा, विशेष रूप से कस्टम टैग या एप्लिकेशन-विशिष्ट फ़ील्ड के लिए।

इसमें क्या शामिल नहीं है - कुबेरनेट्स स्कीमा के विरुद्ध मेनिफेस्ट को मान्य करना, जिसके लिए कुबेक्टल के ड्राई-रन या स्कीमा टूल की आवश्यकता होती है

कोई Kubernetes स्कीमा, CRD परिभाषा या प्रवेश नियम लोड नहीं किया गया है। अज्ञात फ़ील्ड, अप्रचलित संस्करण और अमान्य संयोजन पूरी तरह से परिवर्तित हो सकते हैं। उन प्रश्नों के लिए लक्ष्य प्लेटफ़ॉर्म के ड्राई-रन या स्कीमा-जागरूक सत्यापनकर्ता का उपयोग करें।

ToolAcre भी प्रमाणित नहीं कर सकता, लाइव संसाधन नहीं ला सकता या वांछित और देखी गई स्थिति की तुलना नहीं कर सकता। इसका काम सिंटैक्स मैपिंग पर समाप्त होता है। उस सीमा को स्पष्ट रखने से पढ़ने योग्य फ़ाइल को गलती से स्वीकृत मैनिफ़ेस्ट समझने से रोका जा सकता है।

टेकअवे: YAML में पढ़ें, JSON में सत्यापित करें - और सिंटैक्स कन्वर्टर्स पैनल टैब छोड़े बिना दोनों के बीच कैसे स्विच करता है

नोटेशन में एक संसाधन पढ़ें जो कार्य में मदद करता है, लेकिन उसके डेटा और डोमेन नियमों को अलग से सत्यापित करें। JSON स्पष्ट विराम चिह्न प्रदान करता है; YAML एक कॉम्पैक्ट ब्लॉक दृश्य प्रदान करता है। सामान्य JSON-आकार के मानों के लिए, दोनों पेड़ को संरक्षित कर सकते हैं, भले ही टिप्पणियाँ और शैली राउंड-ट्रिप नहीं कर सकते।

सिंटेक्स कन्वर्टर्स ब्राउज़र में उन दृश्यों के बीच स्विच करता है और स्कीमा विकल्पों और चेतावनियों को उजागर करता है। इसे निरीक्षण चरण के रूप में उपयोग करें, न कि फ़ील्ड हटाने या संसाधन तैनात करने के अधिकार के रूप में।

घटना नोट्स के लिए, मूल कमांड आउटपुट, परिवर्तित निरीक्षण प्रतिलिपि और प्रत्येक मैन्युअल विलोपन को अलग-अलग कलाकृतियों के रूप में रिकॉर्ड करें। वह निशान एक अन्य इंजीनियर को यह भेद करने देता है कि पठनीयता या पुन: उपयोग के लिए हटाए गए क्लस्टर से क्या लौटा। यह एक साफ़ YAML अंश को संपूर्ण लाइव संसाधन समझने की भूल से भी रोकता है। कन्वर्टर केवल नोटेशन परिवर्तन में योगदान देता है; उद्गम और परिवर्तन नियंत्रण परिचालन वर्कफ़्लो का हिस्सा बने हुए हैं।