YAML-toega Vim Kubernetes jaoks

Märk. tõlge.: originaali kirjutas Josh Rosso — VMware'i arhitekt, kes on varem töötanud ettevõtetes nagu CoreOS ja Heptio, ning on ka Kubernetes alb-ingress-controlleri kaasautor. Autor jagab väikest retsepti, mis võib osutuda väga kasulikuks 'vana kooli' süsteemiadministraatoritele, kes eelistavad vim'i isegi cloud native'i ajastul.

YAML-toega Vim Kubernetes jaoks

Kas kirjutate Kubernetes'e YAML-manifeste vim'is? Olete veetnud lugematuid tunde, püüdes mõista, kuhu peaks see spetsifikatsioonis järgmine väli minema? Võib-olla oleks teile meeltmööda kiire meenutus erinevuste kohta args ja command? Есть хорошие новости! Vim легко привязать к yaml-language-server, et saada automaatset täiendamist, valideerimist ja muid mugavusi. Artiklis arutame, kuidas selle jaoks keeltserveri klient seadistada.

(Algse artikli juures on ka video, kus autor räägib ja demonstreerib materjali sisu.)

Keeltserver

Keeltserverid (language servers) räägivad programmeerimiskeelte võimalustest redaktoritele ja IDE-dele, millega nad suhtlevad spetsiaalse protokolli kaudu — Language Server Protocol (LSP). See on suurepärane lähenemine: see võimaldab ühel teostusel andmeid pakkuda mitmele redaktorile/IDE-le. Mina olen juba kirjutas rääkinud gopls — Go keele server — ja kuidas seda saab kasutada vim. YAML automaatse täitmise saamiseks Kuberneteses on toimingud sarnased.

YAML-toega Vim Kubernetes jaoks

Et vim töötaks kirjeldatud viisil, tuleb installida keeleserveri klient. Kaks mulle teadaolevat meetodit on LanguageClient-neovim ja coc.vim. Artiklis käsitlen coc.vim — see on praegu kõige populaarsem plugin. Selle saab installida läbi vim-plug:

" Kasuta väljaandmise haru (Soovitatav)
Plug 'neoclide/coc.nvim', {'branch': 'release'}

" Või ehita allikakoodist yarni abil: https://yarnpkg.com
Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'}

Käivitamiseks coc (ja seega yaml-language-serveri serveri) on vajalik, et oleks installitud node.js:

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

Kui coc.vim Kui see on seadistatud, installige serverilaiendus coc-yaml vim’ist:

:CocInstall coc-yaml

YAML-toega Vim Kubernetes jaoks

Lõpuks soovite tõenäoliselt alustada coc-vimkonfiguratsiooniga, mis on esitatud näitena. Eelkõige aktiveerib see kombinatsiooni +tühik autotäidete kutsumiseks.

yaml-language-serveri tuvastamise seadistamine

Et coc sa võid kasutada yaml-language-server'i, seda tuleb taotleda, et laadida Kubernetes'i skeem YAML-failide redigeerimisel. See toimub redigeerimise teel. coc-config:

:CocConfig

Konfiguratsioonis tuleb lisada kubernetes kõikidele failidele yaml. Ma kasutan ka keele serverit golang, seega näeb mu üldine konfiguratsioon välja selline:

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

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

kubernetes — reservitud väli, mis teavitab keele serverit vajadusest laadida Kubernetes'i skeem URL-ilt, mis on määratud selles konstandis. yaml.schemas võib laiendada täiendavate skeemide toe lisamisega — lisainfot leiate vastavast dokumentatsioonist.

Nüüd saab luua YAML-faili ja hakata kasutama autokomplekteerimist. Klahvi vajutamine +tühik (või mõne muu kombinatsiooni, mis on seadistatud vim'is) peaks näitama praegusele kontekstile vastavaid saadaolevaid välju ja dokumentatsiooni:

YAML-toega Vim Kubernetes jaoks
Siin töötab +tühik, sest olen seadistanud inoremap coc#refresh(). Kui te seda ei teinud — vaadake coc.nvim README konfiguratsiooni näite jaoks.

Kubernetes API versiooni valimine

Käesoleva artikli kirjutamise ajal tarnib yaml-language-server Kubernetes 1.14.0 skeemid. Ma ei leidnud viisi skeemi dünaamiliseks valimiseks, seega avasin vastava GitHub'i probleemi. Õnneks, kuna keeleserver on kirjutatud typescriptis, on versiooni käsitsi muutmine üsna lihtne. Selleks tuleb lihtsalt leida fail server.ts.

Selle leidmiseks oma masinas avage YAML-fail vimiga ja otsige protsessi, millel on 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

Meie jaoks on oluline protsess 2380: just seda kasutab vim YAML-faili redigeerimisel.

Kuidas näha, on fail asukoht /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Piisab selle redigeerimisest, muutes väärtuse KUBERNETES_SCHEMA_URL, näiteks versiooniks 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";

Sõltuvalt kasutatavast coc-yaml muutuja asukoht koodis võib erineda. Pange tähele, et olen samuti muutnud repository't garethr järgnevaga instrumenta. Tundub, et garethr on seal üle läinud skeemide toetamisse.

Kontrollige, kas muudatus on kehtestatud, vaadates, kas ilmub välja, mida varem [Kubernetes'i varasemates versioonides] ei olnud. Näiteks K8s 1.14 skeemis ei olnud startupProbe:

YAML-toega Vim Kubernetes jaoks

Kokkuvõte

Loodan, et see võimalus rõõmustas teid mitte vähem kui mind. Head YAML'i kirjutamist! Ära unusta tutvuda nende hoidlate ja tööriistadega, millest artiklis räägiti:

P.S. tõlkija märkused

Ja veel on olemas vikube, vim-kubernetes ja vimkubectl.

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster