ShĂ«n. pĂ«rkth.: Artikulli origjinal Ă«shtĂ« shkruar nga Josh Rosso â arkitekt nga VMware, i cili mĂ« parĂ« ka punuar nĂ« kompani si CoreOS dhe Heptio, dhe Ă«shtĂ« gjithashtu bashkautori i kubernetes alb-ingress-controller. Autori ndan njĂ« recetĂ« tĂ« vogĂ«l qĂ« mund tĂ« jetĂ« shumĂ« e dobishme pĂ«r inxhinierĂ«t e operacioneve "tĂ« vjetĂ«r", qĂ« preferojnĂ« vim edhe nĂ« epokĂ«n e cloud native.

A shkruani YAML manifestet pĂ«r Kubernetes nĂ« vim? A keni kaluar orĂ« tĂ« tĂ«ra duke u pĂ«rpjekur tĂ« kuptoni se ku nĂ« kĂ«tĂ« specifikim duhet tĂ« jetĂ« njĂ« fushĂ« tjetĂ«r? Apo ndoshta do tĂ« ishit tĂ« lumtur pĂ«r njĂ« kujtesĂ« tĂ« shpejtĂ« nĂ« lidhje me diferencĂ«n args dhe command? ĐŃŃŃ Ń
ĐŸŃĐŸŃОД ĐœĐŸĐČĐŸŃŃĐž! Vim лДгĐșĐŸ ĐżŃĐžĐČŃзаŃŃ Đș , pĂ«r tĂ« marrĂ« pĂ«rfundim automatik, validim dhe pĂ«rfitime tĂ« tjera. NĂ« kĂ«tĂ« artikull do tĂ« flasim se si tĂ« konfiguroni klientin e serverit tĂ« gjuhĂ«s pĂ«r kĂ«tĂ«.
(Artikulli origjinal gjithashtu , ku autori tregon dhe demonstruar përmbajtjen e materialit.)
Serveri i gjuhës
ServerĂ«t e gjuhĂ«s (language servers) i japin informacione redaktorĂ«ve dhe IDE-ve pĂ«r mundĂ«sitĂ« e gjuhĂ«ve tĂ« programimit, duke bashkĂ«punuar me njĂ«ri-tjetrin pĂ«rmes njĂ« protokolli tĂ« veçantĂ« â (LSP). Ky Ă«shtĂ« njĂ« qasje e shkĂ«lqyer: sepse lejon njĂ« implementim tĂ« ofrojĂ« tĂ« dhĂ«na pĂ«r shumĂ« redaktora/IDE-njĂ«herĂ«sh. UnĂ« tashmĂ« kam pĂ«r â serverin e gjuhĂ«s pĂ«r Golang â dhe si mund tĂ« pĂ«rdoret nĂ« . Veprimet pĂ«r tĂ« marrĂ« pĂ«rfundim automatik nĂ« YAML pĂ«r Kubernetes janĂ« tĂ« ngjashme.

