Vim me mbështetje YAML për Kubernetes

ShĂ«n. pĂ«rkth.: Artikulli origjinal Ă«shtĂ« shkruar nga Josh Rosso — arkitekt nga VMware, i cili mĂ« parĂ« ka punuar nĂ« kompani si CoreOS dhe Heptio, dhe Ă«shtĂ« gjithashtu bashkautori i kubernetes alb-ingress-controller. Autori ndan njĂ« recetĂ« tĂ« vogĂ«l qĂ« mund tĂ« jetĂ« shumĂ« e dobishme pĂ«r inxhinierĂ«t e operacioneve "tĂ« vjetĂ«r", qĂ« preferojnĂ« vim edhe nĂ« epokĂ«n e cloud native.

Vim me mbështetje YAML për Kubernetes

A shkruani YAML manifestet pĂ«r Kubernetes nĂ« vim? A keni kaluar orĂ« tĂ« tĂ«ra duke u pĂ«rpjekur tĂ« kuptoni se ku nĂ« kĂ«tĂ« specifikim duhet tĂ« jetĂ« njĂ« fushĂ« tjetĂ«r? Apo ndoshta do tĂ« ishit tĂ« lumtur pĂ«r njĂ« kujtesĂ« tĂ« shpejtĂ« nĂ« lidhje me diferencĂ«n args dhe command? Есть Ń…ĐŸŃ€ĐŸŃˆĐžĐ” ĐœĐŸĐČĐŸŃŃ‚Đž! Vim лДгĐșĐŸ проĐČŃĐ·Đ°Ń‚ŃŒ Đș yaml-language-server, pĂ«r tĂ« marrĂ« pĂ«rfundim automatik, validim dhe pĂ«rfitime tĂ« tjera. NĂ« kĂ«tĂ« artikull do tĂ« flasim se si tĂ« konfiguroni klientin e serverit tĂ« gjuhĂ«s pĂ«r kĂ«tĂ«.

(Artikulli origjinal gjithashtu ka një video, ku autori tregon dhe demonstruar përmbajtjen e materialit.)

Serveri i gjuhës

ServerĂ«t e gjuhĂ«s (language servers) i japin informacione redaktorĂ«ve dhe IDE-ve pĂ«r mundĂ«sitĂ« e gjuhĂ«ve tĂ« programimit, duke bashkĂ«punuar me njĂ«ri-tjetrin pĂ«rmes njĂ« protokolli tĂ« veçantĂ« — Language Server Protocol (LSP). Ky Ă«shtĂ« njĂ« qasje e shkĂ«lqyer: sepse lejon njĂ« implementim tĂ« ofrojĂ« tĂ« dhĂ«na pĂ«r shumĂ« redaktora/IDE-njĂ«herĂ«sh. UnĂ« tashmĂ« kam shkruante pĂ«r gopls — serverin e gjuhĂ«s pĂ«r Golang — dhe si mund tĂ« pĂ«rdoret nĂ« vim. Veprimet pĂ«r tĂ« marrĂ« pĂ«rfundim automatik nĂ« YAML pĂ«r Kubernetes janĂ« tĂ« ngjashme.

Vim me mbështetje YAML për Kubernetes

PĂ«r tĂ« bĂ«rĂ« qĂ« vim tĂ« punojĂ« nĂ« kĂ«tĂ« mĂ«nyrĂ«, do tĂ« nevojitet tĂ« instaloni klientin e serverit tĂ« gjuhĂ«s. Dy mĂ«nyrat qĂ« di janĂ« LanguageClient-neovim dhe coc.vim. NĂ« kĂ«tĂ« artikull do tĂ« shqyrtoj coc.vim — ky Ă«shtĂ« plugini mĂ« popullor nĂ« momentin e tanishĂ«m. Mund ta instaloni pĂ«rmes vim-plug:

" Përdorni degën e lëshimit (Rekomandohet)
Plug 'neoclide/coc.nvim', {'branch': 'release'}

" Ose ndërtoni nga kodi burimor duke përdorur yarn: https://yarnpkg.com
Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'}

Për të filluar coc (dhe, kështu, serverin yaml-language-server) kërkon që të keni node.js të instaluar:

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

