Vim le taic YAML airson Kubernetes

Thoir an aire. eadar-theangachadh.: Chaidh an artaigil tùsail a sgrìobhadh le Josh Rosso, ailtire aig VMware a bha roimhe ag obair aig companaidhean leithid CoreOS agus Heptio, agus a tha cuideachd na cho-ùghdar air an Kubernetes alb-ingress-controller. Bidh an t-ùghdar a’ roinn reasabaidh bheag a dh’ fhaodadh a bhith glè fheumail dha innleadairean gnìomhachd “seann sgoil” as fheàrr leotha vim eadhon ann an àm dùthchasach sgòthan buadhach.

Vim le taic YAML airson Kubernetes

A’ sgrìobhadh YAML a’ nochdadh airson Kubernetes ann an vim? Chuir mi seachad uairean gun àireamh a’ feuchainn ri faighinn a-mach càite am bu chòir an ath raon a bhith san t-sònrachadh seo? No is dòcha gun cuir thu meas air cuimhneachan sgiobalta mun eadar-dhealachadh args и command? Tha deagh naidheachd ann! Tha e furasta ceangal a dhèanamh ri Vim yaml-language-servergus crìochnachadh fèin-ghluasadach, dearbhadh agus goireasan eile fhaighinn. San artaigil seo bruidhnidh sinn mu mar a stèidhicheas tu teachdaiche frithealaiche cànain airson seo.

(An artaigil tùsail cuideachd a bheil bhidio ann, far a bheil an t-ùghdar a’ bruidhinn agus a’ taisbeanadh susbaint an stuth.)

Frithealaidh cànain

Frithealaichean cànain (frithealaichean cànain) bruidhinn mu chomasan chànanan prògramaidh do luchd-deasachaidh agus IDEs, airson am bi iad ag eadar-obrachadh le chèile a’ cleachdadh protocol sònraichte - Protocal Freiceadan Cànain (LSP). Is e deagh dhòigh-obrach a tha seo oir leigidh e le aon bhuileachadh dàta a thoirt do dh’ iomadh neach-deasachaidh / IDE aig an aon àm. Tha agam mar-thà sgrìobh mu dheidhinn gopls - frithealaiche cànain airson Golang - agus mar a ghabhas a chleachdadh ann an Vim. Tha na ceumannan gus fèin-chrìochnachadh fhaighinn ann an YAML airson Kubernetes coltach.

Vim le taic YAML airson Kubernetes

Gus am bi vim ag obair anns an dòigh a chaidh a mhìneachadh, feumaidh tu cleachdaiche frithealaiche cànain a stàladh. Is e an dà dhòigh as aithne dhomh Cànain Client-nevim и coc.vim. Anns an artaigil beachdaichidh mi coc.vim - Is e seo am plugan as mòr-chòrdte an-dràsta. Faodaidh tu a stàladh tro 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'}

Airson tòiseachadh coc (agus mar sin an yaml-language-server) bidh feum air node.js air a stàladh:

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

Cuin coc.vim air a rèiteachadh, stàlaich leudachadh an fhrithealaiche coc-yaml bho vim:

:CocInstall coc-yaml

Vim le taic YAML airson Kubernetes

Mu dheireadh, is dòcha gum bi thu airson tòiseachadh leis an rèiteachadh coc-vim, air a thaisbeanadh mar eisimpleir. Gu sònraichte, bidh e a 'gnìomhachadh a' mheasgachadh + àite gus fèin-chrìochnachadh a ghairm.

A’ stèidheachadh lorgaireachd yaml-language-server

gu bheil coc b’ urrainn dha yaml-language-server a chleachdadh, feumar iarraidh air an sgeama a luchdachadh bho Kubernetes nuair a bhios tu a’ deasachadh fhaidhlichean YAML. Tha seo air a dhèanamh le deasachadh coc-config:

:CocConfig

Anns an rèiteachadh feumaidh tu a chur ris kubernetes airson a h-uile faidhle yaml. Bidh mi cuideachd a’ cleachdadh frithealaiche cànain airson golangmar sin tha an rèiteachadh coitcheann agam a’ coimhead mar seo:

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

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

kubernetes - raon glèidhte a dh’ innseas don t-seirbheisiche cànain sgeama Kubernetes a luchdachadh sìos bhon URL a tha air a mhìneachadh ann an seasmhach seo. yaml.schemas faodar a leudachadh gus taic a thoirt do sgeamaichean a bharrachd - airson tuilleadh fiosrachaidh, faic sgrìobhainnean iomchaidh.

A-nis faodaidh tu faidhle YAML a chruthachadh agus tòiseachadh air fèin-chrìochnachadh a chleachdadh. A' bruthadh + àite (no measgachadh eile air a rèiteachadh ann an vim) na raointean agus na sgrìobhainnean a tha rim faighinn a nochdadh a rèir a’ cho-theacsa làithreach:

Vim le taic YAML airson Kubernetes
Ag obair an seo +space a chionn 's gun do shuidhich mi inoremap <silent><expr> <c-space> coc#refresh(). Mura h-eil thu air seo a dhèanamh, faic coc.nvim README airson rèiteachadh eisimpleir.

A’ taghadh dreach Kubernetes API

Mar a tha an sgrìobhadh seo, bidh soithichean frithealaiche cànain yaml le sgeamaichean Kubernetes 1.14.0. Cha do lorg mi dòigh air sgeama a thaghadh gu dinamach, agus mar sin dh’ fhosgail mi cùis co-fhreagarrach GitHub. Gu fortanach, leis gu bheil am frithealaiche cànain sgrìobhte ann an clò-sgrìobhadh, tha e gu math furasta an dreach atharrachadh le làimh. Gus seo a dhèanamh, dìreach lorg am faidhle server.ts.

Gus a lorg air an inneal agad, dìreach fosgail am faidhle YAML le vim agus lorg am pròiseas le 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

Is e am pròiseas iomchaidh dhuinn pròiseas 2380: is e seo a bhios vim a’ cleachdadh nuair a bhios sinn a’ deasachadh faidhle YAML.

Mar a chì thu gu furasta, tha am faidhle suidhichte ann an /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Dìreach deasaich e le bhith ag atharrachadh an luach KUBERNETES_SCHEMA_URL, mar eisimpleir, airson dreach 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";

A rèir an dreach a chaidh a chleachdadh coc-yaml Faodaidh suidheachadh an caochladair sa chòd atharrachadh. Thoir an aire cuideachd gun do dh'atharraich mi an stòr bho garethr air instrumenta. Tha e coltach gu bheil garethr thionndaidh e gu cuairtean taic an sin.

Gus dèanamh cinnteach gu bheil an t-atharrachadh air tighinn gu buil, faic a bheil raon a’ nochdadh nach robh ann roimhe [ann an dreachan roimhe de Kubernetes]. Mar eisimpleir, anns an diagram airson K8s 1.14 cha robh toiseach tòiseachaidh:

Vim le taic YAML airson Kubernetes

Geàrr-chunntas

Tha mi an dòchas gun còrd an cothrom seo riut cho mòr ‘s a rinn e dhomh. YAMLing sona dhut! Dèan cinnteach gun toir thu sùil air na stòran sin gus tuigse nas fheàrr fhaighinn air na goireasan a tha air an ainmeachadh san artaigil:

PS bhon eadar-theangair

Agus tha cuideachd vibe, vim-kubernetes и vimkubectl.

Leugh cuideachd air ar blog:

Source: www.habr.com

Cuir beachd ann