PiezÄ«me. tulk.: SÄkotnÄjo rakstu ir uzrakstÄ«jis DžoÅ”s Rosso, VMware arhitekts, kurÅ” iepriekÅ” strÄdÄja tÄdos uzÅÄmumos kÄ CoreOS un Heptio, kÄ arÄ« ir Kubernetes alb-ingress-controller lÄ«dzautors. Autore dalÄs ar nelielu recepti, kas var ļoti noderÄt āvecÄs skolasā operÄciju inženieriem, kuri dod priekÅ”roku vim pat uzvaroÅ”o mÄkoÅu dzimtenes laikmetÄ.
Vai rakstÄ«t YAML manifestus Kubernetes in vim? PavadÄ«jÄt neskaitÄmas stundas, mÄÄ£inot izdomÄt, kur Å”ajÄ specifikÄcijÄ jÄatrodas nÄkamajam laukam? Vai varbÅ«t jÅ«s novÄrtÄsiet Ätru atgÄdinÄjumu par atŔķirÄ«bu args Šø command? Ir labas ziÅas! Vim ir viegli izveidot saiti yaml valodas serverislai iegÅ«tu automÄtisku pabeigÅ”anu, apstiprinÄÅ”anu un citas ÄrtÄ«bas. Å ajÄ rakstÄ mÄs runÄsim par to, kÄ Å”im nolÅ«kam iestatÄ«t valodas servera klientu.
(ArÄ« oriÄ£inÄlais raksts vai ir video, kur autors runÄ un demonstrÄ materiÄla saturu.)
Valodas serveris
Valodu serveri (valodu serveri) runÄt par programmÄÅ”anas valodu iespÄjÄm redaktoriem un IDE, kurÄm viÅi mijiedarbojas savÄ starpÄ, izmantojot Ä«paÅ”u protokolu - Valodas servera protokols (LSP). Å Ä« ir lieliska pieeja, jo tÄ Ä¼auj vienai ievieÅ”anai vienlaikus nodroÅ”inÄt datus daudziem redaktoriem/IDE. Es jau rakstÄ«ja: par gopls - Golang valodas serveris - un kÄ to var izmantot spars. DarbÄ«bas, lai iegÅ«tu automÄtisko pabeigÅ”anu YAML programmÄ Kubernetes, ir lÄ«dzÄ«gas.
Lai vim darbotos aprakstÄ«tajÄ veidÄ, bÅ«s jÄinstalÄ valodas servera klients. Man zinÄmÄs divas metodes ir LanguageClient-neovim Šø coc.vim. RakstÄ es apsvÄrÅ”u coc.vim - Å is ir Å”obrÄ«d vispopulÄrÄkais spraudnis. JÅ«s varat to instalÄt, izmantojot vim-plug:
" Use release branch (Recommend)
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" Or build from source code by use yarn: https://yarnpkg.com
Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'}
SÄkumam coc (un lÄ«dz ar to yaml-language-server) prasÄ«s instalÄt node.js:
curl -sL install-node.now.sh/lts | bash
Kad coc.vim konfigurÄts, instalÄjiet servera paplaÅ”inÄjumu coc-yaml no vim:
:CocInstall coc-yaml
Visbeidzot, visticamÄk, vÄlÄsities sÄkt ar konfigurÄciju coc-vim, prezentÄts kÄ piemÄrs. Jo Ä«paÅ”i tas aktivizÄ kombinÄciju +atstarpe lai izsauktu automÄtisko pabeigÅ”anu.
Yaml valodas servera noteikŔanas iestatīŔana
Ka coc var izmantot yaml-language-server, tai ir jÄlÅ«dz ielÄdÄt shÄmu no Kubernetes, rediÄ£Äjot YAML failus. Tas tiek darÄ«ts, rediÄ£Äjot coc-config:
:CocConfig
KonfigurÄcijÄ jums bÅ«s jÄpievieno kubernetes visiem failiem yaml. Es papildus izmantoju valodas serveri priekÅ” golangtÄpÄc mana vispÄrÄjÄ konfigurÄcija izskatÄs Å”Ädi:
kubernetes ā rezervÄts lauks, kas liek valodas serverim lejupielÄdÄt Kubernetes shÄmu no definÄtÄ URL Ŕī konstante. yaml.schemas var paplaÅ”inÄt, lai atbalstÄ«tu papildu shÄmas - sÄ«kÄku informÄciju skatiet attiecÄ«go dokumentÄciju.
Tagad varat izveidot YAML failu un sÄkt izmantot automÄtisko pabeigÅ”anu. SpieÅ”ana +atstarpe (vai citai kombinÄcijai, kas konfigurÄta programmÄ vim) ir jÄparÄda pieejamie lauki un dokumentÄcija atbilstoÅ”i paÅ”reizÄjam kontekstam:
Å eit darbojas +Space, jo es konfigurÄju inoremap <silent><expr> <c-space> coc#refresh(). Ja neesat to izdarÄ«jis, skatiet coc.nvim README konfigurÄcijas piemÄram.
Atlasot Kubernetes API versiju
Å ajÄ rakstÄ«Å”anas brÄ«dÄ« yaml valodas serveris tiek piegÄdÄts ar Kubernetes 1.14.0 shÄmÄm. Es neatradu veidu, kÄ dinamiski atlasÄ«t shÄmu, tÄpÄc atvÄru atbilstoÅ”Ä GitHub problÄma. Par laimi, tÄ kÄ valodas serveris ir rakstÄ«ts maŔīnrakstÄ, versiju ir diezgan viegli mainÄ«t manuÄli. Lai to izdarÄ«tu, vienkÄrÅ”i atrodiet failu server.ts.
Lai to noteiktu savÄ datorÄ, vienkÄrÅ”i atveriet YAML failu ar vim un atrodiet procesu ar yaml-language-server.
Mums attiecÄ«gais process ir process 2380: tas ir tas, ko vim izmanto, rediÄ£Äjot YAML failu.
KÄ jÅ«s viegli redzat, fails atrodas /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. VienkÄrÅ”i rediÄ£Äjiet to, mainot vÄrtÄ«bu KUBERNETES_SCHEMA_URL, piemÄram, versijai 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";
AtkarÄ«bÄ no izmantotÄs versijas coc-yaml MainÄ«gÄ atraÅ”anÄs vieta kodÄ var atŔķirties. LÅ«dzu, Åemiet vÄrÄ arÄ« to, ka es mainÄ«ju repozitoriju no garethr par instrumenta. Å Ä·iet, ka garethr tur pÄrslÄdzÄs uz atbalsta shÄmÄm.
Lai pÄrbaudÄ«tu, vai izmaiÅas ir stÄjuÅ”Äs spÄkÄ, pÄrbaudiet, vai netiek parÄdÄ«ts lauks, kura iepriekÅ” nebija [iepriekÅ”ÄjÄs Kubernetes versijÄs]. PiemÄram, diagrammÄ K8s 1.14 nebija startupProbe:
Kopsavilkums
Es ceru, ka Ŕī iespÄja jÅ«s iepriecinÄs tikpat ļoti kÄ mani. LaimÄ«gu YAMLing! Noteikti pÄrbaudiet Ŕīs krÄtuves, lai labÄk izprastu rakstÄ minÄtÄs utilÄ«tas: