Megjegyzés fordítás.: az eredeti cikket Josh Rosso írta — egy VMware építész, aki korábban olyan vállalatoknál dolgozott, mint a CoreOS és Heptio, és a Kubernetes alb-ingress-controller társszerzője. Az író megoszt egy rövid receptet, amely nagyon hasznos lehet a "régi iskola" üzemeltetési mérnökei számára, akik még mindig a vim-et választják a felhő natív korszakban.

YAML-manifesztumokat írsz Kuberneteshez a vim-ben? Végtelen órákat töltöttél azzal, hogy megértsd, hol kell lennie a következő mezőnek a specifikációban? Vagy esetleg örülnél egy gyors emlékeztetőnek a különbségről? args és command? Есть хорошие новости! Vim легко привязать к , hogy automatikus kiegészítést, érvényesítést és egyéb kényelmi funkciókat kapj. A cikkben megvitatjuk, hogyan állítható be a nyelvi szerver kliens ehhez.
(Az eredeti cikkhez egy , ahol az író mesél és bemutatja a tartalmat.)
Nyelvi szerver
Nyelvi szerverek (language servers) információt nyújtanak a programozási nyelvek lehetőségeiről a szerkesztőknek és IDE-knek, ezért egy speciális protokollon kommunikálnak egymással — (LSP). Ez egy nagyszerű megközelítés: lehetővé teszi, hogy egy megvalósítás azonnal számos szerkesztőt/IDE-t támogasson. Már írtam a — a Golang nyelvi szerver — és arról, hogyan használhatod a A YAML automatikus kiegészítésének aktiválása Kuberneteshez hasonló lépésekből áll.

Ahhoz, hogy a vim a leírt módon működjön, telepítened kell a nyelvi szerver kliensét. Két ismert módja van: a és A cikkben azt fogom vizsgálni coc.vim. — ez a pillanatnyilag legnépszerűbb plugin. Telepítheted a :
" Használj stabil kiadást (Ajánlott)
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" Vagy építsd forráskódból yarn használatával: https://yarnpkg.com
Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'} A coc (és így a yaml-language-server) indításához telepített node.js-re lesz szükséged:
curl -sL install-node.now.sh/lts | bash Amikor coc.vim. be van állítva, telepítsd a server kiterjesztést coc-yaml a vim-ből:
:CocInstall coc-yaml 
Végül valószínűleg szeretnéd elkezdeni a konfigurációval coc-vim, melyet . Különösen aktiválja a kombinációt +space az automatikus kiegészítések előhívásához.
A yaml-language-server észlelési beállítása
Ahhoz, hogy coc a yaml-language-server kérése, hogy a Kubernetes sémát töltse be YAML-fájlok szerkesztésekor. Ezt az alábbiak szerkesztésével végezheted el. coc-config:
:CocConfig A konfigurációba hozzá kell adni kubernetes minden fájlhoz yaml. Továbbá használok egy nyelvi szervert a golang-hoz,így a teljes konfigurációm így néz ki:
{
"languageserver": {
"golang": {
"command": "gopls",
"rootPatterns": ["go.mod"],
"filetypes": ["go"]
}
},
"yaml.schemas": {
"kubernetes": "/*.yaml"
}
} kubernetes — egy fenntartott mező, amely értesíti a nyelvi szervert a Kubernetes séma URL-jének betöltéséről, amely ebben . yaml.schemas további sémák támogatásával bővíthető — további részletekért lásd .
Most létrehozhat egy YAML fájlt, és elkezdheti használni az automatikus kiegészítést. A megnyomás +space (vagy más kombináció, amit a vim-ben beállítottál) meg kell, hogy mutassa a rendelkezésre álló mezőket és a dokumentációt a jelenlegi kontextus szerint:

Itt működik +space, mert beállítottam a inoremap coc#refresh(). Ha ezt még nem tetted meg — lásd egy példa konfigurációhoz.
Kubernetes API verzió kiválasztása
A cikk írásakor a yaml-language-server a Kubernetes 1.14.0 sémákkal érkezik. Nem találtam módot a séma dinamikus kiválasztására, ezért megnyitottam Szerencsére, mivel a nyelvi szerver typescript-ben készült, elég könnyen manuálisan változtathatod a verziót. Ehhez csak meg kell találni a fájlt server.ts.
A gépeden való észleléshez nyisd meg a YAML fájlt vim-ben, és keress egy folyamatot a következő paranccsal: 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-serverSzámunkra a 2380-as folyamat releváns: ezt használja a vim YAML fájl szerkesztésekor.
Ahogy könnyen látható, a fájl itt található: /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Csak szerkeszteni kell, megváltoztatva az értékét KUBERNETES_SCHEMA_URL, például a 1.17.0 verzióra:
// 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"; A használt verziótól függően coc-yaml a változó elhelyezkedése a kódban eltérhet. Kérlek vedd észre, hogy a tárolót is megváltoztattam garethr Gyorsan emlékezzünk vissza, hogyan működik a moduláris aritmetika. Az óra már egy ismert koncepció. Az órák használata instrumenta.Úgy tűnik, hogy garethr itt váltottak a sémák támogatására.
A változtatás érvényességének ellenőrzéséhez nézd meg, hogy megjelenik-e a mező, ami korábban [korábbi Kubernetes verziókban] nem volt. Például a K8s 1.14 séma nem tartalmazott :

Összefoglaló
Remélem, hogy ez a lehetőség annyira örömet okozott önnek, mint nekem. Boldog YAML használatot! Ne felejtse el megtekinteni ezeket a tárolókat, hogy jobban megismerje a cikkben említett eszközöket:
- coc-vim: ;
- coc-yaml: .
Fejlesztési eszközök, amelyek Kubernetesben futnak
És van még , és .
Olvasson további információkat a blogunkban:
- «»;
- «».
Forrás: habr.com
