Vim YAML támogatással a Kuberneteshez

Jegyzet. ford.: Az eredeti cikket Josh Rosso, a VMware építésze írta, aki korábban olyan cégeknél dolgozott, mint a CoreOS és a Heptio, és a Kubernetes alb-ingress-controller társszerzője is. A szerző megoszt egy kis receptet, amely nagyon hasznos lehet az „old school” üzemeltetési mérnökök számára, akik a vim-et részesítik előnyben még a győztes felhő natív korszakában is.

Vim YAML támogatással a Kuberneteshez

YAML-jegyzékek írása a Kubernetes számára vimben? Számtalan órát töltött azzal, hogy kitalálja, hol legyen a következő mező ebben a specifikációban? Vagy talán értékelni fog egy gyors emlékeztetőt a különbségről args и command? Van egy jó hír! A Vim könnyen összekapcsolható yaml-nyelv-szerveraz automatikus kitöltéshez, érvényesítéshez és egyéb kényelmi szolgáltatásokhoz. Ebben a cikkben arról fogunk beszélni, hogyan állíthatunk be ehhez egy nyelvi szerverklienst.

(Az eredeti cikk is van videó, ahol a szerző beszél és bemutatja az anyag tartalmát.)

Nyelvi szerver

Nyelvi szerverek (nyelvi szerverek) beszéljen a programozási nyelvek képességeiről a szerkesztőknek és az IDE-knek, amelyekhez egy speciális protokoll segítségével kölcsönhatásba lépnek egymással - Nyelvi szerver protokoll (LSP). Ez egy nagyszerű megközelítés, mert lehetővé teszi, hogy egy implementáció egyszerre több szerkesztőnek/IDE-nek biztosítson adatokat. Már írtam körülbelül gopls - egy nyelvi szerver a Golang számára - és hogyan használható életkedv. A Kubernetes YAML automatikus kiegészítésének lépései hasonlóak.

Vim YAML támogatással a Kuberneteshez

Ahhoz, hogy a vim a leírt módon működjön, telepítenie kell egy nyelvi kiszolgáló klienst. Az általam ismert két módszer az LanguageClient-neovim и coc.vim. A cikkben megvizsgálom coc.vim - Jelenleg ez a legnépszerűbb plugin. keresztül telepítheti vim-dugó:

" Use release branch (Recommend)
Plug 'neoclide/coc.nvim', {'branch': 'release'}

" Or build from source code by use yarn: https://yarnpkg.com
Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'}

Kezdésnek coc (és így a yaml-language-server) a node.js telepítését igényli:

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

Mikor coc.vim konfigurálva, telepítse a kiszolgálóbővítményt coc-yaml a vimtől:

:CocInstall coc-yaml

Vim YAML támogatással a Kuberneteshez

Végül valószínűleg a konfigurációval kell kezdenie coc-vim, bemutatott mint például. Különösen aktiválja a kombinációt + szóköz az automatikus kiegészítés meghívásához.

A yaml-nyelv-szerver észlelésének beállítása

Hogy coc használhatja a yaml-language-servert, a YAML-fájlok szerkesztésekor meg kell kérni, hogy töltse be a sémát a Kubernetes-ből. Ez szerkesztéssel történik coc-config:

:CocConfig

A konfigurációban hozzá kell adni kubernetes minden fájlhoz yaml. Ezen kívül nyelvi szervert használok golangígy az általános konfigurációm így néz ki:

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

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

kubernetes — egy lefoglalt mező, amely utasítja a nyelvi kiszolgálót, hogy töltse le a Kubernetes sémát a ben meghatározott URL-ről ezt az állandót. yaml.schemas bővíthető további konstrukciók támogatására – további részletekért lásd vonatkozó dokumentációt.

Most létrehozhat egy YAML-fájlt, és elkezdheti az automatikus kiegészítést. Megnyomás + szóköz (vagy más, a vim-ben konfigurált kombináció) meg kell jelenítenie a rendelkezésre álló mezőket és a dokumentációt az aktuális kontextusnak megfelelően:

Vim YAML támogatással a Kuberneteshez
Itt működik +szóköz mert konfiguráltam inoremap <silent><expr> <c-space> coc#refresh(). Ha még nem tetted meg, lásd coc.nvim README egy példa konfigurációhoz.

A Kubernetes API verziójának kiválasztása

Az írás pillanatában a yaml-nyelvi szerver Kubernetes 1.14.0 sémákkal érkezik. Nem találtam módot a séma dinamikus kiválasztására, ezért megnyitottam megfelelő GitHub-probléma. Szerencsére, mivel a nyelvi szerver gépírással van írva, meglehetősen könnyű manuálisan módosítani a verziót. Ehhez csak keresse meg a fájlt server.ts.

A számítógépen való észleléséhez egyszerűen nyissa meg a YAML fájlt a vim segítségével, és keresse meg a folyamatot a segítségével 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 releváns folyamat a 2380-as folyamat: ezt használja a vim a YAML-fájlok szerkesztésekor.

Amint 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 szerkessze az érték módosításával KUBERNETES_SCHEMA_URLpéldául az 1.17.0 verzióhoz:

// 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ó helye a kódban változhat. Kérjük, vegye figyelembe azt is, hogy az adattárat módosítottam erről garethr on instrumenta. Úgy tűnik, hogy a garethr ott támasztó áramkörökre kapcsolt.

Ha ellenőrizni szeretné, hogy a változtatás életbe lépett-e, nézze meg, hogy megjelenik-e olyan mező, amely korábban nem volt ott [a Kubernetes korábbi verzióiban]. Például a K8s 1.14 diagramján nem szerepelt startupProbe:

Vim YAML támogatással a Kuberneteshez

Összegzés

Remélem, ez a lehetőség annyira elnyeri tetszését, mint nekem. Boldog YAMLinget! Feltétlenül nézze meg ezeket a tárolókat, hogy jobban megértse a cikkben említett segédprogramokat:

PS a fordítótól

És van vikube, vim-kubernetes и vimkubectl.

Olvassa el blogunkon is:

Forrás: will.com

Hozzászólás