Вим са ИАМЛ подршком за Кубернетес

Белешка. трансл.: Оригинални чланак је написао Џош Росо, архитекта у ВМваре-у који је раније радио у компанијама као што су ЦореОС и Хептио, а такође је и коаутор Кубернетес алб-ингресс-контролера. Аутор дели мали рецепт који може бити веома користан за оперативне инжењере „старе школе“ који више воле вим чак и у ери победоносног порекла у облаку.

Вим са ИАМЛ подршком за Кубернетес

Писање ИАМЛ манифеста за Кубернетес у вим? Провели сте безброј сати покушавајући да схватите где би следеће поље требало да буде у овој спецификацији? Или ћете можда ценити брзи подсетник на разлику args и command? Има добрих вести! Вим је једноставан за повезивање иамл-језик-серверда добијете аутоматско довршавање, валидацију и друге погодности. У овом чланку ћемо говорити о томе како да подесите клијент језичког сервера за ово.

(Оригинални чланак такође има ли видео, где аутор говори и демонстрира садржај материјала.)

Језички сервер

Језички сервери (језички сервери) говоре о могућностима програмских језика уредницима и ИДЕ-овима, за које они међусобно комуницирају помоћу посебног протокола - Лангуаге Сервер Протоцол (ЛСП). Ово је одличан приступ јер омогућава да једна имплементација обезбеди податке за више уредника/ИДЕ одједном. Ја већ имам pisao сам про гоплс - језички сервер за Голанг - и како се може користити у енергија. Кораци за добијање аутоматског довршавања у ИАМЛ-у за Кубернетес су слични.

Вим са ИАМЛ подршком за Кубернетес

Да би вим радио на описани начин, мораћете да инсталирате клијент језичког сервера. Две методе за које знам су ЛангуагеЦлиент-неовим и цоц.вим. У чланку ћу размотрити coc.vim - Ово је тренутно најпопуларнији додатак. Можете га инсталирати преко вим-плуг:

" 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'}

За почетак coc (а самим тим и иамл-лангуаге-сервер) ће захтевати инсталиран ноде.јс:

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

Када coc.vim конфигурисан, инсталирајте проширење сервера coc-yaml од вим:

:CocInstall coc-yaml

Вим са ИАМЛ подршком за Кубернетес

Коначно, највероватније ћете желети да почнете са конфигурацијом coc-vim, представљено као пример. Конкретно, активира комбинацију +простор да позовете аутоматско довршавање.

Подешавање детекције иамл-лангуаге-сервер-а

Да coc може да користи иамл-лангуаге-сервер, потребно је од њега затражити да учита шему из Кубернетес-а приликом уређивања ИАМЛ датотека. Ово се ради уређивањем coc-config:

:CocConfig

У конфигурацији ћете морати да додате kubernetes за све датотеке yaml. Додатно користим језички сервер за golangтако да моја општа конфигурација изгледа овако:

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

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

kubernetes — резервисано поље које говори језичком серверу да преузме Кубернетес шему са УРЛ адресе дефинисане у ова константа. yaml.schemas може се проширити да подржи додатне шеме - за више детаља погледајте релевантну документацију.

Сада можете да креирате ИАМЛ датотеку и почнете да користите аутоматско довршавање. Пресинг +простор (или друга комбинација конфигурисана у вим) треба да прикаже доступна поља и документацију у складу са тренутним контекстом:

Вим са ИАМЛ подршком за Кубернетес
Ради овде +простор јер сам конфигурисао inoremap <silent><expr> <c-space> coc#refresh(). Ако ово нисте урадили, погледајте цоц.нвим РЕАДМЕ за пример конфигурације.

Избор верзије Кубернетес АПИ-ја

Од овог писања, иамл-лангуаге-сервер се испоручује са Кубернетес 1.14.0 шемама. Нисам нашао начин да динамички изаберем шему, па сам отворио одговарајући проблем ГитХуб-а. На срећу, пошто је језички сервер написан куцаним писмом, прилично је лако ручно променити верзију. Да бисте то урадили, само пронађите датотеку server.ts.

Да бисте га открили на вашој машини, једноставно отворите ИАМЛ датотеку помоћу вим-а и пронађите процес помоћу 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

За нас је релевантан процес 2380: то је оно што вим користи приликом уређивања ИАМЛ датотеке.

Као што можете лако видети, датотека се налази у /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Само га уредите променом вредности KUBERNETES_SCHEMA_URL, на пример, за верзију 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";

У зависности од верзије која се користи coc-yaml Локација променљиве у коду може да варира. Такође имајте на уму да сам променио спремиште са garethr на instrumenta. Чини се да garethr прешао на потпорна кола тамо.

Да бисте проверили да ли је промена ступила на снагу, погледајте да ли се појављује поље које раније није било [у претходним верзијама Кубернетеса]. На пример, на дијаграму за К8с 1.14 није било стартупПробе:

Вим са ИАМЛ подршком за Кубернетес

Резиме

Надам се да ће вам ова прилика пријати исто колико и мени. Срећан ИАМЛинг! Обавезно погледајте ова спремишта да бисте боље разумели услужне програме поменуте у чланку:

ПС од преводиоца

И постоји викубе, вим-кубернетес и вимкубецтл.

Прочитајте и на нашем блогу:

Извор: ввв.хабр.цом

Додај коментар