Vim YAML-tuella Kubernetesille

Huomautus. käännös: Alkuperäisen artikkelin on kirjoittanut Josh Rosso, VMwaren arkkitehti, joka työskenteli aiemmin sellaisissa yrityksissä kuin CoreOS ja Heptio, ja on myös Kubernetes alb-ingress-controllerin toinen kirjoittaja. Kirjoittaja jakaa pienen reseptin, joka voi olla erittäin hyödyllinen "vanhan koulun" operaatioinsinööreille, jotka pitävät parempana vimia jopa voittoisan pilven aikakaudella.

Vim YAML-tuella Kubernetesille

YAML-luetteloiden kirjoittaminen Kubernetesille vimissä? Käytitkö lukemattomia tunteja yrittäessäsi selvittää, missä seuraavan kentän pitäisi olla tässä määrittelyssä? Tai ehkä arvostat nopeaa muistutusta erosta args и command? On hyviä uutisia! Vim on helppo linkittää yaml-kielipalvelinsaadaksesi automaattisen täydennyksen, vahvistuksen ja muita mukavuuksia. Tässä artikkelissa puhumme kielipalvelinasiakkaan määrittämisestä tätä varten.

(Alkuperäinen artikkeli myös on video, jossa kirjoittaja puhuu ja esittelee materiaalin sisältöä.)

Kielipalvelin

Kielipalvelimet (kielipalvelimet) puhua ohjelmointikielten ominaisuuksista toimittajille ja IDE:ille, joita varten he ovat vuorovaikutuksessa toistensa kanssa erityisellä protokollalla - Kielipalvelimen protokolla (LSP). Tämä on loistava lähestymistapa, koska sen avulla yksi toteutus voi toimittaa tietoja useille editoreille/IDE:lle kerralla. Minulla on jo kirjoitin про gopls - Golangin kielipalvelin - ja kuinka sitä voidaan käyttää puhti. Vaiheet automaattisen täydennyksen saamiseksi YAML:ssä Kubernetesille ovat samanlaisia.

Vim YAML-tuella Kubernetesille

Jotta vim toimisi kuvatulla tavalla, sinun on asennettava kielipalvelinasiakas. Kaksi tietämäni menetelmää ovat LanguageClient-neovim и coc.vim. Käsittelen artikkelissa coc.vim - Tämä on tällä hetkellä suosituin laajennus. Voit asentaa sen kautta 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'}

Aluksi coc (ja siten yaml-language-server) vaatii node.js:n asennettuna:

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

Kun coc.vim määritetty, asenna palvelinlaajennus coc-yaml vimiltä:

:CocInstall coc-yaml

Vim YAML-tuella Kubernetesille

Lopuksi haluat todennäköisesti aloittaa määrityksestä coc-vim, esitetty esimerkkinä. Erityisesti se aktivoi yhdistelmän + tila kutsuaksesi automaattista täydennystä.

Yaml-kielen palvelimen tunnistuksen määrittäminen

Että coc voi käyttää yaml-language-serveriä, sitä on pyydettävä lataamaan skeema Kubernetes, kun muokkaat YAML-tiedostoja. Tämä tehdään muokkaamalla coc-config:

:CocConfig

Kokoonpanossa sinun on lisättävä kubernetes kaikille tiedostoille yaml. Lisäksi käytän kielipalvelinta golangjoten yleinen kokoonpanoni näyttää tältä:

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

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

kubernetes — varattu kenttä, joka käskee kielipalvelimen lataamaan Kubernetes-skeeman kohdassa määritetystä URL-osoitteesta tämä vakio. yaml.schemas voidaan laajentaa tukemaan lisäjärjestelmiä - katso lisätietoja asiaankuuluvat asiakirjat.

Nyt voit luoda YAML-tiedoston ja aloittaa automaattisen täydennyksen käytön. Painamalla + tila (tai muu vimissä määritetty yhdistelmä) näyttää käytettävissä olevat kentät ja asiakirjat nykyisen kontekstin mukaan:

Vim YAML-tuella Kubernetesille
Toimii täällä +välilyönti, koska määritin inoremap <silent><expr> <c-space> coc#refresh(). Jos et ole tehnyt tätä, katso coc.nvim README esimerkkikonfiguraatiota varten.

Kubernetes API -version valitseminen

Tätä kirjoittaessa yaml-kielipalvelin toimitetaan Kubernetes 1.14.0 -skeemojen kanssa. En löytänyt tapaa valita kaaviota dynaamisesti, joten avasin vastaava GitHub-ongelma. Koska kielipalvelin on kirjoitettu koneella, onneksi versiota on helppo vaihtaa manuaalisesti. Tee tämä etsimällä tiedosto server.ts.

Voit havaita sen koneellasi avaamalla YAML-tiedoston vimillä ja etsimällä prosessin 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

Meille relevantti prosessi on prosessi 2380: sitä vim käyttää muokkaaessaan YAML-tiedostoa.

Kuten näet helposti, tiedosto sijaitsee /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Muokkaa sitä muuttamalla arvoa KUBERNETES_SCHEMA_URLesimerkiksi versiolle 1.17.0:

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

Riippuen käytetystä versiosta coc-yaml Muuttujan sijainti koodissa voi vaihdella. Huomaa myös, että vaihdoin arkiston kohteesta garethr päälle instrumenta. Ilmeisesti garethr vaihtoi siellä tukipiireihin.

Tarkistaaksesi, että muutos on tullut voimaan, tarkista, näkyykö kenttä, jota ei ollut aiemmin [Kubernetesin aikaisemmissa versioissa]. Esimerkiksi kaaviossa K8s 1.14 ei ollut startupProbe:

Vim YAML-tuella Kubernetesille

Yhteenveto

Toivon, että tämä mahdollisuus miellyttää sinua yhtä paljon kuin minua. Hyvää YAMLingia! Muista tarkistaa nämä arkistot ymmärtääksesi paremmin artikkelissa mainitut apuohjelmat:

PS kääntäjältä

Ja siellä on vikube, vim-kubernetes и vimkubectl.

Lue myös blogistamme:

Lähde: will.com

Lisää kommentti