Vim me mbështetje për YAML për Kubernetes

Shën. përk.: artikujin origjinal e shkroi 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ë vjetra", të cilët preferojnë vim edhe në epokën e cloud native që ka fituar terren.

Vim me mbështetje për YAML për Kubernetes

A shkruani mmanifestet YAML për Kubernetes në vim? Keni kaluar orë të pafund duke u munduar të kuptoni se ku në këtë specifikim duhet të jetë fusha tjetër? Mund të jeni të lumtur për një përmbledhje të shpejtë të ndryshimeve. args dhe command? Есть хорошие новости! Vim легко привязать к yaml-language-server, për të marrë përfundime automatike, validim dhe lehtësira të tjera. Në këtë artikull do të flasim se si ta 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) informojnë redaktorët dhe IDE-të për mundësitë e gjuhëve të programimit dhe për këtë arsye bashkëpunojnë me njëri-tjetrin përmes një protokolli të veçantë — Language Server Protocol (LSP). Ky është një qasje e shkëlqyer: sepse lejon që një implementim të ofrojë të dhëna për shumë editorë/IDE njëherësh. Unë tashmë shkruar për gopls — serveri gjuhësor për Golang — dhe si mund të përdoret në vim. Veprimet për të marrë sugjerime në YAML për Kubernetes janë të ngjashme.

Vim me mbështetje për YAML për Kubernetes

Për të bërë që vim të punojë në këtë mënyrë, nevojitet të instalohet klienti i serverit gjuhësor. Dy mënyra që njihen nga unë janë LanguageClient-neovim dhe coc.vim. Në këtë artikull do të shqyrtoj coc.vim — ky është plugins më i popullarizuar deri tani. 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ë nisur coc (dhe, në këtë mënyrë, serveri yaml-language-server) kërkohet që node.js të jetë i instaluar:

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

Kur coc.vim nëse është i konfiguruar, instaloni zgjerimin e serverit coc-yaml nga vim’i:

:CocInstall coc-yaml

Vim me mbështetje për YAML për Kubernetes

Në fund, me siguri do të dëshironit të filloni me konfigurimin coc-vim, siç paraqitet si shembull. Sidomos, ajo aktivizon kombinimin +hapësirë për të thirrur sugjerimet.

Konfigurimi i zbulimit të yaml-language-server

Për coc mund të përdorë yaml-language-server, duhet ta kërkoni të ngarkohet skema nga Kubernetes gjatë redaktimit të skedave YAML. Kjo bëhet duke redaktuar coc-config:

:CocConfig

Në konfigurim nevojitet të shtohet kubernetes për të gjitha skedat yaml. Unë përveç kësaj përdor serverin gjuhësor për golang, kështu që konfigurimi im përmbledh kështu:

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

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

kubernetes — një fushë e rezervuar, e cila i tregon serverit gjuhësor se duhet të ngarkojë skemën Kubernetes nga URL-ja e përcaktuar në këtë konstantë. yaml.schemas mund të zgjerohet me mbështetje për skema të tjera — shihni më shumë në documentacionin përkatës.

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

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

Zgjedhja e versionit të API-së së Kubernetes

Në momentin kur u shkrua ky artikull, yaml-language-server ofronte skemat Kubernetes 1.14.0. Nuk gjeta ndonjë mënyrë për të zgjedhur dinamikisht skemën, ndaj hoxha issue përkatës në GitHub. Me fat, pasi serveri i gjuhës është shkruar në typescript, është mjaft e lehtë ta ndryshosh versionin manualisht. Për këtë, mjafton të gjejmë skedarin server.ts.

. Për ta gjetur në makinë tuaj, thjesht hapni skedarin YAML me vim dhe gjeni 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ë i rëndësishëm: pikërisht ai përdoret nga vim gjatë redaktimit të skedarit YAML.

Siç shihet lehtë, 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 atë, 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";

Varësisht nga versioni i përdorur coc-yaml vendndodhja e variablit në kod mund të jetë e ndryshme. Vëreni gjithashtu se kam ndryshuar repositorin nga garethrinstrumenta. Duket se garethr ka kaluar në mbështetje të skemave pikërisht atje.

Për të verifikuar që ndryshimi ka hyrë në fuqi, shikoni nëse shfaqet fusha që më parë [në versionet e kaluara të Kubernetes] nuk ishte. Për shembull, në skemën për K8s 1.14 nuk kishte startupProbe:

Vim me mbështetje për YAML për Kubernetes

Curriculum Vitae

Shpresoj që kjo mundësi t'ju ketë kënaqur po aq sa mua. Gëzuar YAML’ing! Mos harroni të shqyrtoni këto depo për të kuptuar më mirë mjetet e përmendura në artikull:

P.S. nga përkthyesi

Dhe ka edhe vikube, vim-kubernetes dhe vimkubectl.

Lexoni gjithashtu në blogun tonë:

Burimi: habr.com

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster