Vim YAML-i toega Kubernetese jaoks

Märge. tõlge: Algse artikli kirjutas Josh Rosso, VMware'i arhitekt, kes töötas varem sellistes ettevõtetes nagu CoreOS ja Heptio ning on ka Kubernetes alb-ingress-controlleri kaasautor. Autor jagab väikest retsepti, mis võib olla väga kasulik “vana kooli” operatiivinseneridele, kes eelistavad vimi isegi võiduka pilve põliselaniku ajastul.

Vim YAML-i toega Kubernetese jaoks

Kas kirjutate Kubernetes in vim YAML-i manifesti? Kas kulutasite lugematuid tunde, püüdes välja mõelda, kus peaks selle spetsifikatsiooni järgmine väli olema? Või äkki hindate erinevuse kiiret meeldetuletust args и command? On häid uudiseid! Vimi on lihtne linkida yaml-keeleserverautomaatse täitmise, kinnitamise ja muude mugavuste saamiseks. Selles artiklis räägime sellest, kuidas selle jaoks keeleserveri klienti seadistada.

(Samuti originaalartikkel kas on video, kus autor räägib ja demonstreerib materjali sisu.)

Keeleserver

Keeleserverid (keeleserverid) Rääkige programmeerimiskeelte võimalustest redaktoritele ja IDE-dele, mille jaoks nad suhtlevad üksteisega spetsiaalse protokolli abil - Keeleserveri protokoll (LSP). See on suurepärane lähenemine, kuna see võimaldab ühel juurutamisel anda andmeid korraga mitmele toimetajale/IDE-le. Mul on juba kirjutasin umbes goplid - Golangi keeleserver - ja kuidas seda kasutada tarm. Kubernetese YAML-i automaatse täitmise toimingud on sarnased.

Vim YAML-i toega Kubernetese jaoks

Selleks, et vim kirjeldatud viisil töötaks, peate installima keeleserveri kliendi. Kaks meetodit, mida ma tean, on LanguageClient-neovim и coc.vim. Artiklis kaalun coc.vim - See on hetkel kõige populaarsem pistikprogramm. Saate selle installida kaudu vim-plug:

" 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'}

Alustuseks coc (ja seega yaml-language-server) nõuab faili node.js installimist:

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

Millal coc.vim konfigureeritud, installige serverilaiend coc-yaml vimilt:

:CocInstall coc-yaml

Vim YAML-i toega Kubernetese jaoks

Lõpuks soovite tõenäoliselt alustada konfiguratsiooniga coc-vim, esitleti näitena. Eelkõige aktiveerib see kombinatsiooni + tühik automaatsele täitmisele helistamiseks.

Yaml-keeleserveri tuvastamise seadistamine

Et coc võib kasutada yaml-language-serverit, siis tuleb YAML-failide redigeerimisel paluda Kubernetesist skeem laadida. Seda tehakse redigeerimise teel coc-config:

:CocConfig

Konfiguratsioonis peate lisama kubernetes kõigi failide jaoks yaml. Lisaks kasutan keeleserverit golangnii et minu üldine konfiguratsioon näeb välja selline:

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

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

kubernetes — reserveeritud väli, mis käsib keeleserveril Kubernetese skeemi alla laadida defineeritud URL-ilt see konstant. yaml.schemas saab laiendada, et toetada täiendavaid skeeme - täpsemalt vt asjakohane dokumentatsioon.

Nüüd saate luua YAML-faili ja alustada automaatse lõpetamise kasutamist. Vajutades + tühik (või muu vimis konfigureeritud kombinatsioon) peaks näitama saadaolevaid välju ja dokumentatsiooni vastavalt praegusele kontekstile:

Vim YAML-i toega Kubernetese jaoks
Töötab siin + tühik, sest ma seadistasin inoremap <silent><expr> <c-space> coc#refresh(). Kui te pole seda teinud, vaadake coc.nvim README konfiguratsiooni näite jaoks.

Kubernetes API versiooni valimine

Selle kirjutamise seisuga tarnitakse yaml-keeleserverit Kubernetes 1.14.0 skeemidega. Ma ei leidnud võimalust skeemi dünaamiliseks valimiseks, nii et avasin vastav GitHubi probleem. Kuna keeleserver on kirjutatud masinakirjas, siis õnneks on versiooni käsitsi muutmine üsna lihtne. Selleks leidke lihtsalt fail server.ts.

Selle oma masinas tuvastamiseks avage lihtsalt YAML-fail vimi abil ja leidke protsess selle abil 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

Meie jaoks on asjakohane protsess protsess 2380: seda kasutab vim YAML-faili redigeerimisel.

Nagu näete, asub fail asukohas /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Muutke seda lihtsalt väärtust muutes KUBERNETES_SCHEMA_URL, näiteks versiooni 1.17.0 jaoks:

// 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";

Olenevalt kasutatavast versioonist coc-yaml Muutuja asukoht koodis võib erineda. Pange tähele ka seda, et muutsin hoidlast alates garethr edasi instrumenta. Tundub, et garethr lülitati seal tugiahelatele.

Muudatuse jõustumise kontrollimiseks vaadake, kas kuvatakse väli, mida seal varem polnud [Kubernetese eelmistes versioonides]. Näiteks K8s 1.14 diagrammil ei olnud startupProbe:

Vim YAML-i toega Kubernetese jaoks

Kokkuvõte

Loodan, et see võimalus rõõmustab teid sama palju kui mind. Head YAMLingut! Artiklis mainitud utiliitide paremaks mõistmiseks vaadake kindlasti neid hoidlaid:

PS tõlkijalt

Ja on ka vikube, vim-kubernetes и vimkubectl.

Loe ka meie blogist:

Allikas: www.habr.com

Lisa kommentaar