Vim gyda chefnogaeth YAML i Kubernetes

Nodyn. traws.: Ysgrifennwyd yr erthygl wreiddiol gan Josh Rosso, pensaer yn VMware a fu'n gweithio o'r blaen i gwmnïau fel CoreOS a Heptio, ac mae hefyd yn gyd-awdur i'r Kubernetes alb-ingress-controller. Mae'r awdur yn rhannu rysáit fach a all fod yn ddefnyddiol iawn i beirianwyr gweithrediadau “hen ysgol” y mae'n well ganddynt vim hyd yn oed yn oes y brodor cwmwl buddugol.

Vim gyda chefnogaeth YAML i Kubernetes

Ysgrifennu maniffestau YAML ar gyfer Kubernetes yn vim? Wedi treulio oriau di-ri yn ceisio darganfod ble ddylai'r maes nesaf fod yn y fanyleb hon? Neu efallai y byddwch yn gwerthfawrogi nodyn atgoffa cyflym o'r gwahaniaeth args и command? Mae yna newyddion da! Mae Vim yn hawdd cysylltu ag ef yaml-iaith-weinyddi gael cwblhau awtomatig, dilysu a chyfleusterau eraill. Yn yr erthygl hon byddwn yn siarad am sut i sefydlu cleient gweinydd iaith ar gyfer hyn.

(Yr erthygl wreiddiol hefyd a oes fideo, lle mae’r awdur yn siarad ac yn arddangos cynnwys y deunydd.)

Gweinydd iaith

Gweinyddion iaith (gweinyddion iaith) siarad am alluoedd ieithoedd rhaglennu i olygyddion a DRhA, y maent yn rhyngweithio â'i gilydd ar eu cyfer gan ddefnyddio protocol arbennig - Protocol Gweinydd Iaith (LSP). Mae hwn yn ddull gwych oherwydd ei fod yn caniatáu i un gweithrediad ddarparu data i lawer o olygyddion/IDEs ar unwaith. Rwyf eisoes wedi ysgrifennodd про gopls - gweinydd iaith ar gyfer Golang - a sut y gellir ei ddefnyddio yn vim. Mae'r camau i gael awtolenwi yn YAML ar gyfer Kubernetes yn debyg.

Vim gyda chefnogaeth YAML i Kubernetes

Er mwyn i vim weithio yn y ffordd a ddisgrifir, bydd angen i chi osod cleient gweinydd iaith. Y ddau ddull yr wyf yn gwybod amdanynt yw IaithClient-novim и coc.vim. Yn yr erthygl byddaf yn ystyried coc.vim - Dyma'r ategyn mwyaf poblogaidd ar hyn o bryd. Gallwch ei osod trwy vim-plwg:

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

I ddechrau coc (ac felly bydd angen gosod nod.js ar y gweinydd yaml-language-):

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

Pan fydd coc.vim wedi'i ffurfweddu, gosodwch estyniad y gweinydd coc-yaml gan vim:

:CocInstall coc-yaml

Vim gyda chefnogaeth YAML i Kubernetes

Yn olaf, mae'n debyg y byddwch am ddechrau gyda'r ffurfweddiad coc-vim, cyflwyno fel enghraifft. Yn benodol, mae'n actifadu'r cyfuniad +gofod i alw awtolenwi.

Sefydlu canfod yaml-language-server

Bod coc defnyddio yaml-language-server, mae angen gofyn iddo lwytho'r sgema o Kubernetes wrth olygu ffeiliau YAML. Gwneir hyn trwy olygu coc-config:

:CocConfig

Yn y ffurfweddiad bydd angen i chi ychwanegu kubernetes ar gyfer pob ffeil yaml. Rwyf hefyd yn defnyddio gweinydd iaith ar gyfer golangfelly mae fy nghyfluniad cyffredinol yn edrych fel hyn:

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

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

kubernetes — maes neilltuedig sy'n dweud wrth y gweinydd iaith i lawrlwytho sgema Kubernetes o'r URL a ddiffinnir yn cyson hwn. yaml.schemas gellir ei ehangu i gefnogi cynlluniau ychwanegol - am ragor o fanylion, gw dogfennaeth berthnasol.

Nawr gallwch chi greu ffeil YAML a dechrau defnyddio awtolenwi. Gwasgu +gofod (neu gyfuniad arall wedi’i ffurfweddu yn vim) ddangos y meysydd sydd ar gael a’r dogfennau yn ôl y cyd-destun presennol:

Vim gyda chefnogaeth YAML i Kubernetes
Yn gweithio yma +gofod oherwydd fy mod wedi ffurfweddu inoremap <silent><expr> <c-space> coc#refresh(). Os nad ydych wedi gwneud hyn, gweler coc.nvim README am ffurfweddiad enghreifftiol.

Dewis y fersiwn Kubernetes API

O'r ysgrifen hon, mae gweinydd yaml-iaith yn llongio gyda sgemâu Kubernetes 1.14.0. Wnes i ddim dod o hyd i ffordd i ddewis sgema yn ddeinamig, felly agorais mater GitHub cyfatebol. Yn ffodus, gan fod y gweinydd iaith wedi'i ysgrifennu mewn teipysgrif, mae'n eithaf hawdd newid y fersiwn â llaw. I wneud hyn, dim ond dod o hyd i'r ffeil server.ts.

Er mwyn ei ganfod ar eich peiriant, agorwch y ffeil YAML gyda vim a dewch o hyd i'r broses gyda 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

Y broses berthnasol i ni yw proses 2380: dyma mae vim yn ei ddefnyddio wrth olygu ffeil YAML.

Fel y gallwch weld yn hawdd, mae'r ffeil wedi'i lleoli yn /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Dim ond ei olygu trwy newid y gwerth KUBERNETES_SCHEMA_URL, er enghraifft, ar gyfer fersiwn 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";

Yn dibynnu ar y fersiwn a ddefnyddir coc-yaml Gall lleoliad y newidyn yn y cod amrywio. Sylwch hefyd i mi newid yr ystorfa o garethr ar instrumenta. Mae'n ymddangos bod garethr newid i gylchedau ategol yno.

I wirio bod y newid wedi dod i rym, gwelwch a yw maes yn ymddangos nad oedd yno o'r blaen [mewn fersiynau blaenorol o Kubernetes]. Er enghraifft, nid oedd dim yn y diagram ar gyfer K8s 1.14 cychwynProbe:

Vim gyda chefnogaeth YAML i Kubernetes

Crynodeb

Rwy'n gobeithio y bydd y cyfle hwn yn eich plesio cymaint ag y gwnaeth i mi. YAMLing hapus! Gwnewch yn siŵr eich bod yn edrych ar yr ystorfeydd hyn i ddeall yn well y cyfleustodau a grybwyllir yn yr erthygl:

PS gan y cyfieithydd

Ac mae hefyd vikube, vim-kubernetes и vimkubectl.

Darllenwch hefyd ar ein blog:

Ffynhonnell: hab.com

Ychwanegu sylw