Vim bi piştgiriya YAML ji bo Kubernetes

Not. werger.: Gotara orîjînal ji hêla Josh Rosso ve, mîmarek li VMware, ku berê li pargîdaniyên wekî CoreOS û Heptio dixebitî, hatî nivîsandin, û di heman demê de hev-nivîskarê Kubernetes alb-ingress-kontroller e. Nivîskar reçeteyek piçûk parve dike ku dikare ji bo endezyarên operasyonên "dibistana kevn" ên ku vim-ê tercîh dikin tewra di serdema xwecihiya ewrê serketî de pir bikêr be.

Vim bi piştgiriya YAML ji bo Kubernetes

Nivîsandina YAML ji bo Kubernetes di vim de diyar dibe? Bi demjimêrên bêhejmar hewl da ku fêhm bikin ku qada paşîn di vê taybetmendiyê de li ku derê be? An jî dibe ku hûn ê bîranînek bilez a cûdahiyê binirxînin args и command? Mizgîniyek baş heye! Girêdana Vim hêsan e yaml-language-serverji bo temamkirina otomatîk, pejirandin û hêsantirên din bistînin. Di vê gotarê de em ê biaxivin ka meriv çawa ji bo vê yekê xerîdarek serverek zimanî saz dike.

(Gotara orîjînal jî vîdyoyek heye, ku nivîskar diaxive û naveroka materyalê nîşan dide.)

Pêşkêşkara ziman

Pêşkêşkerên ziman (pêşkêşkerên ziman) li ser kapasîteyên zimanên bernamekirinê bi edîtor û IDE-yan re bipeyivin, ji bo ku ew bi protokolek taybetî bi hevûdu re têkilî daynin - Protokola Server-a Ziman (LSP). Ev nêzîkatiyek girîng e ji ber ku ew dihêle yek pêkanîn ku di yek carî de daneyan ji gelek edîtor / IDE re peyda bike. Min berê xwe da nivîsand li ser gopls - serverek zimanî ji bo Golang - û çawa dikare tê de were bikar anîn vim. Pêngavên ku di YAML-ê de ji bo Kubernetes-ê oto-temamkirinê bistînin bi vî rengî ne.

Vim bi piştgiriya YAML ji bo Kubernetes

Ji bo ku vim bi awayê diyarkirî bixebite, hûn ê hewce bikin ku xerîdarek serverek ziman saz bikin. Du rêbazên ku ez dizanim ev in LanguageClient-neovim и coc.vim. Di gotarê de ez ê binirxînim coc.vim - Ev pêveka herî populer a vê gavê ye. Hûn dikarin wê bi rêya saz bikin 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'}

Ji bo destpêkirinê coc (û bi vî awayî yaml-language-server) dê node.js sazkirî hewce bike:

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

Dema ku coc.vim mîheng kirin, pêveka serverê saz bikin coc-yaml ji vim:

:CocInstall coc-yaml

Vim bi piştgiriya YAML ji bo Kubernetes

Di dawiyê de, hûn ê bi îhtîmalek mezin bixwazin ku bi veavakirinê dest pê bikin coc-vim, pêşkêş kirin wek nimûne. Bi taybetî, ew tevlihevkirinê çalak dike + cih ji bo temamkirina otomatê bang bikin.

Sazkirina tespîtkirina yaml-ziman-server

ku coc dikare yaml-language-server bikar bîne, pêdivî ye ku jê were xwestin ku dema ku pelên YAML biguherîne schema ji Kubernetes bar bike. Ev bi guherandinê pêk tê coc-config:

:CocConfig

Di veavakirinê de hûn ê hewce bikin ku lê zêde bikin kubernetes ji bo hemî pelan yaml. Ez ji bo serverek zimanek din bikar tînim golangJi ber vê yekê konfigurasyona min a gelemperî wiha xuya dike:

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

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

kubernetes - zeviyek veqetandî ku ji servera ziman re dibêje ku şemaya Kubernetes ji URL-ya ku tê de hatî destnîşan kirin dakêşîne ev berdewam. yaml.schemas dikare were berfireh kirin da ku pilanên din piştgirî bike - ji bo bêtir agahdarî, binêre belgeyên têkildar.

Naha hûn dikarin pelek YAML biafirînin û dest bi karanîna otomatîkê bikin. Rû + cih (an jî kombînasyona din a ku di vim-ê de hatî mîheng kirin) divê qadên berdest û belgeyên li gorî rewşa heyî nîşan bide:

Vim bi piştgiriya YAML ji bo Kubernetes
Li vir dixebite + cih ji ber ku min mîheng kir inoremap <silent><expr> <c-space> coc#refresh(). Ger we ev nekiriye, bibînin coc.nvim README ji bo veavakirina nimûne.

Hilbijartina guhertoya Kubernetes API

Di dema vê nivîsandinê de, yaml-ziman-server bi şemayên Kubernetes 1.14.0 re tê şandin. Min rêyek nedît ku bi rengek dînamîkî şemek hilbijêrin, ji ber vê yekê min vekir pirsgirêka GitHub têkildar. Xweşbextane, ji ber ku servera ziman bi tîpek nivîsandî tê nivîsandin, guheztina guhertoyê bi destan pir hêsan e. Ji bo vê yekê, tenê pelê bibînin server.ts.

Ji bo ku wê li ser makîneya xwe kifş bikin, bi tenê pelê YAML bi vim vekin û pêvajo bi wan re bibînin 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êvajoya têkildar ji bo me pêvajoya 2380 e: ew e ku vim dema ku pelek YAML biguherîne bikar tîne.

Wekî ku hûn dikarin bi hêsanî bibînin, pel di nav de ye /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Tenê bi guhertina nirxê wê biguherînin KUBERNETES_SCHEMA_URL, wek nimûne, ji bo guhertoya 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";

Li gorî guhertoya ku tê bikar anîn coc-yaml Cihê guherbarê di kodê de dibe ku cûda bibe. Ji kerema xwe jî bala xwe bidin ku min depo ji guhert garethr li ser instrumenta. Wisa xuya dike garethr li wir veguherî dorhêlên piştgiriyê.

Ji bo kontrol bikin ka guhertin bandor bûye, bibînin ka qadek xuya dike ku berê li wir nebû [di guhertoyên berê yên Kubernetes de]. Mînakî, di diagrama K8s 1.14 de tune bû startupProbe:

Vim bi piştgiriya YAML ji bo Kubernetes

Nîqaş

Hêvîdarim ku ev fersenda we jî bi qasî min kêfxweş bike. YAMLing pîroz be! Bê guman van depoyan binihêrin da ku karûbarên ku di gotarê de têne destnîşan kirin çêtir fam bikin:

PS ji wergêr

Û heye jî vikube, vim-kubernetes и vimkubectl.

Li ser bloga me jî bixwînin:

Source: www.habr.com

Add a comment