Шарҳ. тарҷума.: Мақолаи аслӣ аз ҷониби Ҷош Россо, меъмори VMware навишта шудааст, ки қаблан дар ширкатҳое мисли CoreOS ва Heptio кор мекард ва ҳаммуаллифи Kubernetes alb-ingress-controller мебошад. Муаллиф як рецепти хурдеро нақл мекунад, ки метавонад барои муҳандисони амалиёти "мактаби кӯҳна", ки ҳатто дар даврони абрҳои пирӯзманд vim-ро афзалтар медонанд, хеле муфид бошад.
Навиштани манифестҳои YAML барои Kubernetes дар vim? Соатҳои бешуморро барои фаҳмидани он, ки майдони оянда бояд дар ин мушаххасот дар куҷо бошад? Ё шояд шумо ёдраскунии зудро дар бораи фарқият қадр кунед args
и command
? Хабари хуш ҳаст! Пайвастшавӣ ба Vim осон аст
(Мақолаи аслӣ низ
Сервери забон
Серверҳои забон (серверҳои забонӣ) дар бораи имкониятҳои забонҳои барномасозӣ ба муҳаррирон ва IDEҳо сӯҳбат кунед, ки барои онҳо онҳо бо истифода аз протоколи махсус бо ҳамдигар ҳамкорӣ мекунанд -
Барои он ки vim ба таври тавсифшуда кор кунад, шумо бояд мизоҷи сервери забонро насб кунед. Ду усуле, ки ман медонам, инҳоянд 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
(ва ҳамин тавр, yaml-language-server) node.js насбшударо талаб мекунад:
curl -sL install-node.now.sh/lts | bash
Ҳангоми coc.vim
танзим карда шудааст, васеъшавии серверро насб кунед coc-yaml
аз vim:
:CocInstall coc-yaml
Дар ниҳоят, шумо эҳтимолан мехоҳед, ки бо конфигуратсия оғоз кунед 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
— майдони ҳифзшуда, ки ба сервери забон мегӯяд, ки схемаи Kubernetes-ро аз URL-и дар yaml.schemas
метавонад барои дастгирии схемаҳои иловагӣ васеъ карда шавад - барои тафсилоти бештар нигаред
Акнун шумо метавонед як файли YAML эҷод кунед ва ба истифода аз пуркунии худкор оғоз кунед. Пахш кардан + фазо (ё дигар комбинатсияи дар vim танзимшуда) бояд майдонҳо ва ҳуҷҷатҳои дастрасро мувофиқи контексти ҷорӣ нишон диҳад:
Дар ин ҷо кор мекунад +фазо, зеро ман танзим кардам inoremap <silent><expr> <c-space> coc#refresh()
. Агар шумо ин корро накарда бошед, бубинед
Интихоби версияи API Kubernetes
Ҳангоми навиштан, yaml-language-server бо схемаҳои Kubernetes 1.14.0 фиристода мешавад. Ман роҳи ба таври динамикӣ интихоб кардани схемаро наёфтам, бинобар ин кушодам 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 вуҷуд надошт
Натиҷа
Умедворам, ки ин фурсат ба мисли ман ба шумо низ писанд меояд. YAMLing муборак! Боварӣ ҳосил кунед, ки ин анборҳоро тафтиш кунед, то ки утилитаҳои дар мақола зикршударо беҳтар дарк кунед:
- coc-vim:
https://github.com/neoclide/coc.nvim ; - coc-yaml:
https://github.com/neoclide/coc-yaml .
PS аз тарҷумон
Ва низ ҳаст
Инчунин дар блоги мо хонед:
- «
kubebox ва дигар снарядҳо барои Kubernetes »; - «
Ёрдамчиёни консол барои кор бо Kubernetes тавассути kubectl ".
Манбаъ: will.com