Vim yokhala ndi thandizo la YAML la Kubernetes

Zindikirani. transl.: Nkhani yoyambirira inalembedwa ndi Josh Rosso, katswiri wa zomangamanga ku VMware yemwe kale ankagwira ntchito kumakampani monga CoreOS ndi Heptio, komanso ndi wolemba nawo wa Kubernetes alb-ingress-controller. Wolembayo amagawana njira yaying'ono yomwe ingakhale yothandiza kwambiri kwa mainjiniya a "sukulu yakale" omwe amakonda vim ngakhale munthawi ya opambana mtambo.

Vim yokhala ndi thandizo la YAML la Kubernetes

Kulemba YAML kumawonetsera Kubernetes mu vim? Ndakhala maola ambiri kuyesa kudziwa komwe gawo lotsatira liyenera kukhala motere? Kapena mwina mungayamikire chikumbutso chachangu cha kusiyanako args ΠΈ command? Pali uthenga wabwino! Vim ndiyosavuta kulumikizana nayo yaml-language-serverkuti mukwaniritse zodziwikiratu, kutsimikizira ndi zina. M'nkhaniyi tikambirana momwe tingakhazikitsire kasitomala wa seva ya chinenero pa izi.

(Nkhani yoyambirira nayonso pali kanema, pamene wolemba amalankhula ndi kusonyeza zimene zili m’nkhaniyo.)

Seva yachilankhulo

Ma seva achilankhulo (maseva azilankhulo) lankhulani za kuthekera kwa zilankhulo zamapulogalamu kwa okonza ndi ma IDE, omwe amalumikizana wina ndi mnzake pogwiritsa ntchito protocol yapadera - Pulogalamu Yoyeserera Chilankhulo (LSP). Iyi ndi njira yabwino chifukwa imalola kukhazikitsidwa kumodzi kuti apereke zambiri kwa osintha / ma IDE ambiri nthawi imodzi. Ndatero kale analemba za gopls - seva yachilankhulo ya Golang - ndi momwe ingagwiritsire ntchito vim. Masitepe oti mukwaniritse zokha mu YAML ya Kubernetes ndi ofanana.

Vim yokhala ndi thandizo la YAML la Kubernetes

Kuti vim igwire ntchito mwanjira yomwe yafotokozedwera, muyenera kukhazikitsa kasitomala wa chilankhulo. Njira ziwiri zomwe ndikudziwa ndi LanguageClient-neovim ΠΈ coc.vim. M'nkhani yomwe ndikambirana coc.vim - Iyi ndiye pulogalamu yowonjezera yodziwika kwambiri pakadali pano. Mukhoza kukhazikitsa kudzera 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'}

Poyambira coc (ndipo motero yaml-language-server) idzafuna node.js kuyika:

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

pamene coc.vim kukhazikitsidwa, yikani zowonjezera za seva coc-yaml ku vim:

:CocInstall coc-yaml

Vim yokhala ndi thandizo la YAML la Kubernetes

Pomaliza, mungafune kuyamba ndi kasinthidwe coc-vim, zoperekedwa mwachitsanzo. Makamaka, imayambitsa kuphatikiza +malo kuyitanira autocompletion.

Kukhazikitsa kuzindikira kwa yaml-language-server

kuti coc ingagwiritse ntchito yaml-language-server, imayenera kufunsidwa kuti ikweze schema kuchokera Kubernetes mukamakonza mafayilo a YAML. Izi zimachitika pokonza coc-config:

:CocConfig

Mu kasinthidwe muyenera kuwonjezera kubernetes kwa mafayilo onse yaml. Ndimagwiritsanso ntchito seva yachilankhulo golangkotero config wanga wamba akuwoneka motere:

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

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

kubernetes - gawo losungidwa lomwe limauza seva ya chilankhulo kutsitsa Kubernetes schema kuchokera ku URL yofotokozedwamo izi mosalekeza. yaml.schemas zitha kukulitsidwa kuti zithandizire madongosolo owonjezera - kuti mumve zambiri, onani zolemba zoyenera.

Tsopano mutha kupanga fayilo ya YAML ndikuyamba kugwiritsa ntchito autocompletion. Kukanikiza +malo (kapena kuphatikiza kwina kokonzedwa mu vim) kuyenera kuwonetsa magawo ndi zolemba zomwe zilipo malinga ndi zomwe zikuchitika:

Vim yokhala ndi thandizo la YAML la Kubernetes
Zimagwira ntchito pano + danga chifukwa ndidakonza inoremap <silent><expr> <c-space> coc#refresh(). Ngati inu simunachite izi, mwawona coc.nvim README mwachitsanzo kasinthidwe.

Kusankha mtundu wa Kubernetes API

Polemba izi, zombo zaml-language-server ndi Kubernetes 1.14.0 schemas. Sindinapeze njira yosankhira schema, kotero ndidatsegula nkhani yofananira ya GitHub. Mwamwayi, popeza seva ya chinenero imalembedwa mu typescript, ndizosavuta kusintha pamanja. Kuti muchite izi, ingopeza fayilo server.ts.

Kuti muzindikire pamakina anu, ingotsegulani fayilo ya YAML ndi vim ndikupeza njirayo 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

Njira yoyenera kwa ife ndi ndondomeko 2380: ndi zomwe vim amagwiritsa ntchito pokonza fayilo ya YAML.

Monga mukuwonera, fayiloyo ili mkati /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Ingosinthani posintha mtengo KUBERNETES_SCHEMA_URL, mwachitsanzo, mtundu 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";

Kutengera mtundu womwe wagwiritsidwa ntchito coc-yaml Malo osinthika mu code akhoza kusiyana. Chonde dziwaninso kuti ndasintha posungira kuchokera garethr pa instrumenta. Zikuoneka kuti garethr sinthani ku mabwalo othandizira pamenepo.

Kuti muwone ngati kusinthako kwayamba, onani ngati gawo likuwoneka lomwe silinalipo kale [m'matembenuzidwe am'mbuyomu a Kubernetes]. Mwachitsanzo, mu chithunzi cha K8s 1.14 panalibe kuyambitsaProbe:

Vim yokhala ndi thandizo la YAML la Kubernetes

Chidule

Ndikukhulupirira kuti mwayiwu ukusangalatsani monga momwe unandikondera. Wodala YAMLing! Onetsetsani kuti mwayang'ana nkhokwe izi kuti mumvetse bwino zofunikira zomwe zatchulidwa m'nkhaniyi:

PS kuchokera kwa womasulira

Ndipo palinso vikube, vim-kubernetes ΠΈ vimkubectl.

Werenganinso pa blog yathu:

Source: www.habr.com

Kuwonjezera ndemanga