Kubernetes үчүн YAML колдоосу менен Vim

Эскертүү. котормо.: Баштапкы макаланы VMware архитектору Джош Россо жазган, ал мурда CoreOS жана Heptio сыяктуу компанияларда иштеген, ошондой эле Kubernetes alb-ingress-controller программасынын тең автору. Автор жеңүүчү булуттун доорунда да вимди жактырган "эски мектеп" операция инженерлери үчүн абдан пайдалуу боло турган кичинекей рецепт менен бөлүшөт.

Kubernetes үчүн YAML колдоосу менен Vim

Vimде Kubernetes үчүн YAML манифесттерин жазуубу? Бул спецификацияда кийинки талаа кайсы жерде болушу керек экенин аныктоо үчүн сансыз сааттарды өткөрдүңүзбү? Же, балким, сиз айырманы тез эскертип коюңуз args и command? Жакшы жаңылык бар! Vim менен байланышуу оңой yaml-language-serverавтоматтык түрдө бүтүрүү, текшерүү жана башка ыңгайлуулуктарды алуу. Бул макалада биз бул үчүн тил серверинин кардарын кантип орнотуу жөнүндө сүйлөшөбүз.

(Макаланын түп нускасы да видеосу барбы, анда автор сүйлөп, материалдын мазмунун көрсөтөт.)

Тил сервери

Тил серверлери (тил серверлери) редакторлор жана IDE үчүн программалоо тилдеринин мүмкүнчүлүктөрү жөнүндө айтып, алар атайын протоколду колдонуу менен бири-бири менен өз ара аракеттенишет - Тил серверинин протоколу (LSP). Бул эң сонун ыкма, анткени ал бир ишке ашырууга бир эле учурда көптөгөн редакторлорго/IDEлерге маалыматтарды берүүгө мүмкүндүк берет. менде бар Мен мындай деп жазган жөнүндө гоплс - Голанг үчүн тил сервери - жана аны кантип колдонсо болот VIM. Kubernetes үчүн YAMLде автотолтурууну алуу кадамдары окшош.

Kubernetes үчүн YAML колдоосу менен Vim

Vim сүрөттөлгөн жол менен иштеши үчүн, сизге тил серверинин кардарын орнотуу керек болот. Мен билген эки ыкма LanguageClient-neovim и coc.vim. Макалада мен карап чыгам coc.vim - Бул учурда эң популярдуу плагин. аркылуу орното аласыз 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'}

Баштоо үчүн coc (жана ошентип yaml-language-server) node.js орнотууну талап кылат:

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

качан coc.vim конфигурацияланган, сервер кеңейтүүсүн орнотуңуз coc-yaml vimден:

:CocInstall coc-yaml

Kubernetes үчүн YAML колдоосу менен Vim

Акыр-аягы, сиз конфигурациядан баштагыңыз келет coc-vim, тартууланды мисал катары. Тактап айтканда, ал комбинацияны активдештирет + мейкиндик автотолтурууну чакыруу.

Yaml-тил-сервер аныктоону орнотуу

ошол coc yaml-language-server колдонсо болот, YAML файлдарын түзөтүүдө аны Kubernetesтен схеманы жүктөөнү сураныш керек. Бул түзөтүү аркылуу ишке ашырылат coc-config:

:CocConfig

Конфигурацияда сиз кошушуңуз керек болот kubernetes бардык файлдар үчүн yaml. Мен кошумча тил серверин колдоном golangошондуктан менин жалпы конфигурациям ушундай көрүнөт:

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

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

kubernetes — тил серверине Кубернетес схемасын URL дарегинде аныкталган URL'ден жүктөөсүн айткан резервдик талаа бул туруктуу. yaml.schemas кошумча схемаларды колдоо үчүн кеңейтилиши мүмкүн - көбүрөөк маалымат алуу үчүн, караңыз тиешелүү документтер.

Эми сиз YAML файлын түзүп, автотолтурууну колдоно баштасаңыз болот. Басуу + мейкиндик (же vimде конфигурацияланган башка комбинация) учурдагы контекстке ылайык жеткиликтүү талааларды жана документтерди көрсөтүү керек:

Kubernetes үчүн YAML колдоосу менен Vim
Бул жерде иштейт +мейкиндик, анткени мен конфигурацияладым 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 процесси: бул YAML файлын түзөтүүдө vim колдонот.

Көрүнүп тургандай, файл бул жерде жайгашкан /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:

Kubernetes үчүн YAML колдоосу менен Vim

на

Бул мүмкүнчүлүк сизди да мендей эле кубандырат деп үмүттөнөм. Бактылуу YAMLing! Макалада айтылган утилиталарды жакшыраак түшүнүү үчүн бул репозиторийлерди текшериңиз:

Котормочудан PS

Жана дагы бар vikube, vim-kubernetes и vimkubectl.

Биздин блогдон дагы окуңуз:

Source: www.habr.com

Комментарий кошуу