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