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
