Vim со YAML поддршка за Kubernetes

Забелешка. превод.: Оригиналната статија е напишана од Џош Росо, архитект во VMware, кој претходно работел во компании како CoreOS и Heptio, а исто така е коавтор на Kubernetes alb-ingress-controller. Авторот споделува мал рецепт кој може да биде многу корисен за оперативните инженери од „старата школа“ кои претпочитаат vim дури и во ерата на победничкиот облак.

Vim со YAML поддршка за Kubernetes

Пишување YAML манифестации за Kubernetes во vim? Поминавте безброј часови обидувајќи се да откриете каде треба да биде следното поле во оваа спецификација? Или можеби ќе го цените брзото потсетување на разликата args и command? Има добри вести! Vim е лесно да се поврзе yaml-јазик-серверза да добиете автоматско завршување, валидација и други погодности. Во оваа статија ќе разговараме за тоа како да поставите клиент за јазичен сервер за ова.

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

Јазичен сервер

Јазични сервери (јазични сервери) зборувајте за можностите на програмските јазици на уредниците и IDE, за кои тие комуницираат едни со други користејќи посебен протокол - Протокол за јазичен сервер (LSP). Ова е одличен пристап бидејќи овозможува една имплементација да обезбеди податоци на многу уредници/IDE одеднаш. Имам веќе пишува во врска со гоплс - јазичен сервер за Golang - и како може да се користи во vim. Слични се чекорите за добивање автоматско комплетирање во YAML за Kubernetes.

Vim со YAML поддршка за Kubernetes

За да може vim да работи на опишаниот начин, ќе треба да инсталирате клиент за јазичен сервер. Двата методи за кои знам се ЈазикКлиент-неовим и кок.вим. Во написот што ќе го разгледам coc.vim - Ова е најпопуларниот приклучок во моментов. Можете да го инсталирате преку 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 (а со тоа и yaml-language-серверот) ќе бара инсталирано node.js:

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

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

:CocInstall coc-yaml

Vim со YAML поддршка за Kubernetes

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

Поставување откривање yaml-јазик-сервер

Дека coc може да користи yaml-language-server, од него треба да се побара да ја вчита шемата од Kubernetes при уредување YAML-датотеки. Ова се прави со уредување coc-config:

:CocConfig

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

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

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

kubernetes — резервирано поле кое му кажува на јазичниот сервер да ја преземе шемата на Kubernetes од URL-то дефинирано во оваа константа. yaml.schemas може да се прошири за да поддржува дополнителни шеми - за повеќе детали, видете релевантна документација.

Сега можете да креирате датотека YAML и да започнете со користење на автоматско комплетирање. Притискање +простор (или друга комбинација конфигурирана во vim) треба да ги прикаже достапните полиња и документација според тековниот контекст:

Vim со YAML поддршка за Kubernetes
Работи овде +space затоа што конфигурирав inoremap <silent><expr> <c-space> coc#refresh(). Ако не сте го направиле ова, видете coc.nvim README за пример конфигурација.

Избор на верзијата на Kubernetes API

Почнувајќи од ова пишување, серверот на јазикот yaml испорачува со шеми на Kubernetes 1.14.0. Не најдов начин динамично да одберам шема, па отворив соодветното прашање на GitHub. За среќа, бидејќи јазичниот сервер е напишан со пишување, многу е лесно рачно да се смени верзијата. За да го направите ова, само пронајдете ја датотеката server.ts.

За да го откриете на вашата машина, едноставно отворете ја датотеката YAML со vim и пронајдете го процесот со 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: тоа е она што го користи vim кога уредува датотека YAML.

Како што можете лесно да видите, датотеката се наоѓа во /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 таму се префрли на потпорни кола.

За да проверите дали промената стапила во сила, проверете дали се појавува поле што го немало претходно [во претходните верзии на Kubernetes]. На пример, во дијаграмот за K8s 1.14 немаше startupProbe:

Vim со YAML поддршка за Kubernetes

Краток преглед

Се надевам дека оваа можност ќе ве задоволи исто како и мене. Среќен YAMLing! Не заборавајте да ги проверите овие складишта за подобро да ги разберете комуналните услуги споменати во статијата:

PS од преведувач

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

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

Извор: www.habr.com

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