YAML támogatással rendelkező Vim Kuberneteshez

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 támogatással rendelkező Vim Kuberneteshez

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 легко привязать к yaml-language-server, 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 videó is tartozik, 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 — Language Server Protocol (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 erről a gopls — a Golang nyelvi szerver — és arról, hogyan használhatod a vim-ben.A YAML automatikus kiegészítésének aktiválása Kuberneteshez hasonló lépésekből áll.

YAML támogatással rendelkező Vim Kuberneteshez

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 LanguageClient-neovim és coc.vim.A cikkben azt fogom vizsgálni coc.vim. — ez a pillanatnyilag legnépszerűbb plugin. Telepítheted a vim-plug segítségével.:

" 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

YAML támogatással rendelkező Vim Kuberneteshez

Végül valószínűleg szeretnéd elkezdeni a konfigurációval coc-vim, melyet példaként mutatunk be. 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 az állandóban van. yaml.schemas további sémák támogatásával bővíthető — további részletekért lásd a megfelelő dokumentációban.

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:

YAML támogatással rendelkező Vim Kuberneteshez
Itt működik +space, mert beállítottam a inoremap coc#refresh(). Ha ezt még nem tetted meg — lásd coc.nvim README 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 a megfelelő GitHub problémát.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-server

Szá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 startupProbe:

YAML támogatással rendelkező Vim Kuberneteshez

Ö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:

Fejlesztési eszközök, amelyek Kubernetesben futnak

És van még vikube, vim-kubernetes és vimkubectl.

Olvasson további információkat a blogunkban:

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster