PiezÄ«me:: oriÄ£inÄlo rakstu uzrakstÄ«jis Josh Rosso ā arhitekts no VMware, kurÅ” iepriekÅ” strÄdÄjis tÄdÄs kompÄnijÄs kÄ CoreOS un Heptio, kÄ arÄ« ir Kubernetes alb-ingress-controller lÄ«dzautors. Autors dalÄs ar nelielu recepti, kas var bÅ«t ļoti noderÄ«ga Ā«vecÄs skolasĀ» inženieriem, kuri patÄ«k vim pat mÅ«sdienu cloud native laikmetÄ.

RakstÄt YAML manifestus Kubernetes vim? PavadÄ«jÄt neskaitÄmas stundas, cenÅ”oties saprast, kur Å”ajÄ specifikÄcijÄ jÄbÅ«t nÄkamajai lauka vÄrtÄ«bai? VarbÅ«t priecÄsieties par Ätru atgÄdinÄjumu par atŔķirÄ«bu args un command? ŠŃŃŃ Ń
Š¾ŃŠ¾Ńие новоŃŃŠø! Vim легко ŠæŃивŃзаŃŃ Šŗ , lai iegÅ«tu automÄtisko pabeigÅ”anu, validÄciju un citas ÄrtÄ«bas. RakstÄ runÄsim par to, kÄ to konfigurÄt valodas servera klientam.
(OriÄ£inÄlajÄ rakstÄ ir arÄ« , kur autors stÄsta un demonstrÄ materiÄla saturu.)
Valodas serveris
Valodas serveri (language servers) stÄsta par programmÄÅ”anas valodu iespÄjÄm redaktoriem un IDE, tÄdÄjÄdi tie mijiedarbojas pa Ä«paÅ”u protokolu ā (LSP). Tas ir lielisks pieejas veids: tas ļauj vienai realizÄcijai nodroÅ”inÄt datus uzreiz vairÄkÄm redaktoriem/IDE. Es jau esmu par ā valodas serveri Golang ā un kÄ to var izmantot . RÄ«cÄ«bas, lai iegÅ«tu automÄtisko pabeigÅ”anu YAML Kubernetes, ir lÄ«dzÄ«gas.

Lai vim darbotos aprakstÄ«tajÄ veidÄ, bÅ«s jÄnokļūst uz valodas servera klienta. Divi man zinÄmi veidi ir un . RakstÄ apskatīŔu coc.vim ā tas ir Å”obrÄ«d populÄrÄkais paplaÅ”inÄjums. To var instalÄt, izmantojot :
" Izmanto izlaiŔanas zaru (ieteicams)
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" Vai veido no avota koda, izmantojot yarn: https://yarnpkg.com
Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'} Lai palaistu coc (un tÄdÄjÄdi yaml-language-server serveri), ir nepiecieÅ”ams, lai bÅ«tu instalÄts node.js:
curl -sL install-node.now.sh/lts | bash Kad coc.vim ja ir konfigurÄts, uzstÄdÄ«t servera paplaÅ”inÄjumu coc-yaml no vim:
:CocInstall coc-yaml 
Visbeidzot, jÅ«s, iespÄjams, vÄlÄsieties sÄkt ar konfigurÄciju coc-vim, kas sniegta . ÄŖpaÅ”i tÄ aktivizÄ kombinÄciju +space automÄtiskÄs pabeigÅ”anas izsaukÅ”anai.
YAML-language-server atklÄÅ”anas konfigurÄÅ”ana
Lai coc varÄtu izmantot yaml-language-server, tas ir jÄlÅ«dz ielÄdÄt shÄmu no Kubernetes, rediÄ£Äjot YAML failus. To var izdarÄ«t, rediÄ£Äjot coc-config:
:CocConfig KonfigurÄcijÄ bÅ«s jÄpapildina kubernetes visiem failiem yaml. Es papildus izmantoju valodas serveri golang, tÄpÄc mans kopÄjais konfigurÄcija izskatÄs Å”Ädi:
{
"languageserver": {
"golang": {
"command": "gopls",
"rootPatterns": ["go.mod"],
"filetypes": ["go"]
}
},
"yaml.schemas": {
"kubernetes": "/*.yaml"
}
} kubernetes ā rezervÄts lauks, kas informÄ valodas serveri par nepiecieÅ”amÄ«bu ielÄdÄt Kubernetes shÄmu pÄc URL, kas noteikts . yaml.schemas var paplaÅ”inÄt ar papildu shÄmÄm ā sÄ«kÄk skat. attiecÄ«gajÄ dokumentÄcijÄ .
(vai citu kombinÄciju, kas iestatÄ«ta vim), vajadzÄtu parÄdÄ«t pieejamos laukus un dokumentÄciju, Åemot vÄrÄ paÅ”reizÄjo kontekstu: +space Å eit darbojas +space, jo es esmu iestatÄ«jis

inoremap coc#refresh() . Ja jÅ«s to neesat izdarÄ«juÅ”i ā skatietcoc.nvim README Kubernetes API versijas izvÄle
RakstīŔanas brÄ«dÄ« yaml-language-server tiek piegÄdÄts ar Kubernetes shÄmÄm 1.14.0. Es neatradu veidu, kÄ dinamiskÄs izvÄlÄties shÄmu, tÄpÄc atvÄru
atbilstoÅ”o GitHub jautÄjumu server.ts Lai to atrastu savÄ datorÄ, vienkÄrÅ”i atveriet YAML failu, izmantojot vim, un meklÄjiet procesu ar.
ps aux | grep -i yaml-language-serverjoshrosso 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 yaml-language-server.
Mums svarÄ«gs ir process 2380: tieÅ”i to izmanto vim, rediÄ£Äjot YAML failu.KÄ viegli redzÄt, fails atrodas
. Pietiek rediÄ£Ät to, mainot /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.jsKUBERNETES_SCHEMA_URL , piemÄram, uz versiju 1.17.0:AtkarÄ«bÄ no izmantotÄs versijas
// 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"; mainÄ«gÄ atraÅ”anÄs vieta kodÄ var atŔķirties. PievÄrsiet uzmanÄ«bu arÄ« tam, ka esmu mainÄ«jis repozitoriju no coc-yaml garethr instrumenta. uz . IzskatÄs, kapÄrgÄja uz atbalstu shÄmÄm tieÅ”i tur. instrumenta. Lai pÄrbaudÄ«tu, vai izmaiÅas ir spÄkÄ, skatiet, vai parÄdÄs lauks, kÄda agrÄk [iepriekÅ”ÄjÄs Kubernetes versijÄs] nebija. PiemÄram, K8s 1.14 shÄmÄ nebija
startupProbe :

CV
Ceru, ka Å”Äda iespÄja iepriecinÄja jÅ«s ne mazÄk kÄ mani. PriecÄ«gu YAMLāinga! Neaizmirstiet iepazÄ«ties ar Å”iem repozitorijiem, lai labÄk saprastu rakstÄ minÄtÄs utilÄ«tas:
- coc-vim: ;
- coc-yaml: .
P.S. no tulka
Un vÄl ir , un .
Lasiet arÄ« mÅ«su emuÄra rakstos:
- «»;
- «».
Avots: habr.com
