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