MĂ€rkus tĂ”lke kohta.: algse artikli autor on Josh Rosso â VMware'i arhitekt, kes on varem töötanud sellistes ettevĂ”tetes nagu CoreOS ja Heptio, samuti on ta Kubernetes alb-ingress-controller'i kaasautor. Autor jagab vĂ€ikest retsepti, mis vĂ”ib olla vĂ€ga kasulik âvana kooliâ operatsioonitehnika inseneridele, kes eelistavad vim-i isegi pilvepĂ”hises ajastus.

Kas kirjutate YAML-manifestide jaoks Kuberneteses vim-is? Olete veetnud lugematuid tunde, pĂŒĂŒdes aru saada, kus selles spetsifikatsioonis peaks olema jĂ€rgmine vĂ€li? VĂ”ib-olla olete Ă”nnelik kiire meenutuse ĂŒle erinevuse kohta. args ja kĂ€sk? ĐŃŃŃ Ń
ĐŸŃĐŸŃОД ĐœĐŸĐČĐŸŃŃĐž! Vim лДгĐșĐŸ ĐżŃĐžĐČŃзаŃŃ Đș , et saada automaatset tĂ€iendamist, valideerimist ja muid mugavusi. Artiklis rÀÀgime sellest, kuidas seadistada keele serveri klienti selle jaoks.
(Algse artikli juurde kuulub ka , kus autor rÀÀgib ja demonstreerib materjali sisu.)
Keele server
Keele serverid (language servers) annavad programmeerimiskeelte vĂ”imed redaktoritele ja IDE-dele, mille jaoks nad suhtlevad omavahel spetsiaalse protokolli kaudu â (LSP). See on suurepĂ€rane lĂ€henemine: see vĂ”imaldab ĂŒhel teostusel andmeid kohe mitmele redaktorile/IDE-le. Ma olen juba kohta â keele server Golangile â ja kuidas seda saab kasutada Tegevused automaatse tĂ€iendamise saamiseks YAML-i jaoks Kuberneteses on sarnased.

Et vim töötaks kirjeldatud viisil, on vaja installida keele serveri klient. Kaks tuntud meetodit, mida ma tean, on ja Artiklis vaatan ĂŒle coc.vim. â see on praegu kĂ”ige populaarsem plugin. Seda saab installida lĂ€bi :
" Kasutage vÀljaandmise haru (soovitatav)
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" VÔi ehitage allikakood yarn-i abil: https://yarnpkg.com
Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'} KĂ€ivitamiseks coc (ja seega yaml-language-server'i) on vajalik, et oleksite installinud node.js:
curl -sL install-node.now.sh/lts | bash Kui coc.vim. on seadistatud, installige serveri laiendus coc-yaml vim-ist:
:CocInstall coc-yaml 
LÔpuks soovite tÔenÀoliselt alustada konfigureerimisega coc-vim, mis esitatakse EelkÔige aktiveerib see kombinatsiooni +space automaatse tÀiendamise kutsumiseks.
yaml-language-server'i avastamise seadistamine.
Et coc sa saad kasutada yaml-language-serveri, paluge tal laadida kava Kuberneteselt YAML-failide redigeerimise ajal. See toimub redigeerimise teel coc-config:
:CocConfig Konfiguratsioonis tuleb lisada kubernetes kĂ”igi failide jaoks yaml. Kasutan lisaks keele serverit golang, seega nĂ€eb minu ĂŒldine konfiguratsioon vĂ€lja selline:
{
"languageserver": {
"golang": {
"command": "gopls",
"rootPatterns": ["go.mod"],
"filetypes": ["go"]
}
},
"yaml.schemas": {
"kubernetes": "/*.yaml"
}
} kubernetes â reserveeritud vĂ€li, mis informeerib keeleserverit vajadusest laadida Kubernetes'i kava URL-ilt, mis on mÀÀratletud . yaml.schemas saab laiendada teiste kavadena â lisainfot leiate .
NĂŒĂŒd saab luua YAML-faili ja alustada autokomplektiga. Vajutamine +space (vĂ”i mĂ”ni muu kombinatsioon, mis on vim'is seadistatud) peaks nĂ€itama saadaval olevaid vĂ€lju ja dokumentatsiooni vastavalt praegusele kontekstile:

Siin töötab +tĂŒhik, kuna ma seadistasin inoremap coc#refresh(). Kui te ei ole seda teinud â vaadake konfiguratsiooni nĂ€ite jaoks.
Kubernetes API versiooni valimine
KĂ€esoleva artikli kirjutamise hetkel tarnitakse yaml-language-server koos Kubernetes'e 1.14.0 kavadaga. Ma ei leidnud viisi kava dĂŒnaamiliseks valimiseks, seega avasin . Ănneks, kuna keele server on kirjutatud TypeScriptis, on ĂŒsna lihtne versiooni kĂ€sitsi muuta. Selleks on lihtsalt vaja leida fail server.ts.
Selle leidmiseks oma masinas avage lihtsalt YAML-fail vim'iga ja otsige protsessi, kus 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-serverMeile on oluline protsess 2380: ainult seda kasutab vim YAML-faili redigeerimise ajal.
Kergesti nÀha, et fail asub /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Piisab, kui redigeerite seda, muutes vÀÀrtust 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 versioonist vÔib koodis olev muutuja asukoht olla erinev. Pange tÀhele, et muutsin ka hoidlat coc-yaml garethr instrumenta . Tundub, et on liikunud just seal skeemide toe juurde.. instrumenta on hakanud skeemide toetust just seal muutma.
Kuna kontrollida, et muudatus on jÔustunud, vaadake, kas ilmub vÀli, mida varem [Kubernetes varasemates versioonides] ei olnud. NÀiteks K8s 1.14 skeemis ei olnud. :

Elulookirjeldus
Loodan, et selline vĂ”imalus rÔÔmustas teid mitte vĂ€hem kui mind. Head YAMLâimist! Ărge unustage tutvuda nende hoidlate kogumitega, et paremini aru saada artiklis mainitud tööriistadest:
- coc-vim: ;
- coc-yaml: .
P.S. tÔlkijalt
Ja veel on olemas , ja .
Lugege ka meie blogist:
- «»;
- «».
Allikas: habr.com
