Vim s podporo YAML za Kubernetes

Opomba. prevod: izvirni članek je napisal Josh Rosso, arhitekt pri VMware, ki je prej delal v podjetjih, kot sta CoreOS in Heptio, in je tudi soavtor Kubernetes alb-ingress-controller. Avtor deli majhen recept, ki je lahko zelo koristen za operativne inženirje »stare šole«, ki imajo raje vim tudi v dobi zmagovitega domorodca v oblaku.

Vim s podporo YAML za Kubernetes

Pisanje manifestov YAML za Kubernetes v vim? Ste porabili nešteto ur, ko ste poskušali ugotoviti, kje naj bo naslednje polje v tej specifikaciji? Ali pa boste morda cenili hiter opomnik na razliko args и command? Dobra novica je! Vim se enostavno poveže yaml-jezikovni-strežnikza samodejno dokončanje, potrjevanje in druge ugodnosti. V tem članku bomo govorili o tem, kako za to nastaviti odjemalca jezikovnega strežnika.

(Tudi izvirni članek ali obstaja video, kjer avtor govori in prikazuje vsebino gradiva.)

Jezikovni strežnik

Jezikovni strežniki (jezikovni strežniki) govoriti o zmožnostih programskih jezikov urejevalnikom in IDE-jem, za katere med seboj komunicirajo s posebnim protokolom - Protokol strežnika jezika (LSP). To je odličen pristop, saj omogoča, da ena implementacija hkrati zagotovi podatke več urejevalnikom/IDE-jem. Imam že napisal sem o gopls - jezikovni strežnik za Golang - in kako ga je mogoče uporabiti v vim. Koraki za pridobitev samodokončanja v YAML za Kubernetes so podobni.

Vim s podporo YAML za Kubernetes

Da bi vim deloval na opisan način, boste morali namestiti odjemalca jezikovnega strežnika. Dve metodi, ki ju poznam, sta LanguageClient-neovim и coc.vim. V članku bom razmislil coc.vim - To je trenutno najbolj priljubljen vtičnik. Namestite ga lahko prek 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'}

Za začetek coc (in s tem yaml-language-server) bo zahteval nameščen node.js:

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

Pri coc.vim konfiguriran, namestite razširitev strežnika coc-yaml iz vima:

:CocInstall coc-yaml

Vim s podporo YAML za Kubernetes

Končno boste najverjetneje želeli začeti s konfiguracijo coc-vim, predstavljeno kot primer. Zlasti aktivira kombinacijo + presledek za klic samodokončanja.

Nastavitev zaznavanja yaml-language-server

To coc lahko uporablja yaml-language-server, ga je treba pri urejanju datotek YAML vprašati, naj naloži shemo iz Kubernetesa. To se naredi z urejanjem coc-config:

:CocConfig

V konfiguraciji boste morali dodati kubernetes za vse datoteke yaml. Dodatno uporabljam jezikovni strežnik za golangtorej moja splošna konfiguracija izgleda takole:

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

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

kubernetes — rezervirano polje, ki jezikovnemu strežniku sporoči, naj prenese shemo Kubernetes iz URL-ja, definiranega v ta konstanta. yaml.schemas se lahko razširi za podporo dodatnim shemam - za več podrobnosti glejte ustrezno dokumentacijo.

Zdaj lahko ustvarite datoteko YAML in začnete uporabljati samodejno dokončanje. Stiskanje + presledek (ali druga kombinacija, konfigurirana v vimu), mora prikazati razpoložljiva polja in dokumentacijo glede na trenutni kontekst:

Vim s podporo YAML za Kubernetes
Deluje tukaj +space ker sem konfiguriral inoremap <silent><expr> <c-space> coc#refresh(). Če tega še niste storili, glejte coc.nvim PREBERI ME za primer konfiguracije.

Izbira različice Kubernetes API

Od tega pisanja je strežnik yaml-language-server dobavljen s shemami Kubernetes 1.14.0. Nisem našel načina za dinamično izbiro sheme, zato sem odprl ustrezna težava GitHub. Ker je jezikovni strežnik napisan v tipkopisu, je na srečo zelo enostavno ročno spremeniti različico. Če želite to narediti, poiščite datoteko server.ts.

Če ga želite zaznati na vašem računalniku, preprosto odprite datoteko YAML z vim in poiščite postopek z 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

Ustrezen proces za nas je proces 2380: to je tisto, kar vim uporablja pri urejanju datoteke YAML.

Kot lahko vidite, se datoteka nahaja v /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Samo uredite ga tako, da spremenite vrednost KUBERNETES_SCHEMA_URL, na primer za različico 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";

Odvisno od uporabljene različice coc-yaml Lokacija spremenljivke v kodi se lahko razlikuje. Upoštevajte tudi, da sem spremenil repozitorij iz garethr o instrumenta. Zdi se, da garethr tam preklopil na podporna vezja.

Če želite preveriti, ali je sprememba začela veljati, poglejte, ali se prikaže polje, ki ga prej ni bilo [v prejšnjih različicah Kubernetesa]. Na primer, v diagramu za K8s 1.14 ni bilo št startupProbe:

Vim s podporo YAML za Kubernetes

Povzetek

Upam, da vam bo ta priložnost všeč tako kot meni. Srečno YAMLing! Ne pozabite preveriti teh repozitorijev, da boste bolje razumeli pripomočke, omenjene v članku:

PS od prevajalca

In obstaja tudi vikube, vim-kubernetes и vimkubectl.

Preberite tudi na našem blogu:

Vir: www.habr.com

Dodaj komentar