Vim b'appoġġ YAML għal Kubernetes

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.

Vim b'appoġġ YAML għal Kubernetes

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.

Vim b'appoġġ YAML għal Kubernetes

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

Vim b'appoġġ YAML għal Kubernetes

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:

{
  "languageserver": {
      "golang": {
        "command": "gopls",
        "rootPatterns": ["go.mod"],
        "filetypes": ["go"]
      }
  },

  "yaml.schemas": {
      "kubernetes": "/*.yaml"
  }
}

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:

Vim b'appoġġ YAML għal Kubernetes
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.

ps aux | grep -i yaml-language-server

joshrosso         2380  45.9  0.2  5586084  69324   ??  S     9:32PM   0:00.43 /usr/local/Cellar/node/13.5.0/bin/node /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js --node-ipc --node-ipc --clientProcessId=2379
joshrosso         2382   0.0  0.0  4399352    788 s001  S+    9:32PM   0:00.00 grep -i 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:

Vim b'appoġġ YAML għal Kubernetes

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:

PS minn traduttur

U hemm ukoll vikube, vim-kubernetes и vimkubectl.

Aqra wkoll fuq il-blog tagħna:

Sors: www.habr.com

Żid kumment