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.
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.
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
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:
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:
+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.
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:
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: