टिप्पणी। अनुवाद।: मूल लेख वीएमवेयर के एक वास्तुकार जोश रोसो द्वारा लिखा गया था, जो पहले कोरओएस और हेप्टियो जैसी कंपनियों में काम करते थे, और कुबेरनेट्स अल्ब-इनग्रेस-कंट्रोलर के सह-लेखक भी हैं। लेखक एक छोटा सा नुस्खा साझा करता है जो "पुराने स्कूल" संचालन इंजीनियरों के लिए बहुत उपयोगी हो सकता है जो विजयी क्लाउड नेटिव के युग में भी विम को पसंद करते हैं।
विम में कुबेरनेट्स के लिए YAML मेनिफ़ेस्ट लिखना? यह पता लगाने में अनगिनत घंटे खर्च हो गए कि इस विनिर्देश में अगला क्षेत्र कहाँ होना चाहिए? या हो सकता है कि आप अंतर की एक त्वरित अनुस्मारक की सराहना करेंगे args и command? अच्छी खबर है! विम से लिंक करना आसान है yaml-भाषा-सर्वरस्वचालित पूर्णता, सत्यापन और अन्य सुविधाएं प्राप्त करने के लिए। इस लेख में हम इसके लिए भाषा सर्वर क्लाइंट कैसे सेट करें, इसके बारे में बात करेंगे।
(मूल लेख भी एक वीडियो है, जहां लेखक सामग्री की सामग्री पर बात करता है और प्रदर्शित करता है।)
भाषा सर्वर
भाषा सर्वर (भाषा सर्वर) संपादकों और आईडीई से प्रोग्रामिंग भाषाओं की क्षमताओं के बारे में बात करें, जिसके लिए वे एक विशेष प्रोटोकॉल का उपयोग करके एक दूसरे के साथ बातचीत करते हैं - भाषा सर्वर प्रोटोकॉल (एलएसपी)। यह एक बेहतरीन दृष्टिकोण है क्योंकि यह एक कार्यान्वयन को एक साथ कई संपादकों/आईडीई को डेटा प्रदान करने की अनुमति देता है। मेरे पास पहले से ही है मैंने लिखा था के बारे में गोपाल - गोलांग के लिए एक भाषा सर्वर - और इसका उपयोग कैसे किया जा सकता है शक्ति. कुबेरनेट्स के लिए YAML में स्वत: पूर्णता प्राप्त करने के चरण समान हैं।
विम को वर्णित तरीके से काम करने के लिए, आपको एक भाषा सर्वर क्लाइंट स्थापित करने की आवश्यकता होगी। मैं जिन दो विधियों के बारे में जानता हूं वे हैं लैंग्वेजक्लाइंट-नियोविम и coc.vim. लेख में मैं विचार करूंगा coc.vim - यह इस समय सबसे लोकप्रिय प्लगइन है। आप इसे माध्यम से इंस्टॉल कर सकते हैं vim-प्लग:
" Use release branch (Recommend)
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" Or build from source code by use yarn: https://yarnpkg.com
Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'}
शुरुआत के लिए coc (और इस प्रकार yaml-भाषा-सर्वर) को नोड.जेएस स्थापित करने की आवश्यकता होगी:
curl -sL install-node.now.sh/lts | bash
जब coc.vim कॉन्फ़िगर किया गया, सर्वर एक्सटेंशन इंस्टॉल करें coc-yaml विम से:
:CocInstall coc-yaml
अंत में, आप संभवतः कॉन्फ़िगरेशन के साथ शुरुआत करना चाहेंगे coc-vim, पेश किया एक उदाहरण के रूप में. विशेष रूप से, यह संयोजन को सक्रिय करता है +अंतरिक्ष स्वत: पूर्णता को कॉल करने के लिए.
yaml-भाषा-सर्वर पहचान की स्थापना
कि coc yaml-भाषा-सर्वर का उपयोग कर सकता है, YAML फ़ाइलों को संपादित करते समय इसे Kubernetes से स्कीमा लोड करने के लिए कहा जाना चाहिए। यह संपादन द्वारा किया जाता है coc-config:
:CocConfig
कॉन्फ़िगरेशन में आपको जोड़ना होगा kubernetes सभी फ़ाइलों के लिए yaml. मैं इसके लिए एक भाषा सर्वर का भी उपयोग करता हूं golangतो मेरी सामान्य कॉन्फ़िगरेशन इस तरह दिखती है:
kubernetes - एक आरक्षित फ़ील्ड जो भाषा सर्वर को परिभाषित यूआरएल से कुबेरनेट्स स्कीमा डाउनलोड करने के लिए कहता है यह स्थिरांक. yaml.schemas अतिरिक्त योजनाओं का समर्थन करने के लिए इसका विस्तार किया जा सकता है - अधिक जानकारी के लिए देखें प्रासंगिक दस्तावेज.
अब आप एक YAML फ़ाइल बना सकते हैं और स्वत: पूर्णता का उपयोग शुरू कर सकते हैं। दबाना +अंतरिक्ष (या vim में कॉन्फ़िगर किया गया अन्य संयोजन) को वर्तमान संदर्भ के अनुसार उपलब्ध फ़ील्ड और दस्तावेज़ दिखाना चाहिए:
यहाँ काम करता है +स्पेस क्योंकि मैंने कॉन्फ़िगर किया है inoremap <silent><expr> <c-space> coc#refresh(). अगर आपने ऐसा नहीं किया तो देख लीजिए coc.nvim README एक उदाहरण विन्यास के लिए.
कुबेरनेट्स एपीआई संस्करण का चयन
इस लेखन के समय, yaml-भाषा-सर्वर कुबेरनेट्स 1.14.0 स्कीमा के साथ आता है। मुझे स्कीमा को गतिशील रूप से चुनने का कोई तरीका नहीं मिला, इसलिए मैंने खोल दिया संगत GitHub मुद्दा. सौभाग्य से, चूंकि भाषा सर्वर टाइपस्क्रिप्ट में लिखा गया है, इसलिए संस्करण को मैन्युअल रूप से बदलना काफी आसान है। ऐसा करने के लिए, बस फ़ाइल ढूंढें server.ts.
अपनी मशीन पर इसका पता लगाने के लिए, बस YAML फ़ाइल को vim के साथ खोलें और प्रक्रिया ढूंढें yaml-language-server.
हमारे लिए प्रासंगिक प्रक्रिया प्रक्रिया 2380 है: YAML फ़ाइल को संपादित करते समय vim इसका उपयोग करता है।
जैसा कि आप आसानी से देख सकते हैं, फ़ाइल स्थित है /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. बस मान बदलकर इसे संपादित करें KUBERNETES_SCHEMA_URL, उदाहरण के लिए, संस्करण 1.17.0 के लिए:
// old 1.14.0 schema
//exports.KUBERNETES_SCHEMA_URL = "https://raw.githubusercontent.com/garethr/kubernetes-json-schema/master/v1.14.0-standalone-strict/all.json";
// new 1.17.0 schema in instrumenta repo
exports.KUBERNETES_SCHEMA_URL = "https://raw.githubusercontent.com/instrumenta/kubernetes-json-schema/master/v1.17.0-standalone-strict/all.json";
प्रयुक्त संस्करण पर निर्भर करता है coc-yaml कोड में वेरिएबल का स्थान भिन्न हो सकता है। कृपया यह भी ध्यान दें कि मैंने रिपॉजिटरी को बदल दिया है garethr पर instrumenta. यह लगता है कि garethr वहां सहायक सर्किट पर स्विच किया गया।
यह जांचने के लिए कि परिवर्तन प्रभावी हो गया है, देखें कि क्या कोई ऐसा फ़ील्ड दिखाई देता है जो पहले [कुबेरनेट्स के पिछले संस्करणों में] नहीं था। उदाहरण के लिए, K8s 1.14 के आरेख में कोई नहीं था स्टार्टअप जांच:
सारांश
मुझे आशा है कि यह अवसर आपको भी उतना ही प्रसन्न करेगा जितना मुझे। हैप्पी यमलिंग! लेख में उल्लिखित उपयोगिताओं को बेहतर ढंग से समझने के लिए इन रिपॉजिटरी को अवश्य देखें: