குறிப்பு. மொழிபெயர்: அசல் கட்டுரையை எழுதியவர் ஜோஷ் ரோஸ்ஸோ, VMware இன் கட்டிடக் கலைஞர், அவர் முன்பு CoreOS மற்றும் Heptio போன்ற நிறுவனங்களில் பணிபுரிந்தார், மேலும் குபெர்னெட்டஸ் ஆல்ப்-இன்க்ரஸ்-கண்ட்ரோலரின் இணை ஆசிரியரும் ஆவார். வெற்றிகரமான கிளவுட் பூர்வீக சகாப்தத்தில் கூட விம்மை விரும்பும் "பழைய பள்ளி" செயல்பாட்டு பொறியாளர்களுக்கு மிகவும் பயனுள்ளதாக இருக்கும் ஒரு சிறிய செய்முறையை ஆசிரியர் பகிர்ந்துள்ளார்.
விம்மில் குபெர்னெட்டஸுக்கு YAML மெனிஃபெஸ்டை எழுதுவது? இந்த விவரக்குறிப்பில் அடுத்த புலம் எங்கே இருக்க வேண்டும் என்பதைக் கண்டுபிடிக்க எண்ணற்ற மணிநேரங்களைச் செலவிட்டீர்களா? அல்லது வித்தியாசத்தின் விரைவான நினைவூட்டலை நீங்கள் பாராட்டலாம் args и command? நல்ல செய்தி இருக்கிறது! Vim உடன் இணைப்பது எளிது yaml-language-serverதானியங்கி நிறைவு, சரிபார்ப்பு மற்றும் பிற வசதிகளைப் பெற. இதற்கு ஒரு மொழி சேவையக கிளையண்டை எவ்வாறு அமைப்பது என்பது பற்றி இந்த கட்டுரையில் பேசுவோம்.
(அசல் கட்டுரையும் கூட வீடியோ இருக்கிறதா, ஆசிரியர் பேசுகிறார் மற்றும் பொருளின் உள்ளடக்கங்களை நிரூபிக்கிறார்.)
மொழி சேவையகம்
மொழி சேவையகங்கள் (மொழி சேவையகங்கள்) எடிட்டர்கள் மற்றும் IDE களுக்கு நிரலாக்க மொழிகளின் திறன்களைப் பற்றி பேசுங்கள், அதற்காக அவர்கள் ஒரு சிறப்பு நெறிமுறையைப் பயன்படுத்தி ஒருவருக்கொருவர் தொடர்பு கொள்கிறார்கள் - மொழி சேவையக நெறிமுறை (LSP). இது ஒரு சிறந்த அணுகுமுறையாகும், ஏனெனில் இது ஒரே நேரத்தில் பல எடிட்டர்கள்/ஐடிஇகளுக்கு தரவை வழங்க ஒரு செயலாக்கத்தை அனுமதிக்கிறது. நான் ஏற்கனவே நான் எழுதிய பற்றி gopls - கோலாங்கிற்கான மொழி சேவையகம் - மற்றும் அதை எவ்வாறு பயன்படுத்தலாம் ஊக்கம். குபெர்னெட்ஸிற்கான YAML இல் தானாக நிறைவு பெறுவதற்கான படிகள் ஒத்தவை.
விவரிக்கப்பட்ட வழியில் விம் வேலை செய்ய, நீங்கள் ஒரு மொழி சேவையக கிளையண்டை நிறுவ வேண்டும். எனக்குத் தெரிந்த இரண்டு முறைகள் LanguageClient-neovim и coc.vim. கட்டுரையில் நான் கருத்தில் கொள்கிறேன் coc.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.vim கட்டமைக்கப்பட்டது, சேவையக நீட்டிப்பை நிறுவவும் coc-yaml vim இலிருந்து:
:CocInstall coc-yaml
இறுதியாக, நீங்கள் பெரும்பாலும் உள்ளமைவுடன் தொடங்க விரும்புவீர்கள் coc-vim, வழங்கினார் எடுத்துக்காட்டாக. குறிப்பாக, இது கலவையை செயல்படுத்துகிறது +வெளி தானியங்கு நிறைவு அழைப்பு.
yaml-language-server கண்டறிதலை அமைக்கிறது
என்று coc yaml-language-server ஐப் பயன்படுத்தலாம், YAML கோப்புகளைத் திருத்தும் போது Kubernetes இலிருந்து ஸ்கீமாவை ஏற்றும்படி கேட்கப்பட வேண்டும். இது எடிட்டிங் மூலம் செய்யப்படுகிறது coc-config:
:CocConfig
கட்டமைப்பில் நீங்கள் சேர்க்க வேண்டும் kubernetes அனைத்து கோப்புகளுக்கும் yaml. நான் கூடுதலாக ஒரு மொழி சேவையகத்தைப் பயன்படுத்துகிறேன் golangஎனவே எனது பொதுவான கட்டமைப்பு இதுபோல் தெரிகிறது:
kubernetes - வரையறுக்கப்பட்ட URL இலிருந்து குபெர்னெட்ஸ் ஸ்கீமாவைப் பதிவிறக்க மொழி சேவையகத்திற்குச் சொல்லும் ஒதுக்கப்பட்ட புலம் இந்த நிலையானது. yaml.schemas கூடுதல் திட்டங்களை ஆதரிக்க விரிவாக்கலாம் - மேலும் விவரங்களுக்கு, பார்க்கவும் தொடர்புடைய ஆவணங்கள்.
இப்போது நீங்கள் ஒரு YAML கோப்பை உருவாக்கி, தானியங்குநிரப்புதலைப் பயன்படுத்தத் தொடங்கலாம். அழுத்துகிறது +வெளி (அல்லது vim இல் உள்ளமைக்கப்பட்ட பிற கலவை) தற்போதைய சூழலுக்கு ஏற்ப கிடைக்கக்கூடிய புலங்கள் மற்றும் ஆவணங்களைக் காட்ட வேண்டும்:
இங்கு வேலை செய்கிறது +இடம் ஏனெனில் நான் கட்டமைத்தேன் inoremap <silent><expr> <c-space> coc#refresh(). நீங்கள் இதைச் செய்யவில்லை என்றால், பார்க்கவும் coc.nvim README ஒரு எடுத்துக்காட்டு உள்ளமைவுக்கு.
Kubernetes API பதிப்பைத் தேர்ந்தெடுக்கிறது
இதை எழுதும் வரை, குபெர்னெட்டஸ் 1.14.0 திட்டங்களுடன் yaml-language-server அனுப்பப்படுகிறது. ஸ்கீமாவை டைனமிக் முறையில் தேர்ந்தெடுப்பதற்கான வழியை நான் கண்டுபிடிக்கவில்லை, அதனால் நான் திறந்தேன் தொடர்புடைய GitHub சிக்கல். அதிர்ஷ்டவசமாக, மொழி சேவையகம் தட்டச்சு வடிவத்தில் எழுதப்பட்டிருப்பதால், பதிப்பை கைமுறையாக மாற்றுவது மிகவும் எளிதானது. இதைச் செய்ய, கோப்பைக் கண்டறியவும் server.ts.
உங்கள் கணினியில் அதைக் கண்டறிய, விம் உடன் YAML கோப்பைத் திறந்து, செயல்முறையைக் கண்டறியவும் 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 க்கான வரைபடத்தில் இல்லை ஸ்டார்ட்அப் ப்ரோப்:
சுருக்கம்
இந்த வாய்ப்பு என்னைப் போலவே உங்களையும் மகிழ்விக்கும் என்று நம்புகிறேன். இனிய யாம்லிங்! கட்டுரையில் குறிப்பிடப்பட்டுள்ள பயன்பாடுகளை நன்கு புரிந்துகொள்ள இந்த களஞ்சியங்களைப் பார்க்கவும்: