ShĂ«n. pĂ«rk.: artikujin origjinal e shkroi 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Ă« vjetra", tĂ« cilĂ«t preferojnĂ« vim edhe nĂ« epokĂ«n e cloud native qĂ« ka fituar terren.

A shkruani mmanifestet YAML pĂ«r Kubernetes nĂ« vim? Keni kaluar orĂ« tĂ« pafund duke u munduar tĂ« kuptoni se ku nĂ« kĂ«tĂ« specifikim duhet tĂ« jetĂ« fusha tjetĂ«r? Mund tĂ« jeni tĂ« lumtur pĂ«r njĂ« pĂ«rmbledhje tĂ« shpejtĂ« tĂ« ndryshimeve. args dhe command? ĐŃŃŃ Ń
ĐŸŃĐŸŃОД ĐœĐŸĐČĐŸŃŃĐž! Vim лДгĐșĐŸ ĐżŃĐžĐČŃзаŃŃ Đș , pĂ«r tĂ« marrĂ« pĂ«rfundime automatike, validim dhe lehtĂ«sira tĂ« tjera. NĂ« kĂ«tĂ« artikull do tĂ« flasim se si ta 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) informojnĂ« redaktorĂ«t dhe IDE-tĂ« pĂ«r mundĂ«sitĂ« e gjuhĂ«ve tĂ« programimit dhe pĂ«r kĂ«tĂ« arsye bashkĂ«punojnĂ« me njĂ«ri-tjetrin pĂ«rmes njĂ« protokolli tĂ« veçantĂ« â (LSP). Ky Ă«shtĂ« njĂ« qasje e shkĂ«lqyer: sepse lejon qĂ« njĂ« implementim tĂ« ofrojĂ« tĂ« dhĂ«na pĂ«r shumĂ« editorĂ«/IDE njĂ«herĂ«sh. UnĂ« tashmĂ« pĂ«r â serveri gjuhĂ«sor pĂ«r Golang â dhe si mund tĂ« pĂ«rdoret nĂ« . Veprimet pĂ«r tĂ« marrĂ« sugjerime nĂ« YAML pĂ«r Kubernetes janĂ« tĂ« ngjashme.

PĂ«r tĂ« bĂ«rĂ« qĂ« vim tĂ« punojĂ« nĂ« kĂ«tĂ« mĂ«nyrĂ«, nevojitet tĂ« instalohet klienti i serverit gjuhĂ«sor. Dy mĂ«nyra qĂ« njihen nga unĂ« janĂ« dhe . NĂ« kĂ«tĂ« artikull do tĂ« shqyrtoj coc.vim â ky Ă«shtĂ« plugins mĂ« i popullarizuar deri tani. 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ë nisur coc (dhe, në këtë mënyrë, serveri yaml-language-server) kërkohet që node.js të jetë i instaluar:
curl -sL install-node.now.sh/lts | bash Kur coc.vim nĂ«se Ă«shtĂ« i konfiguruar, instaloni zgjerimin e serverit coc-yaml nga vimâi:
:CocInstall coc-yaml 
Në fund, me siguri do të dëshironit të filloni me konfigurimin coc-vim, siç paraqitet . Sidomos, ajo aktivizon kombinimin +hapësirë për të thirrur sugjerimet.
Konfigurimi i zbulimit të yaml-language-server
Për coc mund të përdorë yaml-language-server, duhet ta kërkoni të ngarkohet skema nga Kubernetes gjatë redaktimit të skedave YAML. Kjo bëhet duke redaktuar coc-config:
:CocConfig Në konfigurim nevojitet të shtohet kubernetes për të gjitha skedat yaml. Unë përveç kësaj përdor serverin gjuhësor për golang, kështu që konfigurimi im përmbledh kështu:
{
"languageserver": {
"golang": {
"command": "gopls",
"rootPatterns": ["go.mod"],
"filetypes": ["go"]
}
},
"yaml.schemas": {
"kubernetes": "/*.yaml"
}
} kubernetes â njĂ« fushĂ« e rezervuar, e cila i tregon serverit gjuhĂ«sor se duhet tĂ« ngarkojĂ« skemĂ«n Kubernetes nga URL-ja e pĂ«rcaktuar nĂ« . yaml.schemas mund tĂ« zgjerohet me mbĂ«shtetje pĂ«r skema tĂ« tjera â shihni mĂ« shumĂ« nĂ« .
Tani mund të krijoni një skedë YAML dhe të filloni të përdorni automatikun e plotësimit. Shtypja +hapësirë (ose një kombinim tjetër, i konfiguruar në vim) duhet të tregojë fushat e disponueshme dhe dokumentacionin sipas kontekstit aktual:

KĂ«tu funksionon +hapĂ«sira, sepse unĂ« e kam konfiguruar inoremap coc#refresh(). NĂ«se nuk e keni bĂ«rĂ« kĂ«tĂ« â shihni pĂ«r njĂ« shembull tĂ« konfigurimit.
Zgjedhja e versionit të API-së së Kubernetes
Në momentin kur u shkrua ky artikull, yaml-language-server ofronte skemat Kubernetes 1.14.0. Nuk gjeta ndonjë mënyrë për të zgjedhur dinamikisht skemën, ndaj hoxha . Me fat, pasi serveri i gjuhës është shkruar në typescript, është mjaft e lehtë ta ndryshosh versionin manualisht. Për këtë, mjafton të gjejmë skedarin server.ts.
. Për ta gjetur në makinë tuaj, thjesht hapni skedarin YAML me vim dhe gjeni 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ë i rëndësishëm: pikërisht ai përdoret nga vim gjatë redaktimit të skedarit YAML.
Siç shihet lehtë, 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 atë, 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"; Varësisht nga versioni i përdorur coc-yaml vendndodhja e variablit në kod mund të jetë e ndryshme. Vëreni gjithashtu se kam ndryshuar repositorin nga garethr në instrumenta. Duket se garethr ka kaluar në mbështetje të skemave pikërisht atje.
Për të verifikuar që ndryshimi ka hyrë në fuqi, shikoni nëse shfaqet fusha që më parë [në versionet e kaluara të Kubernetes] nuk ishte. Për shembull, në skemën për K8s 1.14 nuk kishte :

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