Kubernetes-д зориулсан YAML дэмжлэгтэй Vim

Анхаарна уу. орчуулга.: Өгүүллийн эхийг CoreOS болон Heptio зэрэг компаниудад ажиллаж байсан VMware-ийн архитектор Жош Россо бичсэн бөгөөд мөн Kubernetes alb-ingress-controller-ийн хамтран зохиогч юм. Зохиогч нь ялгуусан үүлний эрин үед ч гэсэн vim-ийг илүүд үздэг "хуучин сургуулийн" үйл ажиллагааны инженерүүдэд маш хэрэгтэй жижиг жорыг хуваалцаж байна.

Kubernetes-д зориулсан YAML дэмжлэгтэй Vim

Vim дээр Kubernetes-д зориулж YAML манифест бичих үү? Энэ үзүүлэлтийн дараагийн талбар хаана байх ёстойг олохын тулд тоо томшгүй олон цагийг зарцуулсан уу? Эсвэл та ялгааг хурдан сануулбал талархах болно args и command? Сайн мэдээ байна! Vim-тэй холбогдоход хялбар байдаг yaml-хэл-серверавтоматаар дуусгах, баталгаажуулах болон бусад тохь тухыг авах. Энэ нийтлэлд бид хэлний серверийн клиентийг хэрхэн тохируулах талаар ярих болно.

(Эх нийтлэл нь мөн бичлэг байна уу, зохиогч ярилцаж, материалын агуулгыг харуулсан газар.)

Хэлний сервер

Хэлний серверүүд (хэлний серверүүд) Тусгай протокол ашиглан бие биетэйгээ харьцдаг програмчлалын хэлний боломжуудын талаар редакторууд болон IDE-д ярих - Хэлний сервер протокол (LSP). Энэ нь нэг хэрэгжүүлэлтээр олон засварлагч/IDE-д нэг дор өгөгдөл өгөх боломжийг олгодог тул энэ нь маш сайн арга юм. Би аль хэдийн байна бичсэн тухай гоплс - Голанг хэлний сервер - мөн үүнийг хэрхэн ашиглах талаар VIM. Kubernetes-д зориулсан YAML-д автоматаар бөглөх алхамууд ижил байна.

Kubernetes-д зориулсан YAML дэмжлэгтэй Vim

Vim-г тайлбарласан байдлаар ажиллуулахын тулд та хэлний серверийн клиентийг суулгах шаардлагатай болно. Миний мэдэх хоёр арга LanguageClient-neovim и coc.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-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-language-server илрүүлэх тохиргоог хийж байна

гэж 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-аас Kubernetes схемийг татаж авахыг хэлний серверт заадаг нөөцлөгдсөн талбар. энэ тогтмол. yaml.schemas нэмэлт схемүүдийг дэмжихийн тулд өргөжүүлж болно - дэлгэрэнгүй мэдээллийг үзнэ үү холбогдох баримт бичиг.

Одоо та YAML файл үүсгэж, автоматаар гүйцээхийг ашиглаж эхлэх боломжтой. Дарж байна + орон зай (эсвэл vim-д тохируулсан бусад хослол) нь одоогийн нөхцөл байдлын дагуу байгаа талбарууд болон баримт бичгүүдийг харуулах ёстой:

Kubernetes-д зориулсан YAML дэмжлэгтэй Vim
Энд ажилладаг +зай, учир нь би тохируулсан inoremap <silent><expr> <c-space> coc#refresh(). Хэрэв та үүнийг хийгээгүй бол үзнэ үү coc.nvim README жишээ тохиргооны хувьд.

Kubernetes API хувилбарыг сонгож байна

Үүнийг бичиж байх үед yaml-language-server нь 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! Өгүүлэлд дурдсан хэрэгслүүдийг илүү сайн ойлгохын тулд эдгээр хадгалах сангуудыг шалгахаа мартуузай.

Орчуулагчийн жич

Мөн бас байдаг викубе, vim-kubernetes и vimkubectl.

Мөн манай блог дээрээс уншина уу:

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх