Vim met YAML-ondersteuning vir Kubernetes

Let wel. vertaal.: Die oorspronklike artikel is geskryf deur Josh Rosso, 'n argitek by VMware wat voorheen by maatskappye soos CoreOS en Heptio gewerk het, en is ook die mede-outeur van die Kubernetes alb-ingress-controller. Die skrywer deel 'n klein resep wat baie nuttig kan wees vir "ou skool" operasionele ingenieurs wat vim verkies selfs in die era van die seëvierende wolkboorling.

Vim met YAML-ondersteuning vir Kubernetes

Skryf YAML-manifeste vir Kubernetes in vim? Het u ontelbare ure spandeer om te probeer uitvind waar die volgende veld in hierdie spesifikasie moet wees? Of dalk sal jy 'n vinnige herinnering aan die verskil waardeer args и command? Daar is goeie nuus! Vim is maklik om na te skakel yaml-taalbedienerom outomatiese voltooiing, validering en ander geriewe te kry. In hierdie artikel sal ons praat oor hoe om 'n taalbedienerkliënt hiervoor op te stel.

(Die oorspronklike artikel ook is daar 'n video, waar die skrywer praat en die inhoud van die materiaal demonstreer.)

Taalbediener

Taalbedieners (taalbedieners) praat oor die vermoëns van programmeertale aan redakteurs en IDE's, waarvoor hulle met mekaar interaksie het deur 'n spesiale protokol - Taalbedienerprotokol (LSP). Dit is 'n wonderlike benadering omdat dit een implementering toelaat om data aan baie redakteurs/IDE's tegelyk te verskaf. Ek het reeds Ek skryf oor gopls - 'n taalbediener vir Golang - en hoe dit gebruik kan word in Vim. Die stappe om outovoltooiing in YAML vir Kubernetes te kry, is soortgelyk.

Vim met YAML-ondersteuning vir Kubernetes

Om vim op die beskryfde manier te laat werk, sal jy 'n taalbedienerkliënt moet installeer. Die twee metodes waarvan ek weet is LanguageClient-neovim и coc.vim. In die artikel sal ek oorweeg coc.vim - Dit is die gewildste inprop op die oomblik. Jy kan dit installeer via vim-prop:

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

Om mee te begin coc (en dus die yaml-taalbediener) sal node.js geïnstalleer vereis:

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

Wanneer coc.vim gekonfigureer, installeer die bedieneruitbreiding coc-yaml van vim:

:CocInstall coc-yaml

Vim met YAML-ondersteuning vir Kubernetes

Uiteindelik sal u heel waarskynlik met die konfigurasie wil begin coc-vim, aangebied as 'n voorbeeld. Dit aktiveer veral die kombinasie +spasie om outovoltooiing te noem.

Stel yaml-taalbedienerbespeuring op

Wat coc yaml-taalbediener kan gebruik, moet dit gevra word om die skema vanaf Kubernetes te laai wanneer YAML-lêers gewysig word. Dit word gedoen deur redigering coc-config:

:CocConfig

In die konfigurasie sal jy moet byvoeg kubernetes vir alle lêers yaml. Ek gebruik ook 'n taalbediener vir golangso my algemene konfigurasie lyk soos volg:

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

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

kubernetes - 'n gereserveerde veld wat die taalbediener vertel om die Kubernetes-skema af te laai vanaf die URL wat in hierdie konstante. yaml.schemas kan uitgebrei word om bykomende skemas te ondersteun - vir meer besonderhede, sien relevante dokumentasie.

Nou kan jy 'n YAML-lêer skep en outovoltooiing begin gebruik. Druk +spasie (of ander kombinasie wat in vim gekonfigureer is) moet die beskikbare velde en dokumentasie volgens die huidige konteks wys:

Vim met YAML-ondersteuning vir Kubernetes
Werk hier +spasie omdat ek gekonfigureer het inoremap <silent><expr> <c-space> coc#refresh(). As jy dit nie gedoen het nie, sien coc.nvim LEESMY vir 'n voorbeeldkonfigurasie.

Kies die Kubernetes API-weergawe

Soos hierdie geskryf is, word yaml-taalbediener gestuur met Kubernetes 1.14.0-skemas. Ek het nie 'n manier gevind om 'n skema dinamies te kies nie, so ek het oopgemaak ooreenstemmende GitHub-kwessie. Gelukkig, aangesien die taalbediener in tikskrif geskryf is, is dit redelik maklik om die weergawe met die hand te verander. Om dit te doen, soek net die lêer server.ts.

Om dit op u masjien op te spoor, maak eenvoudig die YAML-lêer oop met vim en vind die proses met 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

Die relevante proses vir ons is proses 2380: dit is wat vim gebruik wanneer 'n YAML-lêer redigeer.

Soos u maklik kan sien, is die lêer in /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Wysig dit net deur die waarde te verander KUBERNETES_SCHEMA_URL, byvoorbeeld, vir weergawe 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";

Afhangende van die weergawe wat gebruik word coc-yaml Die ligging van die veranderlike in die kode kan verskil. Neem asseblief ook kennis dat ek die bewaarplek van verander het garethr op instrumenta. Dit blyk dat garethr oorgeskakel na ondersteunende stroombane daar.

Om seker te maak dat die verandering in werking getree het, kyk of 'n veld verskyn wat nie voorheen daar was nie [in vorige weergawes van Kubernetes]. Byvoorbeeld, in die diagram vir K8s 1.14 was daar geen opstartProbe:

Vim met YAML-ondersteuning vir Kubernetes

Opsomming

Ek hoop hierdie geleentheid behaag jou net soveel soos dit my gedoen het. Gelukkige YAMLing! Kyk gerus na hierdie bewaarplekke om die nutsprogramme wat in die artikel genoem word beter te verstaan:

PS van vertaler

En daar is ook weekbe, vim-kubernetes и vimkubectl.

Lees ook op ons blog:

Bron: will.com

Voeg 'n opmerking