Nota. transl.: L-artiklu oriġinali nkiteb minn Josh Rosso, perit f'VMware li qabel kien jaħdem f'kumpaniji bħal CoreOS u Heptio, u huwa wkoll il-ko-awtur tal-Kubernetes alb-ingress-controller. L-awtur jaqsam riċetta żgħira li tista 'tkun utli ħafna għall-inġiniera tal-operazzjonijiet ta' "skola l-qadima" li jippreferu vim anke fl-era tas-sħab rebbieħ indiġeni.
Tikteb manifesti YAML għal Kubernetes f'vim? Għamilt għadd ta' sigħat tipprova tara fejn għandu jkun il-qasam li jmiss f'din l-ispeċifikazzjoni? Jew forsi tapprezza tfakkira malajr tad-differenza args и command? Hemm aħbar tajba! Vim huwa faċli biex jgħaqqad miegħu yaml-language-serverbiex tikseb tlestija awtomatika, validazzjoni u konvenjenzi oħra. F'dan l-artikolu ser nitkellmu dwar kif twaqqaf klijent tas-server tal-lingwa għal dan.
(L-artiklu oriġinali wkoll hemm video, fejn l-awtur jitkellem u juri l-kontenut tal-materjal.)
Server tal-lingwa
Servers tal-lingwa (servers tal-lingwa) tkellem dwar il-kapaċitajiet tal-lingwi tal-ipprogrammar lill-edituri u l-IDEs, li għalihom jinteraġixxu ma 'xulxin bl-użu ta' protokoll speċjali - Protokoll tas-Server Lingwistiku (LSP). Dan huwa approċċ kbir għaliex jippermetti implimentazzjoni waħda biex tipprovdi data lil ħafna edituri/IDEs f'daqqa. Diġà għandi kiteb madwar gopls - server tal-lingwa għal Golang - u kif jista' jintuża fi VIM. Il-passi biex tikseb l-awtokompletazzjoni f'YAML għal Kubernetes huma simili.
Sabiex vim jaħdem bil-mod deskritt, ser ikollok bżonn tinstalla klijent tas-server tal-lingwa. Iż-żewġ metodi li naf huma LanguageClient-neovim и coc.vim. Fl-artiklu se nikkunsidra coc.vim - Dan huwa l-aktar plugin popolari bħalissa. Tista 'tinstallah permezz vim-plagg:
" 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'}
Għall-bidu coc (u għalhekk il-yaml-language-server) se jeħtieġu node.js installat:
curl -sL install-node.now.sh/lts | bash
Meta coc.vim konfigurat, installa l-estensjoni tas-server coc-yaml minn vim:
:CocInstall coc-yaml
Fl-aħħarnett, x'aktarx trid tibda bil-konfigurazzjoni coc-vim, ippreżentat bħala eżempju. B'mod partikolari, jattiva l-kombinazzjoni +spazju biex isejjaħ autocompletion.
Twaqqif ta 'sejbien ta' yaml-language-server
Li coc jista' juża yaml-language-server, jeħtieġ li jintalab jgħabbi l-iskema minn Kubernetes meta teditja l-fajls YAML. Dan isir bl-editjar coc-config:
:CocConfig
Fil-konfigurazzjoni ser ikollok bżonn iżżid kubernetes għall-fajls kollha yaml. Barra minn hekk nuża server tal-lingwa għal golanggħalhekk il-konfigurazzjoni ġenerali tiegħi tidher bħal din:
kubernetes — qasam riżervat li jgħid lis-server tal-lingwa biex tniżżel l-iskema Kubernetes mill-URL definit fi din il-kostanti. yaml.schemas jistgħu jiġu estiżi biex jappoġġjaw skemi addizzjonali - għal aktar dettalji, ara dokumentazzjoni rilevanti.
Issa tista 'toħloq fajl YAML u tibda tuża l-awtokompletazzjoni. Tagħsir +spazju (jew kombinazzjoni oħra kkonfigurata f'vim) għandha turi l-oqsma u d-dokumentazzjoni disponibbli skont il-kuntest attwali:
Jaħdem hawn +spazju għax ikkonfigurajt inoremap <silent><expr> <c-space> coc#refresh(). Jekk ma għamiltx dan, ara coc.nvim README għal konfigurazzjoni eżempju.
Għażla tal-verżjoni tal-API Kubernetes
Minn din il-kitba, yaml-language-server jibgħat bi skemi Kubernetes 1.14.0. Ma sibtx mod biex nagħżel skema b'mod dinamiku, għalhekk ftaħt kwistjoni GitHub korrispondenti. Fortunatament, peress li s-server tal-lingwa huwa miktub bit-tajpja, huwa pjuttost faċli li tibdel il-verżjoni manwalment. Biex tagħmel dan, issib il-fajl server.ts.
Biex tiskopriha fuq il-magna tiegħek, sempliċiment tiftaħ il-fajl YAML ma 'vim u sib il-proċess bi yaml-language-server.
Għalina, il-proċess 2380 huwa rilevanti: huwa dak li juża vim meta jeditja fajl YAML.
Kif tistgħu taraw faċilment, il-fajl jinsab fi /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Editjaha biss billi tibdel il-valur KUBERNETES_SCHEMA_URL, pereżempju, għall-verżjoni 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";
Skont il-verżjoni użata coc-yaml Il-post tal-varjabbli fil-kodiċi jista 'jvarja. Jekk jogħġbok innota wkoll li biddilt ir-repożitorju minn garethr fuq instrumenta. Jidher li garethr qalbu għal ċirkwiti ta 'appoġġ hemmhekk.
Biex tiċċekkja li l-bidla daħlet fis-seħħ, ara jekk jidhirx qasam li ma kienx hemm qabel [f'verżjonijiet preċedenti ta' Kubernetes]. Per eżempju, fid-dijagramma għal K8s 1.14 ma kien hemm ebda startupProbe:
Sommarju
Nittama li din l-opportunità togħġobkom daqskemm għamlet lili. Happy YAMling! Kun żgur li tiċċekkja dawn ir-repożitorji biex tifhem aħjar l-utilitajiet imsemmija fl-artikolu: