Vim nga adunay suporta sa YAML alang sa Kubernetes

Nota. transl.: Ang orihinal nga artikulo gisulat ni Josh Rosso, usa ka arkitekto sa VMware nga nagtrabaho kaniadto sa mga kompanya sama sa CoreOS ug Heptio, ug mao usab ang co-author sa Kubernetes alb-ingress-controller. Gipaambit sa tagsulat ang usa ka gamay nga resipe nga mahimong mapuslanon kaayo alang sa mga inhenyero sa operasyon sa "daan nga eskwelahan" nga gusto ang vim bisan sa panahon sa madaugon nga lumad nga panganod.

Vim nga adunay suporta sa YAML alang sa Kubernetes

Giunsa pagsulat ang YAML nga gipakita alang sa Kubernetes sa vim? Gigugol ang dili maihap nga mga oras sa pagsulay aron mahibal-an kung diin ang sunod nga natad sa kini nga detalye? O tingali mapasalamatan nimo ang usa ka dali nga pahinumdom sa kalainan args ΠΈ command? Adunay maayong balita! Ang Vim dali nga ma-link yaml-language-serveraron makakuha og awtomatik nga pagkompleto, validation ug uban pang mga kasayon. Niini nga artikulo maghisgot kami kung giunsa ang pag-set up sa usa ka kliyente sa server sa pinulongan alang niini.

(Ang orihinal nga artikulo usab naa bay video, diin ang tagsulat naghisgot ug nagpakita sa mga sulod sa materyal.)

Server sa pinulongan

Mga server sa pinulongan (mga server sa pinulongan) naghisgot bahin sa mga kapabilidad sa mga programming language sa mga editor ug IDE, diin sila nakig-uban sa usag usa gamit ang usa ka espesyal nga protocol - Ang Language Server Protocol (LSP). Kini usa ka maayo nga pamaagi tungod kay gitugotan niini ang usa ka pagpatuman nga maghatag data sa daghang mga editor / IDE sa usa ka higayon. naa na ko nagsulat mahitungod sa mga gopls - usa ka server sa pinulongan para sa Golang - ug kung giunsa kini magamit sa vim. Ang mga lakang aron makuha ang autocompletion sa YAML para sa Kubernetes parehas.

Vim nga adunay suporta sa YAML alang sa Kubernetes

Aron molihok ang vim sa gihulagway nga paagi, kinahanglan nimo nga mag-install usa ka kliyente sa server sa pinulongan. Ang duha ka pamaagi nga akong nahibal-an mao ang LanguageClient-neovim ΠΈ coc.vim. Sa artikulo akong hisgotan coc.vim - Kini ang labing inila nga plugin sa pagkakaron. Mahimo nimo kini i-install pinaagi sa 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'}

Sa pagsugod coc (ug sa ingon ang yaml-language-server) magkinahanglan og node.js nga ma-install:

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

Kanus-a coc.vim gi-configure, i-install ang extension sa server coc-yaml gikan sa vim:

:CocInstall coc-yaml

Vim nga adunay suporta sa YAML alang sa Kubernetes

Sa katapusan, lagmit gusto nimo nga magsugod sa pag-configure coc-vim, gipresentar isip pananglitan. Sa partikular, gipalihok niini ang kombinasyon + luna sa pagtawag sa autocompletion.

Pag-set up sa yaml-language-server detection

nga coc mahimong mogamit sa yaml-language-server, kinahanglan nga hangyoon nga i-load ang schema gikan sa Kubernetes kung mag-edit sa mga file sa YAML. Gihimo kini pinaagi sa pag-edit coc-config:

:CocConfig

Sa pag-configure kinahanglan nimo nga idugang kubernetes alang sa tanan nga mga file yaml. Dugang pa nga naggamit ako usa ka server sa pinulongan alang sa golangmao nga ang akong kinatibuk-ang config ingon niini:

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

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

kubernetes β€” usa ka reserba nga natad nga nagsulti sa server sa pinulongan nga i-download ang Kubernetes schema gikan sa URL nga gihubit sa kini nga kanunay. yaml.schemas mahimong mapalapad aron suportahan ang dugang nga mga laraw - alang sa dugang nga mga detalye, tan-awa may kalabutan nga dokumentasyon.

Karon makahimo ka og YAML file ug magsugod sa paggamit sa autocompletion. Pagpugos + luna (o uban pang kombinasyon nga gi-configure sa vim) kinahanglan magpakita sa magamit nga mga natad ug dokumentasyon sumala sa karon nga konteksto:

Vim nga adunay suporta sa YAML alang sa Kubernetes
Nagtrabaho dinhi +space kay akong gi-configure inoremap <silent><expr> <c-space> coc#refresh(). Kung wala pa nimo kini mahimo, tan-awa coc.nvim README alang sa usa ka pananglitan nga pag-configure.

Pagpili sa bersyon sa Kubernetes API

Sa pagsulat niini, ang yaml-language-server nga mga barko nga adunay Kubernetes 1.14.0 schemas. Wala koy nakit-an nga paagi aron mapili ang usa ka schema, mao nga giablihan nako katugbang nga isyu sa GitHub. Maayo na lang, tungod kay ang server sa sinultian gisulat sa typescript, dali ra nga usbon ang bersyon. Aron mahimo kini, pangitaa lang ang file server.ts.

Aron mahibal-an kini sa imong makina, ablihi lang ang YAML file nga adunay vim ug pangitaa ang proseso nga adunay 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

Ang may kalabutan nga proseso alang kanamo mao ang proseso 2380: kini ang gigamit sa vim sa pag-edit sa usa ka YAML file.

Sama sa dali nimong makita, ang file nahimutang sa /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. I-edit lang kini pinaagi sa pagbag-o sa kantidad KUBERNETES_SCHEMA_URL, pananglitan, alang sa bersyon 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";

Depende sa bersyon nga gigamit coc-yaml Ang lokasyon sa variable sa code mahimong magkalainlain. Palihug timan-i usab nga akong giusab ang repository gikan sa garethr sa instrumenta. Murag mao na garethr gibalhin sa pagsuporta sa mga sirkito didto.

Aron masusi nga ang pagbag-o miepekto, tan-awa kung adunay usa ka field nga makita nga wala didto kaniadto [sa miaging mga bersyon sa Kubernetes]. Pananglitan, sa diagram alang sa K8s 1.14 walay pagsugodProbe:

Vim nga adunay suporta sa YAML alang sa Kubernetes

Sumaryo

Nanghinaut ko nga kini nga oportunidad makapahimuot kanimo sama sa akong gibuhat. Malipayon nga YAMLing! Siguroha nga susihon kini nga mga repository aron mas masabtan ang mga utilities nga gihisgutan sa artikulo:

PS gikan sa tighubad

Ug naa pud vikube, vim-kubernetes ΠΈ vimkubectl.

Basaha usab sa among blog:

Source: www.habr.com

Idugang sa usa ka comment