Vim mat YAML Ënnerstëtzung fir Kubernetes

Note. iwwersat.: Den ursprénglechen Artikel gouf vum Josh Rosso geschriwwen, en Architekt bei VMware, dee virdru bei Firmen wéi CoreOS an Heptio geschafft huet, an och de Co-Autor vum Kubernetes alb-ingress-controller ass. Den Auteur deelt e klengt Rezept dat ganz nëtzlech ka sinn fir "al School" Operatiounsingenieuren déi vim léiwer souguer an der Ära vun der Victoire Wollek gebierteg sinn.

Vim mat YAML Ënnerstëtzung fir Kubernetes

Schreiwen YAML Manifestatiounen fir Kubernetes am vim? Eng Onmass Stonnen verbruecht fir erauszefannen, wou dat nächst Feld an dëser Spezifizéierung sollt sinn? Oder vläicht wäert Dir eng séier Erënnerung un den Ënnerscheed appreciéieren args и command? Et gëtt gutt Noriicht! Vim ass einfach ze verlinken yaml-Sprooch-Serverfir automatesch Fäerdegstellung, Validatioun an aner Komfort ze kréien. An dësem Artikel schwätze mir iwwer wéi een e Sproocheserver Client fir dëst opbaut.

(Och den ursprénglechen Artikel gëtt et e video, wou den Auteur schwätzt a weist den Inhalt vum Material.)

Sprooch Server

Sprooch Serveren (Sproochserver) schwätzen iwwer d'Fäegkeete vun de Programméierungssprooche fir Redaktoren an IDEs, fir déi se matenee mat engem spezielle Protokoll interagéieren - Sprooch Server Protokoll (LSP). Dëst ass eng super Approche well et erlaabt eng Implementatioun Daten un vill Redaktoren / IDEs gläichzäiteg ze liwweren. Ech hu schonn geschriwwen iwwer gopls - e Sproocheserver fir Golang - a wéi et benotzt ka ginn vim. D'Schrëtt fir Autocompletion am YAML fir Kubernetes ze kréien sinn ähnlech.

Vim mat YAML Ënnerstëtzung fir Kubernetes

Fir datt vim op déi beschriwwe Manéier funktionnéiert, musst Dir e Sproocheserver Client installéieren. Déi zwou Methoden, déi ech weess, sinn LanguageClient-neovim и coc.vim. Am Artikel wäert ech betruecht coc.vim - Dëst ass de beléifste Plugin am Moment. Dir kënnt et installéieren via 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'}

Fir den Start coc (an domat den yaml-language-server) erfuerdert node.js installéiert:

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

Wéini coc.vim konfiguréiert, installéiert de Server Extensioun coc-yaml vum vim:

:CocInstall coc-yaml

Vim mat YAML Ënnerstëtzung fir Kubernetes

Schlussendlech wëllt Dir héchstwahrscheinlech mat der Konfiguratioun ufänken coc-vim, presentéiert als Beispill. Besonnesch aktivéiert et d'Kombinatioun + Raum autocompletion ze ruffen.

Yaml-Language-Server Detektioun opsetzen

datt coc kéint yaml-Language-Server benotzen, et muss gefrot ginn de Schema vu Kubernetes ze lueden wann Dir YAML Dateien ännert. Dëst gëtt duerch Redaktioun gemaach coc-config:

:CocConfig

An der Konfiguratioun musst Dir addéieren kubernetes fir all Fichieren yaml. Ech benotzen zousätzlech eng Sprooch Server fir golangalso meng allgemeng Configuratioun gesäit esou aus:

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

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

kubernetes - e reservéiert Feld dat dem Sproocheserver seet fir de Kubernetes Schema erofzelueden vun der URL definéiert an dëser konstant. yaml.schemas kann erweidert ginn fir zousätzlech Schemaen z'ënnerstëtzen - fir méi Detailer, kuckt relevant Dokumentatioun.

Elo kënnt Dir eng YAML Datei erstellen an d'Autocompletion benotzen. Dréckt + Raum (oder aner Kombinatioun konfiguréiert a vim) soll déi verfügbar Felder an Dokumentatioun no dem aktuelle Kontext weisen:

Vim mat YAML Ënnerstëtzung fir Kubernetes
Wierker hei + Raum well ech konfiguréiert inoremap <silent><expr> <c-space> coc#refresh(). Wann Dir dëst net gemaach hutt, kuckt coc.nvim VIRLIESEN fir e Beispill Configuratioun.

Auswiel vun der Kubernetes API Versioun

Wéi vun dësem Schreiwen, yaml-Sprooch-Server Schëffer mat Kubernetes 1.14.0 Schemaen. Ech hu kee Wee fonnt fir dynamesch e Schema ze wielen, also hunn ech opgemaach entspriechend GitHub Thema. Glécklecherweis, well de Sproocheserver an Typescript geschriwwe gëtt, ass et ganz einfach d'Versioun manuell z'änneren. Fir dëst ze maachen, fanne just d'Datei server.ts.

Fir et op Ärer Maschinn z'entdecken, öffnen einfach d'YAML Datei mat vim a fënnt de Prozess mat 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

De relevante Prozess fir eis ass Prozess 2380: et ass wat vim benotzt wann Dir eng YAML Datei ännert.

Wéi Dir einfach gesitt, ass d'Datei an /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Ännert et einfach andeems Dir de Wäert ännert KUBERNETES_SCHEMA_URL, zum Beispill, fir Versioun 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";

Jee no der benotzt Versioun coc-yaml D'Plaz vun der Variabel am Code ka variéieren. Notéiert w.e.g. och datt ech de Repository geännert hunn garethr op instrumenta. Et schéngt, datt garethr gewiesselt op Ënnerstëtzung Circuiten do.

Fir ze kontrolléieren ob d'Ännerung a Kraaft getrueden ass, kuckt ob e Feld erschéngt dat net virdru war [a fréiere Versioune vu Kubernetes]. Zum Beispill, am Diagramm fir K8s 1.14 war keen startupProbe:

Vim mat YAML Ënnerstëtzung fir Kubernetes

Summary

Ech hoffen, datt dës Geleeënheet Iech sou vill freet wéi et mir gemaach huet. Happy YAMLing! Gitt sécher dës Repositories ze kontrolléieren fir d'Utilities besser ze verstoen, déi am Artikel ernimmt ginn:

PS vum Iwwersetzer

An et gëtt och Woch, vim-kubernetes и vimkubectl.

Liest och op eisem Blog:

Source: will.com

Setzt e Commentaire