Vim pẹlu atilẹyin YAML fun Kubernetes

Akiyesi. itumọ.: Nkan atilẹba ni a kọ nipasẹ Josh Rosso, ayaworan ni VMware ti o ṣiṣẹ tẹlẹ ni awọn ile-iṣẹ bii CoreOS ati Heptio, ati pe o tun jẹ alakọwe-alakoso Kubernetes alb-ingress-controller. Onkọwe pin ohunelo kekere kan ti o le wulo pupọ fun awọn onimọ-ẹrọ iṣẹ “ile-iwe atijọ” ti o fẹran vim paapaa ni akoko ti abinibi awọsanma ti o ṣẹgun.

Vim pẹlu atilẹyin YAML fun Kubernetes

Kikọ YAML ṣe afihan fun Kubernetes ni vim? Lo awọn wakati ainiye lati gbiyanju lati ṣawari ibiti aaye ti o tẹle yẹ ki o wa ni sipesifikesonu yii? Tabi boya iwọ yoo ni riri olurannileti iyara ti iyatọ naa args и command? Nibẹ ni o dara awọn iroyin! Vim rọrun lati sopọ si yaml-ede-serverlati gba laifọwọyi Ipari, afọwọsi ati awọn miiran wewewe. Ninu nkan yii a yoo sọrọ nipa bii o ṣe le ṣeto alabara olupin ede kan fun eyi.

(Nkan atilẹba tun jẹ nibẹ a fidio, nibiti onkọwe sọrọ ati ṣafihan awọn akoonu inu ohun elo naa.)

Olupin ede

Awọn olupin ede (awọn olupin ede) sọrọ nipa awọn agbara ti awọn ede siseto si awọn olootu ati awọn IDE, eyiti wọn ṣe ajọṣepọ pẹlu ara wọn nipa lilo ilana pataki kan - Ilana Ilana olupin Ede (LSP). Eyi jẹ ọna nla nitori pe o gba imuse kan laaye lati pese data si ọpọlọpọ awọn olootu / IDE ni ẹẹkan. Mo ni tẹlẹ kọwe nipa gopls - olupin ede fun Golang - ati bii o ṣe le lo ninu Vim. Awọn igbesẹ lati gba adaṣe adaṣe ni YAML fun Kubernetes jẹ iru.

Vim pẹlu atilẹyin YAML fun Kubernetes

Ni ibere fun vim lati ṣiṣẹ ni ọna ti a ṣalaye, iwọ yoo nilo lati fi sori ẹrọ alabara olupin ede kan. Awọn ọna meji ti mo mọ ni Ede Onibara-neovim и koko.vim. Ninu nkan ti Emi yoo gbero coc.vim - Eyi ni ohun itanna olokiki julọ ni akoko yii. O le fi sii nipasẹ 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'}

Fun ibẹrẹ coc (ati nitorinaa olupin-ede-yaml) yoo nilo node.js ti a fi sori ẹrọ:

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

Nigbawo coc.vim tunto, fi sori ẹrọ itẹsiwaju olupin coc-yaml lati vim:

:CocInstall coc-yaml

Vim pẹlu atilẹyin YAML fun Kubernetes

Ni ipari, iwọ yoo fẹ lati bẹrẹ pẹlu iṣeto ni coc-vim, gbekalẹ bi apẹẹrẹ. Ni pato, o mu ṣiṣẹ pọ + aaye lati pe autocompletion.

Ṣiṣeto iṣawari olupin-ede-yaml

ti coc le lo olupin yaml-ede, o nilo lati beere lọwọ rẹ lati ṣajọpọ ero-ọrọ lati Kubernetes nigbati o n ṣatunkọ awọn faili YAML. Eyi ni a ṣe nipasẹ ṣiṣatunṣe coc-config:

:CocConfig

Ninu iṣeto ni iwọ yoo nilo lati ṣafikun kubernetes fun gbogbo awọn faili yaml. Mo tun lo olupin ede kan fun golangnitorinaa atunto gbogbogbo mi dabi eyi:

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

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

kubernetes - aaye ti o wa ni ipamọ ti o sọ fun olupin ede lati ṣe igbasilẹ ero Kubernetes lati URL ti a ṣalaye ninu yi ibakan. yaml.schemas le ti wa ni faagun lati ṣe atilẹyin awọn eto afikun - fun awọn alaye diẹ sii, wo ti o yẹ iwe.

Bayi o le ṣẹda faili YAML ki o bẹrẹ lilo adaṣe adaṣe. Titẹ + aaye (tabi apapo miiran ti a tunto ni vim) yẹ ki o ṣafihan awọn aaye ti o wa ati iwe ni ibamu si ipo lọwọlọwọ:

Vim pẹlu atilẹyin YAML fun Kubernetes
+Space ṣiṣẹ nibi nitori Mo tunto inoremap <silent><expr> <c-space> coc#refresh(). Ti o ko ba tii ṣe eyi, wo coc.nvim README fun apẹẹrẹ iṣeto ni.

Yiyan ẹya Kubernetes API

Gẹgẹ bi kikọ yii, awọn ọkọ oju-omi olupin yaml-ede pẹlu awọn eto Kubernetes 1.14.0. Emi ko wa ọna kan lati yan eto ni agbara, nitorinaa Mo ṣii ti o baamu GitHub oro. O da, niwọn igba ti olupin ede ti kọ sinu iwe afọwọkọ, o rọrun pupọ lati yi ẹya pada pẹlu ọwọ. Lati ṣe eyi, o kan wa faili naa server.ts.

Lati rii lori ẹrọ rẹ, ṣii ṣii faili YAML pẹlu vim ki o wa ilana naa pẹlu 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

Ilana ti o yẹ fun wa jẹ ilana 2380: o jẹ ohun ti vim nlo nigbati o n ṣatunṣe faili YAML kan.

Bi o ṣe le rii ni irọrun, faili naa wa ninu /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. O kan ṣatunkọ rẹ nipa yiyipada iye naa KUBERNETES_SCHEMA_URL, fun apẹẹrẹ, fun ẹya 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";

Da lori awọn ti ikede lo coc-yaml Ipo ti oniyipada ninu koodu le yatọ. Jọwọ tun ṣe akiyesi pe Mo yipada ibi ipamọ lati garethr on instrumenta. O dabi pe garethr yipada si awọn iyika atilẹyin nibẹ.

Lati ṣayẹwo pe iyipada naa ti ni ipa, rii boya aaye kan ba han ti ko si tẹlẹ [ni awọn ẹya ti tẹlẹ ti Kubernetes]. Fun apẹẹrẹ, ninu aworan atọka fun K8s 1.14 ko si startupProbe:

Vim pẹlu atilẹyin YAML fun Kubernetes

Akopọ

Mo nireti pe anfani yii dun ọ bi o ti ṣe fun mi. Dun YAMLing! Rii daju lati ṣayẹwo awọn ibi ipamọ wọnyi lati ni oye daradara awọn ohun elo ti a mẹnuba ninu nkan naa:

PS lati onitumọ

Ati pe o wa tun vikube, vim-kubernetes и vimkubectl.

Ka tun lori bulọọgi wa:

orisun: www.habr.com

Fi ọrọìwòye kun