PĂ«r tĂ« bĂ«rĂ« qĂ« vim tĂ« punojĂ« nĂ« kĂ«tĂ« mĂ«nyrĂ«, do tĂ« nevojitet tĂ« instaloni klientin e serverit tĂ« gjuhĂ«s. Dy mĂ«nyrat qĂ« di janĂ« dhe . NĂ« kĂ«tĂ« artikull do tĂ« shqyrtoj coc.vim â ky Ă«shtĂ« plugini mĂ« popullor nĂ« momentin e tanishĂ«m. Mund ta instaloni pĂ«rmes :
" Përdorni degën e lëshimit (Rekomandohet)
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" Ose ndërtoni nga kodi burimor duke përdorur yarn: https://yarnpkg.com
Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'} Për të filluar coc (dhe, kështu, serverin yaml-language-server) kërkon që të keni node.js të instaluar:
curl -sL install-node.now.sh/lts | bash Kur coc.vim kur të jetë konfiguruar, instaloni zgjatjen serverike coc-yaml nga vim:
:CocInstall coc-yaml 
Në fund, ndoshta do të dëshironit të filloni me konfigurimin coc-vim, i paraqitur . Në veçanti, ajo aktivizon kombinimin +hapësirë për të thirrur përfundimin automatik.
Konfigurimi për zbulimin e yaml-language-server
Për coc mund të përfitojë nga yaml-language-server, duhet ta kërkoni të ngarkojë skemën nga Kubernetes gjatë redaktimit të skedarëve YAML. Kjo bëhet duke modifikuar coc-config:
:CocConfig Në konfigurim do të duhet të shtoni kubernetes për të gjitha skedarët yaml. Unë gjithashtu përdor një server gjuhësor për golang, prandaj konfigurimi im i përgjithshëm duket kështu:
{
"languageserver": {
"golang": {
"command": "gopls",
"rootPatterns": ["go.mod"],
"filetypes": ["go"]
}
},
"yaml.schemas": {
"kubernetes": "/*.yaml"
}
} kubernetes â njĂ« fushĂ« e rezervuar, e cila i thotĂ« serverit gjuhĂ«sor qĂ« tĂ« ngarkojĂ« skemĂ«n e Kubernetes nga URL-ja e pĂ«rcaktuar nĂ« . yaml.schemas mund tĂ« zgjerohet me mbĂ«shtetje pĂ«r skema tĂ« tjera â mĂ« shumĂ« nĂ« .
Tani mund të krijoni një skedë YAML dhe të filloni të përdorni autokompletimin. Shtypja +hapësirë (ose ndonjë kombinim tjetër të konfiguruar në vim) duhet të tregojë fushat e disponueshme dhe dokumentacionin sipas kontekstit aktual:

KĂ«tu funksionon +hapĂ«sirĂ«, sepse kam konfiguruar inoremap coc#refresh(). NĂ«se nuk e keni bĂ«rĂ« kĂ«tĂ« â shihni pĂ«r njĂ« shembull konfigurimi.
Zgjedhja e versionit të API Kubernetes
Në momentin e shkrimit të këtij artikulli, yaml-language-server vjen me skemat Kubernetes 1.14.0. Nuk kam gjetur një mënyrë për të zgjedhur dinamikisht skemën, prandaj hapa . Fatmirësisht, për shkak se serveri gjuhësor është shkruar në typescript, është shumë e lehtë ta ndryshosh manualisht versionin. Mjafton të gjesh skedarin server.ts.
Për ta gjetur në kompjuterin tuaj, thjesht hapni një skedë YAML me vim dhe kërkoni procesin me 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-serverPër ne, procesi 2380 është relevant: pikërisht ai përdoret nga vim gjatë redaktimit të skedës YAML.
Siç shihet lehtësisht, skedari ndodhet në /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Mjafton ta redaktoni, duke ndryshuar vlerën KUBERNETES_SCHEMA_URL, për shembull, në versionin 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"; Në varësi të versionit të coc-yaml vendndodhja e ndryshoreve në kod mund të jetë e ndryshme. Vini re gjithashtu se kam ndryshuar depot nga garethr në instrumenta. Duket se garethr ka kaluar në mbështetje për skema pikërisht atje.
Për të kontrolluar nëse ndryshimi ka hyrë në fuqi, shihni nëse fushat, të cilat më parë [në versionet e kaluara të Kubernetes], nuk ishin. Për shembull, në skemën për K8s 1.14 nuk kishte :

CV
Shpresoj që kjo mundësi ju gëzoi po aq sa edhe mua. Gëzuar YAML-ing! Mos harroni të shqyrtoni këto ripostime për të kuptuar më mirë mjetet e përmendura në artikull:
- coc-vim: ;
- coc-yaml: .
P.S. nga përkthyesi
Dhe ka gjithashtu , dhe .
Lexoni gjithashtu në blogun tonë:
- «»;
- «».
Burimi: habr.com
