MĂ€rk. tĂ”lge.: originaali kirjutas Josh Rosso â VMware'i arhitekt, kes on varem töötanud ettevĂ”tetes nagu CoreOS ja Heptio, ning on ka Kubernetes alb-ingress-controlleri kaasautor. Autor jagab vĂ€ikest retsepti, mis vĂ”ib osutuda vĂ€ga kasulikuks 'vana kooli' sĂŒsteemiadministraatoritele, kes eelistavad vim'i isegi cloud native'i ajastul.

Kas kirjutate Kubernetes'e YAML-manifeste vim'is? Olete veetnud lugematuid tunde, pĂŒĂŒdes mĂ”ista, kuhu peaks see spetsifikatsioonis jĂ€rgmine vĂ€li minema? VĂ”ib-olla oleks teile meeltmööda kiire meenutus erinevuste kohta args ja command? ĐŃŃŃ Ń
ĐŸŃĐŸŃОД ĐœĐŸĐČĐŸŃŃĐž! Vim лДгĐșĐŸ ĐżŃĐžĐČŃзаŃŃ Đș , et saada automaatset tĂ€iendamist, valideerimist ja muid mugavusi. Artiklis arutame, kuidas selle jaoks keeltserveri klient seadistada.
(Algse artikli juures on ka , kus autor rÀÀgib ja demonstreerib materjali sisu.)
Keeltserver
Keeltserverid (language servers) rÀÀgivad programmeerimiskeelte vĂ”imalustest redaktoritele ja IDE-dele, millega nad suhtlevad spetsiaalse protokolli kaudu â (LSP). See on suurepĂ€rane lĂ€henemine: see vĂ”imaldab ĂŒhel teostusel andmeid pakkuda mitmele redaktorile/IDE-le. Mina olen juba rÀÀkinud â Go keele server â ja kuidas seda saab kasutada . YAML automaatse tĂ€itmise saamiseks Kuberneteses on toimingud sarnased.

Et vim töötaks kirjeldatud viisil, tuleb installida keeleserveri klient. Kaks mulle teadaolevat meetodit on ja . Artiklis kĂ€sitlen coc.vim â see on praegu kĂ”ige populaarsem plugin. Selle saab installida lĂ€bi :
" Kasuta vÀljaandmise haru (Soovitatav)
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" VÔi ehita allikakoodist yarni abil: https://yarnpkg.com
Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'} KĂ€ivitamiseks coc (ja seega yaml-language-serveri serveri) on vajalik, et oleks installitud node.js:
curl -sL install-node.now.sh/lts | bash Kui coc.vim Kui see on seadistatud, installige serverilaiendus coc-yaml vimâist:
:CocInstall coc-yaml 
LĂ”puks soovite tĂ”enĂ€oliselt alustada coc-vimkonfiguratsiooniga, mis on esitatud . EelkĂ”ige aktiveerib see kombinatsiooni +tĂŒhik autotĂ€idete kutsumiseks.
yaml-language-serveri tuvastamise seadistamine
Et coc sa vÔid kasutada yaml-language-server'i, seda tuleb taotleda, et laadida Kubernetes'i skeem YAML-failide redigeerimisel. See toimub redigeerimise teel. coc-config:
:CocConfig Konfiguratsioonis tuleb lisada kubernetes kĂ”ikidele failidele yaml. Ma kasutan ka keele serverit golang, seega nĂ€eb mu ĂŒldine konfiguratsioon vĂ€lja selline:
{
"languageserver": {
"golang": {
"command": "gopls",
"rootPatterns": ["go.mod"],
"filetypes": ["go"]
}
},
"yaml.schemas": {
"kubernetes": "/*.yaml"
}
} kubernetes â reservitud vĂ€li, mis teavitab keele serverit vajadusest laadida Kubernetes'i skeem URL-ilt, mis on mÀÀratud . yaml.schemas vĂ”ib laiendada tĂ€iendavate skeemide toe lisamisega â lisainfot leiate .
NĂŒĂŒd saab luua YAML-faili ja hakata kasutama autokomplekteerimist. Klahvi vajutamine +tĂŒhik (vĂ”i mĂ”ne muu kombinatsiooni, mis on seadistatud vim'is) peaks nĂ€itama praegusele kontekstile vastavaid saadaolevaid vĂ€lju ja dokumentatsiooni:

Siin töötab +tĂŒhik, sest olen seadistanud inoremap coc#refresh(). Kui te seda ei teinud â vaadake konfiguratsiooni nĂ€ite jaoks.
Kubernetes API versiooni valimine
KĂ€esoleva artikli kirjutamise ajal tarnib yaml-language-server Kubernetes 1.14.0 skeemid. Ma ei leidnud viisi skeemi dĂŒnaamiliseks valimiseks, seega avasin . Ănneks, kuna keeleserver on kirjutatud typescriptis, on versiooni kĂ€sitsi muutmine ĂŒsna lihtne. Selleks tuleb lihtsalt leida fail server.ts.
Selle leidmiseks oma masinas avage YAML-fail vimiga ja otsige protsessi, millel on 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-serverMeie jaoks on oluline protsess 2380: just seda kasutab vim YAML-faili redigeerimisel.
Kuidas nÀha, on fail asukoht /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Piisab selle redigeerimisest, muutes vÀÀrtuse KUBERNETES_SCHEMA_URL, nÀiteks versiooniks 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"; SĂ”ltuvalt kasutatavast coc-yaml muutuja asukoht koodis vĂ”ib erineda. Pange tĂ€hele, et olen samuti muutnud repository't garethr jĂ€rgnevaga instrumenta. Tundub, et garethr on seal ĂŒle lĂ€inud skeemide toetamisse.
Kontrollige, kas muudatus on kehtestatud, vaadates, kas ilmub vÀlja, mida varem [Kubernetes'i varasemates versioonides] ei olnud. NÀiteks K8s 1.14 skeemis ei olnud :

KokkuvÔte
Loodan, et see vĂ”imalus rÔÔmustas teid mitte vĂ€hem kui mind. Head YAML'i kirjutamist! Ăra unusta tutvuda nende hoidlate ja tööriistadega, millest artiklis rÀÀgiti:
- coc-vim: ;
- coc-yaml: .
P.S. tÔlkija mÀrkused
Ja veel on olemas , ja .
Lugege ka meie blogist:
- «»;
- «».
Allikas: habr.com
