Vim me mbështetjen YAML për Kubernetes

Shënim. përkth.: Artikulli origjinal është shkruar nga Josh Rosso, një arkitekt në VMware i cili më parë ka punuar në kompani të tilla si CoreOS dhe Heptio, dhe është gjithashtu bashkëautor i kontrolluesit të Kubernetes alb-ingress. Autori ndan një recetë të vogël që mund të jetë shumë e dobishme për inxhinierët e operacioneve të "shkollës së vjetër" që preferojnë vim edhe në epokën e vendasve të reve fitimtare.

Vim me mbështetjen YAML për Kubernetes

Shkrimi i manifesteve YAML për Kubernetes në vim? Keni shpenzuar orë të panumërta duke u përpjekur të kuptoni se ku duhet të jetë fusha tjetër në këtë specifikim? Ose ndoshta do të vlerësoni një kujtesë të shpejtë të ndryshimit args и command? Ka një lajm të mirë! Lidhja me Vim është e lehtë yaml-gjuhë-serverpër të marrë përfundimin automatik, vërtetimin dhe lehtësi të tjera. Në këtë artikull do të flasim se si të konfiguroni një klient të serverit të gjuhës për këtë.

(Artikulli origjinal gjithashtu a ka video, ku autori flet dhe demonstron përmbajtjen e materialit.)

Serveri i gjuhës

Serverët e gjuhës (serverët e gjuhës) flisni për aftësitë e gjuhëve të programimit për redaktorët dhe IDE-të, për të cilat ata ndërveprojnë me njëri-tjetrin duke përdorur një protokoll të veçantë - Protokolli i serverit të gjuhës (LSP). Kjo është një qasje e shkëlqyeshme sepse lejon që një zbatim të sigurojë të dhëna për shumë redaktorë/IDE në të njëjtën kohë. Unë tashmë kam kam shkruar për gopls - një server gjuhe për Golang - dhe si mund të përdoret në vrull. Hapat për të marrë plotësimin automatik në YAML për Kubernetes janë të ngjashëm.

Vim me mbështetjen YAML për Kubernetes

Në mënyrë që vim të funksionojë në mënyrën e përshkruar, do t'ju duhet të instaloni një klient të serverit të gjuhës. Dy metodat që unë njoh janë GjuhaKlient-neovim и coc.vim. Në artikullin që do të shqyrtoj coc.vim - Kjo është shtojca më e njohur për momentin. Mund ta instaloni nëpërmjet vim-prizë:

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

Për fillim coc (dhe kështu serveri yaml-language) do të kërkojë të instaluar node.js:

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

Kur coc.vim konfiguruar, instaloni shtesën e serverit coc-yaml nga vim:

:CocInstall coc-yaml

Vim me mbështetjen YAML për Kubernetes

Më në fund, me shumë mundësi do të dëshironi të filloni me konfigurimin coc-vim, paraqitur si nje shembull. Në veçanti, ai aktivizon kombinimin +hapësirë për të thirrur plotësimin automatik.

Konfigurimi i zbulimit të serverit të gjuhës yaml

coc mund të përdorë serverin yaml-language, duhet t'i kërkohet të ngarkojë skemën nga Kubernetes kur redakton skedarët YAML. Kjo bëhet me redaktim coc-config:

:CocConfig

Në konfigurim do t'ju duhet të shtoni kubernetes për të gjithë skedarët yaml. Unë përdor gjithashtu një server gjuhësor për golangkështu që konfigurimi im i përgjithshëm duket si ky:

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

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

kubernetes — një fushë e rezervuar që i thotë serverit të gjuhës të shkarkojë skemën Kubernetes nga URL-ja e përcaktuar në kjo konstante. yaml.schemas mund të zgjerohet për të mbështetur skema shtesë - për më shumë detaje, shih dokumentacionin përkatës.

Tani mund të krijoni një skedar YAML dhe të filloni të përdorni plotësimin automatik. Shtypja +hapësirë (ose kombinim tjetër i konfiguruar në vim) duhet të tregojë fushat dhe dokumentacionin në dispozicion sipas kontekstit aktual:

Vim me mbështetjen YAML për Kubernetes
Punon këtu +space sepse e konfigurova inoremap <silent><expr> <c-space> coc#refresh(). Nëse nuk e keni bërë këtë, shikoni coc.nvim README për një shembull konfigurimi.

Zgjedhja e versionit të Kubernetes API

Që nga momenti i shkrimit, serveri i gjuhës yaml dërgohet me skemat Kubernetes 1.14.0. Nuk gjeta një mënyrë për të zgjedhur në mënyrë dinamike një skemë, kështu që e hapa problemin përkatës të GitHub. Për fat të mirë, meqenëse serveri i gjuhës është i shkruar me shkrim, është mjaft e lehtë të ndryshosh manualisht versionin. Për ta bërë këtë, thjesht gjeni skedarin server.ts.

Për ta zbuluar atë në kompjuterin tuaj, thjesht hapni skedarin YAML me vim dhe gjeni procesin me të 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

Procesi përkatës për ne është procesi 2380: është ajo që përdor vim kur redakton një skedar YAML.

Siç mund ta shihni lehtësisht, skedari ndodhet në /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Thjesht modifikojeni duke ndryshuar vlerën KUBERNETES_SCHEMA_URL, për shembull, për 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ë përdorur coc-yaml Vendndodhja e ndryshores në kod mund të ndryshojë. Ju lutemi vini re gjithashtu se kam ndryshuar depon nga garethr mbi instrumenta. Duket se garethr kaloi në qarqet mbështetëse atje.

Për të kontrolluar nëse ndryshimi ka hyrë në fuqi, shikoni nëse shfaqet një fushë që nuk ishte aty më parë [në versionet e mëparshme të Kubernetes]. Për shembull, në diagramin për K8s 1.14 nuk kishte startupProbe:

Vim me mbështetjen YAML për Kubernetes

Përmbledhje

Shpresoj që kjo mundësi t'ju kënaqë po aq sa edhe mua. Gëzuar YAMLing! Sigurohuni që të shikoni këto depo për të kuptuar më mirë shërbimet e përmendura në artikull:

PS nga përkthyesi

Dhe ka gjithashtu vikube, vim-kubernetes и vimkubectl.

Lexoni edhe në blogun tonë:

Burimi: www.habr.com

Bleni një host të besueshëm për faqet me mbrojtje DDoS, serverë VPS VDS 🔥 Bleni hosting të besueshëm të faqeve të internetit me mbrojtje DDoS, servera VPS VDS | ProHoster