Vim su YAML palaikymu Kubernetes

Pastaba. vert.: Originalų straipsnį parašė Joshas Rosso, VMware architektas, anksčiau dirbęs tokiose įmonėse kaip CoreOS ir Heptio, taip pat Kubernetes alb-ingress-controller bendraautoris. Autorius dalijasi nedideliu receptu, kuris gali būti labai naudingas „senosios mokyklos“ operacijų inžinieriams, kurie teikia pirmenybę vim net pergalingų debesų gimtųjų eroje.

Vim su YAML palaikymu Kubernetes

Rašyti YAML manifestus Kubernetes in vim? Praleidote daugybę valandų, bandydami išsiaiškinti, kur turėtų būti kitas šios specifikacijos laukas? O gal jums patiks greitas priminimas apie skirtumą args и command? Yra gerų naujienų! Vim lengva susieti yaml kalbos serverisgauti automatinio užbaigimo, patvirtinimo ir kitų patogumų. Šiame straipsnyje kalbėsime apie tai, kaip tam nustatyti kalbos serverio klientą.

(Taip pat originalus straipsnis ar yra vaizdo įrašas, kur autorius kalba ir demonstruoja medžiagos turinį.)

Kalbos serveris

Kalbos serveriai (kalbos serveriai) kalbėti apie programavimo kalbų galimybes redaktoriams ir IDE, dėl kurių jie sąveikauja tarpusavyje naudodami specialų protokolą - Kalbos serverio protokolas (LSP). Tai puikus būdas, nes jis leidžia vienu diegimu pateikti duomenis daugeliui redaktorių / IDE vienu metu. Aš jau turiu parašiau apie gopls - Golango kalbos serveris ir kaip jis gali būti naudojamas energija. Veiksmai, skirti gauti automatinį užbaigimą YAML, skirtą Kubernetes, yra panašūs.

Vim su YAML palaikymu Kubernetes

Kad vim veiktų aprašytu būdu, reikės įdiegti kalbos serverio klientą. Du būdai, kuriuos žinau LanguageClient-neovim и coc.vim. Straipsnyje apsvarstysiu coc.vim – Tai šiuo metu populiariausias įskiepis. Galite įdiegti per 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'}

Pradžiai coc (taigi ir „yaml-language-server“) reikės įdiegti node.js:

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

Kai coc.vim sukonfigūruotas, įdiekite serverio plėtinį coc-yaml iš vim:

:CocInstall coc-yaml

Vim su YAML palaikymu Kubernetes

Galiausiai greičiausiai norėsite pradėti nuo konfigūracijos coc-vim, pristatyta pavyzdžiui. Visų pirma, jis suaktyvina derinį +tarpas iškviesti automatinį užbaigimą.

„Yaml“ kalbos serverio aptikimo nustatymas

Kad coc gali naudoti yaml-language-server, redaguojant YAML failus reikia paprašyti įkelti schemą iš Kubernetes. Tai atliekama redaguojant coc-config:

:CocConfig

Konfigūracijoje turėsite pridėti kubernetes visiems failams yaml. Papildomai naudoju kalbos serverį golangtaigi mano bendra konfigūracija atrodo taip:

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

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

kubernetes — rezervuotas laukas, nurodantis kalbos serveriui atsisiųsti Kubernetes schemą iš nurodyto URL ši konstanta. yaml.schemas gali būti išplėstas, kad būtų palaikomos papildomos schemos – daugiau informacijos žr atitinkamus dokumentus.

Dabar galite sukurti YAML failą ir pradėti naudoti automatinį užbaigimą. Spaudimas +tarpas (arba kitas vim sukonfigūruotas derinys) turėtų rodyti galimus laukus ir dokumentus pagal esamą kontekstą:

Vim su YAML palaikymu Kubernetes
Čia veikia +tarpas, nes sukonfigūravau inoremap <silent><expr> <c-space> coc#refresh(). Jei to nepadarėte, žr coc.nvim README konfigūracijos pavyzdžiui.

Kubernetes API versijos pasirinkimas

Šiuo metu yaml kalbos serveris pristatomas su Kubernetes 1.14.0 schemomis. Neradau būdo dinamiškai pasirinkti schemą, todėl atidariau atitinkama „GitHub“ problema. Laimei, kadangi kalbos serveris parašytas mašinraščiu, versiją pakeisti rankiniu būdu yra gana paprasta. Norėdami tai padaryti, tiesiog suraskite failą server.ts.

Norėdami jį aptikti savo kompiuteryje, tiesiog atidarykite YAML failą naudodami vim ir suraskite procesą 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 aktualus procesas yra procesas 2380: tai yra tai, ką vim naudoja redaguodamas YAML failą.

Kaip lengvai matote, failas yra /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Tiesiog redaguokite jį pakeisdami vertę KUBERNETES_SCHEMA_URL, pavyzdžiui, 1.17.0 versijai:

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

Priklausomai nuo naudojamos versijos coc-yaml Kintamojo vieta kode gali skirtis. Taip pat atkreipkite dėmesį, kad pakeičiau saugyklą iš garethr apie instrumenta. Atrodo, kad garethr ten perjungta į atramines grandines.

Norėdami patikrinti, ar pakeitimas įsigaliojo, pažiūrėkite, ar neatsirado laukas, kurio anksčiau nebuvo [ankstesnėse Kubernetes versijose]. Pavyzdžiui, K8s 1.14 diagramoje nebuvo startupProbe:

Vim su YAML palaikymu Kubernetes

Santrauka

Tikiuosi, kad ši galimybė jus džiugins taip pat, kaip ir mane. Laimingas YAMLing! Būtinai peržiūrėkite šias saugyklas, kad geriau suprastumėte straipsnyje minimas komunalines paslaugas:

PS iš vertėjo

Ir taip pat yra vikube, vim-kubernetes и vimkubectl.

Taip pat skaitykite mūsų tinklaraštyje:

Šaltinis: www.habr.com

Добавить комментарий