Kur coc.vim kur të jetë konfiguruar, instaloni zgjatjen serverike coc-yaml nga vim:

:CocInstall coc-yaml

Vim me mbështetje YAML për Kubernetes

Në fund, ndoshta do të dëshironit të filloni me konfigurimin coc-vim, i paraqitur si një shembull. Në veçanti, ajo aktivizon kombinimin +hapësirë për të thirrur përfundimin automatik.

Konfigurimi për zbulimin e yaml-language-server

Për coc mund të përfitojë nga yaml-language-server, duhet ta kërkoni të ngarkojë skemën nga Kubernetes gjatë redaktimit të skedarëve YAML. Kjo bëhet duke modifikuar coc-config:

:CocConfig

Në konfigurim do të duhet të shtoni kubernetes për të gjitha skedarët yaml. Unë gjithashtu përdor një server gjuhësor për golang, prandaj konfigurimi im i përgjithshëm duket kështu:

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

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

kubernetes — njĂ« fushĂ« e rezervuar, e cila i thotĂ« serverit gjuhĂ«sor qĂ« tĂ« ngarkojĂ« skemĂ«n e Kubernetes nga URL-ja e pĂ«rcaktuar nĂ« kĂ«tĂ« konstantĂ«. yaml.schemas mund tĂ« zgjerohet me mbĂ«shtetje pĂ«r skema tĂ« tjera — mĂ« shumĂ« nĂ« dokumentacionin pĂ«rkatĂ«s.

Tani mund të krijoni një skedë YAML dhe të filloni të përdorni autokompletimin. Shtypja +hapësirë (ose ndonjë kombinim tjetër të konfiguruar në vim) duhet të tregojë fushat e disponueshme dhe dokumentacionin sipas kontekstit aktual:

Vim me mbështetje YAML për Kubernetes
KĂ«tu funksionon +hapĂ«sirĂ«, sepse kam konfiguruar inoremap coc#refresh(). NĂ«se nuk e keni bĂ«rĂ« kĂ«tĂ« — shihni coc.nvim README pĂ«r njĂ« shembull konfigurimi.

Zgjedhja e versionit të API Kubernetes

Në momentin e shkrimit të këtij artikulli, yaml-language-server vjen me skemat Kubernetes 1.14.0. Nuk kam gjetur një mënyrë për të zgjedhur dinamikisht skemën, prandaj hapa çështjen përkatëse në GitHub. Fatmirësisht, për shkak se serveri gjuhësor është shkruar në typescript, është shumë e lehtë ta ndryshosh manualisht versionin. Mjafton të gjesh skedarin server.ts.

Për ta gjetur në kompjuterin tuaj, thjesht hapni një skedë YAML me vim dhe kërkoni procesin me 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

Për ne, procesi 2380 është relevant: pikërisht ai përdoret nga vim gjatë redaktimit të skedës YAML.

Siç shihet lehtësisht, skedari ndodhet në /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Mjafton ta redaktoni, duke ndryshuar vlerën KUBERNETES_SCHEMA_URL, për shembull, në versionin 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";

Në varësi të versionit të coc-yaml vendndodhja e ndryshoreve në kod mund të jetë e ndryshme. Vini re gjithashtu se kam ndryshuar depot nga garethr në instrumenta. Duket se garethr ka kaluar në mbështetje për skema pikërisht atje.

Për të kontrolluar nëse ndryshimi ka hyrë në fuqi, shihni nëse fushat, të cilat më parë [në versionet e kaluara të Kubernetes], nuk ishin. Për shembull, në skemën për K8s 1.14 nuk kishte startupProbe:

Vim me mbështetje YAML për Kubernetes

CV

Shpresoj që kjo mundësi ju gëzoi po aq sa edhe mua. Gëzuar YAML-ing! Mos harroni të shqyrtoni këto ripostime për të kuptuar më mirë mjetet e përmendura në artikull:

P.S. nga përkthyesi

Dhe ka gjithashtu vikube, vim-kubernetes dhe vimkubectl.

Lexoni gjithashtu në blogun tonë:

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster