YAML-tugi Vim Kubernetes jaoks

Märkus tõlke kohta.: algse artikli autor on Josh Rosso — VMware'i arhitekt, kes on varem töötanud sellistes ettevõtetes nagu CoreOS ja Heptio, samuti on ta Kubernetes alb-ingress-controller'i kaasautor. Autor jagab väikest retsepti, mis võib olla väga kasulik „vana kooli“ operatsioonitehnika inseneridele, kes eelistavad vim-i isegi pilvepõhises ajastus.

YAML-tugi Vim Kubernetes jaoks

Kas kirjutate YAML-manifestide jaoks Kuberneteses vim-is? Olete veetnud lugematuid tunde, püüdes aru saada, kus selles spetsifikatsioonis peaks olema järgmine väli? Võib-olla olete õnnelik kiire meenutuse üle erinevuse kohta. args ja käsk? Есть хорошие новости! Vim легко привязать к yaml-language-server, et saada automaatset täiendamist, valideerimist ja muid mugavusi. Artiklis räägime sellest, kuidas seadistada keele serveri klienti selle jaoks.

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

Keele server

Keele serverid (language servers) annavad programmeerimiskeelte võimed redaktoritele ja IDE-dele, mille jaoks nad suhtlevad omavahel spetsiaalse protokolli kaudu — Language Server Protocol (LSP). See on suurepärane lähenemine: see võimaldab ühel teostusel andmeid kohe mitmele redaktorile/IDE-le. Ma olen juba kirjutatud kohta gopls — keele server Golangile — ja kuidas seda saab kasutada vim-is.Tegevused automaatse täiendamise saamiseks YAML-i jaoks Kuberneteses on sarnased.

YAML-tugi Vim Kubernetes jaoks

Et vim töötaks kirjeldatud viisil, on vaja installida keele serveri klient. Kaks tuntud meetodit, mida ma tean, on LanguageClient-neovim ja coc.vim.Artiklis vaatan üle coc.vim. — see on praegu kõige populaarsem plugin. Seda saab installida läbi vim-plugi.:

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

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

Käivitamiseks coc (ja seega yaml-language-server'i) on vajalik, et oleksite installinud node.js:

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

Kui coc.vim. on seadistatud, installige serveri laiendus coc-yaml vim-ist:

:CocInstall coc-yaml

YAML-tugi Vim Kubernetes jaoks

Lõpuks soovite tõenäoliselt alustada konfigureerimisega coc-vim, mis esitatakse näitena.Eelkõige aktiveerib see kombinatsiooni +space automaatse täiendamise kutsumiseks.

yaml-language-server'i avastamise seadistamine.

Et coc sa saad kasutada yaml-language-serveri, paluge tal laadida kava Kuberneteselt YAML-failide redigeerimise ajal. See toimub redigeerimise teel coc-config:

:CocConfig

Konfiguratsioonis tuleb lisada kubernetes kõigi failide jaoks yaml. Kasutan lisaks keele serverit golang, seega näeb minu üldine konfiguratsioon välja selline:

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

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

kubernetes — reserveeritud väli, mis informeerib keeleserverit vajadusest laadida Kubernetes'i kava URL-ilt, mis on määratletud selles konستانtis. yaml.schemas saab laiendada teiste kavadena — lisainfot leiate vastavast dokumentatsioonist.

Nüüd saab luua YAML-faili ja alustada autokomplektiga. Vajutamine +space (või mõni muu kombinatsioon, mis on vim'is seadistatud) peaks näitama saadaval olevaid välju ja dokumentatsiooni vastavalt praegusele kontekstile:

YAML-tugi Vim Kubernetes jaoks
Siin töötab +tühik, kuna ma seadistasin inoremap coc#refresh(). Kui te ei ole seda teinud — vaadake coc.nvim README konfiguratsiooni näite jaoks.

Kubernetes API versiooni valimine

Käesoleva artikli kirjutamise hetkel tarnitakse yaml-language-server koos Kubernetes'e 1.14.0 kavadaga. Ma ei leidnud viisi kava dünaamiliseks valimiseks, seega avasin vastava GitHub'i küsimuse. Õnneks, kuna keele server on kirjutatud TypeScriptis, on üsna lihtne versiooni käsitsi muuta. Selleks on lihtsalt vaja leida fail server.ts.

Selle leidmiseks oma masinas avage lihtsalt YAML-fail vim'iga ja otsige protsessi, kus 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

Meile on oluline protsess 2380: ainult seda kasutab vim YAML-faili redigeerimise ajal.

Kergesti näha, et fail asub /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Piisab, kui redigeerite seda, muutes väärtust 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 versioonist võib koodis olev muutuja asukoht olla erinev. Pange tähele, et muutsin ka hoidlat coc-yaml garethr instrumenta . Tundub, et on liikunud just seal skeemide toe juurde.. instrumenta on hakanud skeemide toetust just seal muutma.

Kuna kontrollida, et muudatus on jõustunud, vaadake, kas ilmub väli, mida varem [Kubernetes varasemates versioonides] ei olnud. Näiteks K8s 1.14 skeemis ei olnud. startupProbe:

YAML-tugi Vim Kubernetes jaoks

Elulookirjeldus

Loodan, et selline võimalus rõõmustas teid mitte vähem kui mind. Head YAML’imist! Ärge unustage tutvuda nende hoidlate kogumitega, et paremini aru saada artiklis mainitud tööriistadest:

P.S. tõlkijalt

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

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster