Vim ar YAML atbalstu Kubernetes

PiezÄ«me:: oriÄ£inālo rakstu uzrakstÄ«jis Josh Rosso — arhitekts no VMware, kurÅ” iepriekÅ” strādājis tādās kompānijās kā CoreOS un Heptio, kā arÄ« ir Kubernetes alb-ingress-controller lÄ«dzautors. Autors dalās ar nelielu recepti, kas var bÅ«t ļoti noderÄ«ga Ā«vecās skolasĀ» inženieriem, kuri patÄ«k vim pat mÅ«sdienu cloud native laikmetā.

Vim ar YAML atbalstu Kubernetes

Rakstāt YAML manifestus Kubernetes vim? PavadÄ«jāt neskaitāmas stundas, cenÅ”oties saprast, kur Å”ajā specifikācijā jābÅ«t nākamajai lauka vērtÄ«bai? VarbÅ«t priecāsieties par ātru atgādinājumu par atŔķirÄ«bu args un command? Š•ŃŃ‚ŃŒ Ń…Š¾Ń€Š¾ŃˆŠøŠµ новости! Vim легко ŠæŃ€ŠøŠ²ŃŠ·Š°Ń‚ŃŒ Šŗ yaml-language-server, lai iegÅ«tu automātisko pabeigÅ”anu, validāciju un citas ērtÄ«bas. Rakstā runāsim par to, kā to konfigurēt valodas servera klientam.

(Oriģinālajā rakstā ir arī video, kur autors stāsta un demonstrē materiāla saturu.)

Valodas serveris

Valodas serveri (language servers) stāsta par programmēŔanas valodu iespējām redaktoriem un IDE, tādējādi tie mijiedarbojas pa Ä«paÅ”u protokolu — Language Server Protocol (LSP). Tas ir lielisks pieejas veids: tas ļauj vienai realizācijai nodroÅ”ināt datus uzreiz vairākām redaktoriem/IDE. Es jau esmu rakstÄ«ju par gopls — valodas serveri Golang — un kā to var izmantot vim. RÄ«cÄ«bas, lai iegÅ«tu automātisko pabeigÅ”anu YAML Kubernetes, ir lÄ«dzÄ«gas.

Vim ar YAML atbalstu Kubernetes

Lai vim darbotos aprakstÄ«tajā veidā, bÅ«s jānokļūst uz valodas servera klienta. Divi man zināmi veidi ir LanguageClient-neovim un coc.vim. Rakstā apskatīŔu coc.vim — tas ir Å”obrÄ«d populārākais paplaÅ”inājums. To var instalēt, izmantojot vim-plug:

" Izmanto izlaiŔanas zaru (ieteicams)
Plug 'neoclide/coc.nvim', {'branch': 'release'}

" Vai veido no avota koda, izmantojot yarn: https://yarnpkg.com
Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'}

Lai palaistu coc (un tādējādi yaml-language-server serveri), ir nepiecieÅ”ams, lai bÅ«tu instalēts node.js:

curl -sL install-node.now.sh/lts | bash

Kad coc.vim ja ir konfigurēts, uzstādÄ«t servera paplaÅ”inājumu coc-yaml no vim:

:CocInstall coc-yaml

Vim ar YAML atbalstu Kubernetes

Visbeidzot, jÅ«s, iespējams, vēlēsieties sākt ar konfigurāciju coc-vim, kas sniegta kā piemērs. ÄŖpaÅ”i tā aktivizē kombināciju +space automātiskās pabeigÅ”anas izsaukÅ”anai.

YAML-language-server atklāŔanas konfigurēŔana

Lai coc varētu izmantot yaml-language-server, tas ir jālūdz ielādēt shēmu no Kubernetes, rediģējot YAML failus. To var izdarīt, rediģējot coc-config:

:CocConfig

Konfigurācijā bÅ«s jāpapildina kubernetes visiem failiem yaml. Es papildus izmantoju valodas serveri golang, tāpēc mans kopējais konfigurācija izskatās Ŕādi:

{
  "languageserver": {
      "golang": {
        "command": "gopls",
        "rootPatterns": ["go.mod"],
        "filetypes": ["go"]
      }
  },

  "yaml.schemas": {
      "kubernetes": "/*.yaml"
  }
}

kubernetes — rezervēts lauks, kas informē valodas serveri par nepiecieÅ”amÄ«bu ielādēt Kubernetes shēmu pēc URL, kas noteikts Å”ajā konstantē. yaml.schemas var paplaÅ”ināt ar papildu shēmām — sÄ«kāk skat. attiecÄ«gajā dokumentācijā Tagad var izveidot YAML failu un sākt izmantot automātisko pabeigÅ”anu. Nospiežot.

(vai citu kombināciju, kas iestatÄ«ta vim), vajadzētu parādÄ«t pieejamos laukus un dokumentāciju, ņemot vērā paÅ”reizējo kontekstu: +space Å eit darbojas +space, jo es esmu iestatÄ«jis

Vim ar YAML atbalstu Kubernetes
inoremap coc#refresh() . Ja jÅ«s to neesat izdarÄ«juÅ”i — skatietcoc.nvim README pār piemēru konfigurāciju. Kubernetes API versijas izvēle

RakstīŔanas brÄ«dÄ« yaml-language-server tiek piegādāts ar Kubernetes shēmām 1.14.0. Es neatradu veidu, kā dinamiskās izvēlēties shēmu, tāpēc atvēru

atbilstoÅ”o GitHub jautājumu . Par laimi, jo valodas serveris ir uzrakstÄ«ts typescript, to ir diezgan viegli manuāli mainÄ«t versiju. Pietiek atrast failuserver.ts Lai to atrastu savā datorā, vienkārÅ”i atveriet YAML failu, izmantojot vim, un meklējiet procesu ar.

ps aux | grep -i yaml-language-serverjoshrosso 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-server yaml-language-server.

Mums svarÄ«gs ir process 2380: tieÅ”i to izmanto vim, rediģējot YAML failu.

Kā viegli redzēt, fails atrodas

. Pietiek rediģēt to, mainot /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.jsKUBERNETES_SCHEMA_URL , piemēram, uz versiju 1.17.0:Atkarībā no izmantotās versijas

// 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";

mainÄ«gā atraÅ”anās vieta kodā var atŔķirties. Pievērsiet uzmanÄ«bu arÄ« tam, ka esmu mainÄ«jis repozitoriju no coc-yaml garethr instrumenta. uz . Izskatās, kapārgāja uz atbalstu shēmām tieÅ”i tur. instrumenta. Lai pārbaudÄ«tu, vai izmaiņas ir spēkā, skatiet, vai parādās lauks, kāda agrāk [iepriekŔējās Kubernetes versijās] nebija. Piemēram, K8s 1.14 shēmā nebija

startupProbe startupProbe:

Vim ar YAML atbalstu Kubernetes

CV

Ceru, ka Ŕāda iespēja iepriecināja jÅ«s ne mazāk kā mani. PriecÄ«gu YAML’inga! Neaizmirstiet iepazÄ«ties ar Å”iem repozitorijiem, lai labāk saprastu rakstā minētās utilÄ«tas:

P.S. no tulka

Un vēl ir vikube, vim-kubernetes un vimkubectl.

Lasiet arī mūsu emuāra rakstos:

Avots: habr.com

Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster