Vim ka tšehetso ea YAML bakeng sa Kubernetes

Hlokomela. fetolela.: Sengoliloeng sa mantlha se ngotsoe ke Josh Rosso, setsebi sa meralo ea VMware eo pele a neng a sebetsa lik'hamphaning tse kang CoreOS le Heptio, hape ke sengoli se kopaneng sa Kubernetes alb-ingress-controller. Sengoli se arolelana risepe e nyane e ka bang molemo haholo bakeng sa lienjineri tsa ts'ebetso ea "sekolo sa khale" ba ratang vim esita le nakong ea matsoalloa a maru a hlotseng.

Vim ka tšehetso ea YAML bakeng sa Kubernetes

Ho ngola YAML ho hlahisa Kubernetes ka vim? O qetile lihora tse ngata ho leka ho fumana hore na sebaka se latelang se lokela ho ba hokae ka litlhaloso tsee? Kapa mohlomong u tla ananela khopotso e potlakileng ea phapang args и command? Ho na le litaba tse monate! Vim e bonolo ho hokahanya le eona yaml-puo-serverho fumana ho phetheloa ka boiketsetso, netefatso le lintho tse ling tse bonolo. Sehloohong sena re tla bua ka mokhoa oa ho theha moreki oa seva ea puo bakeng sa sena.

(Sengoloa sa mantlha le sona ho na le video, moo mongoli a buang le ho bontša se fuperoeng ke boitsebiso boo.)

Seva ea puo

Li-server tsa puo (li-server tsa lipuo) bua ka bokhoni ba lipuo tsa mananeo ho bahlophisi le li-IDE, tseo ba sebelisanang le tsona ba sebelisa protocol e khethehileng - Protocol ea Server ea Puo (LSP). Ena ke mokhoa o motle hobane o lumella ts'ebetsong e le 'ngoe ho fana ka data ho bahlophisi ba bangata / li-IDE hang-hang. Ke se ke entse o ngotse mabapi li-gopls - Seva ea puo ea Golang - le hore na e ka sebelisoa joang ho vim. Mehato ea ho ikemela ho YAML bakeng sa Kubernetes ea tšoana.

Vim ka tšehetso ea YAML bakeng sa Kubernetes

E le hore vim e sebetse ka tsela e hlalositsoeng, o tla hloka ho kenya sebatli sa seva sa puo. Mekhoa e 'meli eo ke e tsebang ke LanguageClient-neovim и coc.vim. Sehloohong seo ke tla se hlahloba coc.vim - Ena ke plugin e tsebahalang haholo hajoale. U ka e kenya ka 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'}

Bakeng sa qalo coc ('me kahoo yaml-language-server) e tla hloka hore node.js e kenngoe:

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

Ha coc.vim e hlophisitsoe, kenya katoloso ea seva coc-yaml ho tloha ho vim:

:CocInstall coc-yaml

Vim ka tšehetso ea YAML bakeng sa Kubernetes

Qetellong, mohlomong u tla batla ho qala ka tlhophiso coc-vim, hlahiswa e le mohlala. Haholo-holo, e kenya tshebetsong motsoako +sebaka ho letsa ho phethela ka ho iketsa.

Ho theha yaml-language-server ea ho lemoha

hore coc e ka sebelisa yaml-language-server, e hloka ho botsoa ho kenya schema ho tsoa Kubernetes ha o hlophisa lifaele tsa YAML. Sena se etsoa ka ho hlophisa coc-config:

:CocConfig

Ka tlhophiso o tla hloka ho eketsa kubernetes bakeng sa lifaele tsohle yaml. Ke boetse ke sebelisa seva ea puo bakeng sa golangkahoo config kakaretso ea ka e shebahala tjena:

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

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

kubernetes - sebaka se bolokiloeng se bolellang seva sa puo ho khoasolla Kubernetes schema ho tsoa ho URL e hlalositsoeng ho kamehla ena. yaml.schemas e ka atolosoa ho tšehetsa merero e eketsehileng - bakeng sa lintlha tse ling, bona litokomane tse amehang.

Joale o ka etsa faele ea YAML 'me oa qala ho sebelisa autocompletion. Ho hatella +sebaka (kapa motsoako o mong o hlophisitsoeng ho vim) o lokela ho bonts'a masimo le litokomane tse teng ho latela maemo a hajoale:

Vim ka tšehetso ea YAML bakeng sa Kubernetes
+Space e sebetsa mona hobane ke hlophisitse inoremap <silent><expr> <c-space> coc#refresh(). Haeba ha o eso etse sena, le a bona coc.nvim BALALANG bakeng sa mohlala oa tlhophiso.

Ho khetha mofuta oa Kubernetes API

Ha re ntse re ngola sena, likepe tsa li-yaml-language-server tse nang le Kubernetes 1.14.0 schemas. Ha kea fumana mokhoa oa ho khetha schema ka matla, kahoo ke ile ka bula e tsamaisanang le taba ea GitHub. Ka lehlohonolo, kaha seva ea puo e ngotsoe ka mongolo oa mongolo, ho bonolo haholo ho fetola mofuta ona. Ho etsa sena, fumana feela file server.ts.

Ho e bona mochining oa hau, bula feela faele ea YAML ka vim 'me u fumane ts'ebetso ka 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

Ts'ebetso e nepahetseng bakeng sa rona ke ts'ebetso ea 2380: ke seo vim e se sebelisang ha o hlophisa faele ea YAML.

Joalokaha u ka bona habonolo, faele e teng /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. E fetole feela ka ho fetola boleng KUBERNETES_SCHEMA_URL, mohlala, bakeng sa mofuta oa 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";

Ho itšetlehile ka phetolelo e sebelisitsoeng coc-yaml Sebaka sa phetoho khoutung se ka fapana. Ka kopo hlokomela hore ke fetotse sebaka sa polokelo ho tloha garethr mabapi le instrumenta. Ho bonahala joalo garethr fetisetsoa ho lipotoloho tse tšehetsang moo.

Ho netefatsa hore phetoho e se e qalile, sheba hore na ho na le tšimo e neng e le sieo pele [liphetolelong tse fetileng tsa Kubernetes]. Ka mohlala, setšoantšong sa K8s 1.14 ho ne ho se na qalaProbe:

Vim ka tšehetso ea YAML bakeng sa Kubernetes

Kakaretso

Ke tšepa hore monyetla ona o tla u khahlisa joalokaha o ile oa nthabisa. Thabela YAMLing! Etsa bonnete ba hore u sheba libaka tsena tsa polokelo ho utloisisa hamolemo lisebelisoa tse boletsoeng sehloohong sena:

PS ho tsoa ho mofetoleli

Hape ho na le vikube, vim-kubernetes и vimkubectl.

Bala hape ho blog ea rona:

Source: www.habr.com

Eketsa ka tlhaloso