I-Vim ngosekelo lwe-YAML lwe-Kubernetes

Qaphela. transl.: Isihloko sokuqala sabhalwa u-Josh Rosso, umakhi wezakhiwo e-VMware owake wasebenza ezinkampanini ezifana ne-CoreOS ne-Heptio, futhi ungumbhali-munye we-Kubernetes alb-ingress-controller. Umbhali wabelana ngeresiphi encane engaba wusizo kakhulu konjiniyela bemisebenzi “yesikole esidala” abakhetha i-vim ngisho nangenkathi yomdabu wamafu wokunqoba.

I-Vim ngosekelo lwe-YAML lwe-Kubernetes

Ukubhala i-YAML iveza i-Kubernetes in vim? Uchithe amahora amaningi uzama ukuthola ukuthi inkambu elandelayo kufanele ibe kuphi kulokhu kucaciswa? Noma mhlawumbe uzojabulela isikhumbuzo esisheshayo somehluko args и command? Kunezindaba ezinhle! I-Vim kulula ukuyixhumanisa nayo iseva yolimi-yamlukuze uthole ukuphothulwa okuzenzakalelayo, ukuqinisekiswa nokunye okulula. Kulesi sihloko sizokhuluma ngendlela yokusetha iklayenti leseva yolimi kulokhu.

(Isihloko sokuqala futhi ikhona ividiyo, lapho umbhali ekhuluma futhi abonise okuqukethwe yindaba.)

Iseva yolimi

Iziphakeli zolimi (amaseva olimi) khuluma ngamakhono ezilimi zokuhlela kubahleli kanye nama-IDE, abasebenzisana ngawo kusetshenziswa iphrothokholi ekhethekile - Iphrothokholi yeseva yolimi (LSP). Lena indlela enhle kakhulu ngoba ivumela ukusetshenziswa okukodwa ukunikeza idatha kubahleli/ama-IDE amaningi ngesikhathi esisodwa. Senginakho wabhala cishe gopls - iseva yolimi ye-Golang - nokuthi ingasetshenziswa kanjani ku vim. Izinyathelo zokuqedela ngokuzenzakalela ku-YAML ku-Kubernetes ziyefana.

I-Vim ngosekelo lwe-YAML lwe-Kubernetes

Ukuze i-vim isebenze ngendlela echaziwe, uzodinga ukufaka iklayenti leseva yolimi. Izindlela ezimbili engizaziyo ziyi UlimiClient-neovim и coc.vim. Esihlokweni engizoxoxa ngaso coc.vim - Lena i-plugin ethandwa kakhulu okwamanje. Ungayifaka nge 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'}

Okokuqala coc (futhi ngaleyo ndlela i-yaml-language-server) izodinga ukuthi i-node.js ifakwe:

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

Nini coc.vim kumisiwe, faka isandiso seseva coc-yaml kusuka ku-vim:

:CocInstall coc-yaml

I-Vim ngosekelo lwe-YAML lwe-Kubernetes

Ekugcineni, cishe uzofuna ukuqala ngokulungiselela coc-vim, kwethulwe njengesibonelo. Ikakhulukazi, yenza inhlanganisela isebenze +isikhala ukubiza ukuqedela okuzenzakalelayo.

Isetha ukutholwa kweseva ye-yaml-language

ukuthi coc ingase isebenzise iseva ye-yaml-language, idinga ukucelwa ukuthi ilayishe i-schema kusuka ku-Kubernetes lapho ihlela amafayela e-YAML. Lokhu kwenziwa ngokuhlela coc-config:

:CocConfig

Ekucushweni uzodinga ukungeza kubernetes kuwo wonke amafayela yaml. Ngaphezu kwalokho ngisebenzisa iseva yolimi golangngakho-ke ukumisa kwami ​​​​okujwayelekile kubukeka kanje:

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

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

kubernetes — inkambu egodliwe etshela iseva yolimi ukuthi ilande i-schema ye-Kubernetes ku-URL echazwe kuyo lokhu njalo. yaml.schemas inganwetshwa ukuze isekele izikimu ezengeziwe - ukuze uthole imininingwane eyengeziwe, bheka imibhalo efanele.

Manje usungakwazi ukudala ifayela le-YAML futhi uqale ukusebenzisa ukuqedela ngokuzenzakalela. Iyacindezela +isikhala (noma enye inhlanganisela elungiselelwe ku-vim) kufanele ibonise izinkambu ezitholakalayo kanye nemibhalo ngokuya komongo wamanje:

I-Vim ngosekelo lwe-YAML lwe-Kubernetes
Isebenza lapha +isikhala ngoba ngimisile inoremap <silent><expr> <c-space> coc#refresh(). Uma ungakwenzanga lokhu, niyabo coc.nvim FUNDA ngokwesibonelo sokucushwa.

Ukukhetha inguqulo ye-Kubernetes API

Kusukela kulokhu kubhalwa, imikhumbi ye-yaml-language-server ene-Kubernetes 1.14.0 schemas. Angizange ngithole indlela yokukhetha i-schema, ngakho ngivule udaba oluhambisanayo lwe-GitHub. Ngenhlanhla, njengoba iseva yolimi ibhalwe ngombhalo wokubhala, kulula kakhulu ukushintsha inguqulo mathupha. Ukuze wenze lokhu, vele uthole ifayela server.ts.

Ukuze uyithole emshinini wakho, vele uvule ifayela le-YAML nge-vim futhi uthole inqubo ngayo 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

Inqubo efanelekile kithi iyinqubo engu-2380: iyona esetshenziswa yi-vim lapho uhlela ifayela le-YAML.

Njengoba ubona kalula, ifayela likhona /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Vele uyihlele ngokushintsha inani KUBERNETES_SCHEMA_URL, isibonelo, inguqulo 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";

Kuye ngenguqulo esetshenzisiwe coc-yaml Indawo yokuguquguquka kukhodi ingahluka. Sicela futhi uqaphele ukuthi ngishintshe indawo yokugcina kusuka garethr on instrumenta. Kubonakala sengathi garethr kushintshelwe kumasekethe asekelayo lapho.

Ukuze uhlole ukuthi ushintsho seluqalile ukusebenza, bheka ukuthi ingabe iyavela yini inkambu ebingekho ngaphambilini [ezinguqulweni zangaphambilini ze-Kubernetes]. Isibonelo, kumdwebo we-K8s 1.14 kwakungekho qalaProbe:

I-Vim ngosekelo lwe-YAML lwe-Kubernetes

Isifingqo

Ngethemba ukuthi leli thuba lizokujabulisa njengoba lingithokozisile. Jabulela i-YAMLing! Qiniseka ukuthi ubheka lezi zindawo zokugcina ukuze uqonde kangcono izinsiza ezishiwo esihlokweni:

I-PS evela kumhumushi

Futhi kukhona futhi ukube, vim-kubernetes и vimkubectl.

Funda futhi kubhulogi yethu:

Source: www.habr.com

Engeza amazwana