Vim ak sipò YAML pou Kubernetes

Remak. trad.: Atik orijinal la te ekri pa Josh Rosso, yon achitèk nan VMware ki te deja travay nan konpayi tankou CoreOS ak Heptio, epi li se tou ko-otè Kubernetes alb-ingress-controller la. Otè a pataje yon ti resèt ki ka trè itil pou "fin vye granmoun lekòl" enjenyè operasyon ki prefere vim menm nan epòk la nan nwaj la viktorye natif natal.

Vim ak sipò YAML pou Kubernetes

Ekri manifest YAML pou Kubernetes nan vim? Te pase inonbrabl èdtan ap eseye konnen ki kote pwochen jaden an ta dwe nan spesifikasyon sa a? Oswa petèt ou pral apresye yon rapèl rapid nan diferans lan args и command? Gen yon bon nouvèl! Vim fasil pou lyen yaml-language-serverpou jwenn otomatik fini, validation ak lòt konvenyans. Nan atik sa a nou pral pale sou ki jan yo mete kanpe yon kliyan sèvè lang pou sa a.

(Atik orijinal la tou eske gen yon video, kote otè a pale ak demontre sa ki nan materyèl la.)

Sèvè lang

Sèvè lang (sèvè lang) pale sou kapasite langaj pwogramasyon yo bay editè ak IDE, pou yo kominike youn ak lòt lè l sèvi avèk yon pwotokòl espesyal - Pwotokòl sèvè lang (LSP). Sa a se yon gwo apwòch paske li pèmèt yon aplikasyon pou bay done anpil editè/IDE alafwa. Mwen deja писал sou gopls - yon sèvè lang pou Golang - ak ki jan li ka itilize nan VIM. Etap yo pou jwenn autocompletion nan YAML pou Kubernetes yo sanble.

Vim ak sipò YAML pou Kubernetes

Pou vim travay nan fason ki dekri a, w ap bezwen enstale yon kliyan sèvè lang. De metòd mwen konnen se LanguageClient-neovim и coc.vim. Nan atik la mwen pral konsidere coc.vim - Sa a se plugin ki pi popilè nan moman sa a. Ou ka enstale li atravè vim-plòg:

" 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'}

Pou kòmanse coc (e konsa yaml-language-server) pral mande pou node.js enstale:

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

coc.vim configuré, enstale ekstansyon sèvè a coc-yaml soti nan vim:

:CocInstall coc-yaml

Vim ak sipò YAML pou Kubernetes

Finalman, ou pral gen plis chans vle kòmanse ak konfigirasyon an coc-vim, prezante kòm yon egzanp. An patikilye, li aktive konbinezon an +espas pou rele autocompletion.

Mete kanpe deteksyon yaml-language-server

Sa coc ta ka itilize yaml-language-server, li bezwen yo mande yo chaje chema a soti nan Kubernetes lè koreksyon dosye YAML. Sa a se fè pa koreksyon coc-config:

:CocConfig

Nan konfigirasyon an ou pral bezwen ajoute kubernetes pou tout fichye yo yaml. Anplis de sa, mwen itilize yon sèvè lang pou golangkidonk konfigirasyon jeneral mwen an sanble sa a:

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

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

kubernetes — yon jaden rezève ki di sèvè lang pou telechaje chema Kubernetes nan URL ki defini nan konstan sa a. yaml.schemas ka elaji pou sipòte plan adisyonèl - pou plis detay, gade dokiman ki enpòtan.

Koulye a, ou ka kreye yon dosye YAML epi kòmanse itilize otokonplesyon. Peze +espas (oswa lòt konbinezon configuré nan vim) ta dwe montre jaden ki disponib yo ak dokimantasyon selon kontèks aktyèl la:

Vim ak sipò YAML pou Kubernetes
+Espas travay isit la paske mwen configuré inoremap <silent><expr> <c-space> coc#refresh(). Si ou pa fè sa, gade coc.nvim README pou yon egzanp konfigirasyon.

Chwazi vèsyon an API Kubernetes

Kòm nan ekri sa a, yaml-language-server bato ak Kubernetes 1.14.0 chema. Mwen pa t 'jwenn yon fason yo dinamik chwazi yon chema, Se konsa, mwen louvri pwoblèm GitHub ki koresponn lan. Erezman, piske sèvè lang lan ekri nan tape ekri, li se byen fasil manyèlman chanje vèsyon an. Pou fè sa, jis jwenn dosye a server.ts.

Pou detekte li sou machin ou, tou senpleman louvri dosye a YAML ak vim epi jwenn pwosesis la ak 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

Pwosesis ki enpòtan pou nou se pwosesis 2380: se sa vim itilize lè li modifye yon dosye YAML.

Kòm ou ka fasilman wè, dosye a sitiye nan /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Jis modifye li pa chanje valè a KUBERNETES_SCHEMA_URL, pou egzanp, pou vèsyon 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";

Tou depan de vèsyon an itilize coc-yaml Kote varyab la nan kòd la ka varye. Tanpri sonje tou ke mwen chanje repozitwa a soti nan garethr sou instrumenta. Li sanble ke garethr chanje nan sikui sipòte la.

Pou tcheke ke chanjman an te pran efè, gade si yon jaden parèt ki pa t 'la anvan [nan vèsyon anvan yo nan Kubernetes]. Pa egzanp, nan dyagram pou K8s 1.14 pa te gen okenn startupProbe:

Vim ak sipò YAML pou Kubernetes

Rezime

Mwen espere opòtinite sa a fè ou plezi menm jan li fè m '. Ala bon sa bon YAMling! Asire w ou tcheke depo sa yo pou pi byen konprann sèvis piblik yo mansyone nan atik la:

PS soti nan tradiktè

Epi gen tou vikube, vim-kubernetes и vimkubectl.

Li tou sou blog nou an:

Sous: www.habr.com

Add nouvo kòmantè