Vim ar YAML atbalstu Kubernetes

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ā.

Vim ar YAML atbalstu Kubernetes

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.

Vim ar YAML atbalstu Kubernetes

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

Vim ar YAML atbalstu Kubernetes

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:

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

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

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:

Vim ar YAML atbalstu Kubernetes
Š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.

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-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:

Vim ar YAML atbalstu Kubernetes

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:

PS no tulka

Un ir arÄ« vikube, vim-kubernetes Šø vimkubectl.

Lasi arī mūsu emuārā:

Avots: www.habr.com

Pievieno komentāru