Vim met YAML-ondersteuning voor Kubernetes

Opmerking. vert.: Het originele artikel is geschreven door Josh Rosso, een architect bij VMware die eerder bij bedrijven als CoreOS en Heptio werkte, en tevens co-auteur is van de Kubernetes alb-ingress-controller. De auteur deelt een klein recept dat erg handig kan zijn voor ‘old school’ operations engineers die de voorkeur geven aan vim, zelfs in het tijdperk van de zegevierende cloud-native.

Vim met YAML-ondersteuning voor Kubernetes

YAML-manifesten schrijven voor Kubernetes in vim? Heb je talloze uren besteed aan het uitzoeken waar het volgende veld in deze specificatie zou moeten staan? Of misschien waardeert u een snelle herinnering aan het verschil args и command? Er is goed nieuws! Vim is eenvoudig te koppelen yaml-taalservervoor automatische voltooiing, validatie en andere gemakken. In dit artikel bespreken we hoe je hiervoor een taalserverclient instelt.

(Ook het originele artikel is er een filmpje, waar de auteur spreekt en de inhoud van het materiaal demonstreert.)

Taalserver

Taalservers (taalservers) praat over de mogelijkheden van programmeertalen met editors en IDE's, waarvoor ze met elkaar communiceren via een speciaal protocol - Taalserverprotocol (LSP). Dit is een geweldige aanpak omdat het één implementatie mogelijk maakt gegevens aan veel editors/IDE's tegelijk te leveren. ik heb al ik schreef over gopls - een taalserver voor Golang - en hoe deze kan worden gebruikt vim. De stappen om automatische aanvulling in YAML voor Kubernetes te krijgen, zijn vergelijkbaar.

Vim met YAML-ondersteuning voor Kubernetes

Om vim op de beschreven manier te laten werken, moet u een taalserverclient installeren. De twee methoden die ik ken zijn TaalClient-neovim и coc.vim. In het artikel zal ik erover nadenken coc.vim - Dit is momenteel de meest populaire plug-in. Je kunt het installeren via vim-stekker:

" 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 te beginnen coc (en dus voor de yaml-taalserver) is node.js vereist:

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

Wanneer coc.vim geconfigureerd, installeer dan de serverextensie coc-yaml van vim:

:CocInstall coc-yaml

Vim met YAML-ondersteuning voor Kubernetes

Ten slotte wilt u waarschijnlijk beginnen met de configuratie coc-vim, gepresenteerd als voorbeeld. Het activeert met name de combinatie +ruimte om automatisch aanvullen aan te roepen.

Yaml-taalserverdetectie instellen

Dat coc yaml-taal-server zou kunnen gebruiken, moet worden gevraagd om het schema uit Kubernetes te laden bij het bewerken van YAML-bestanden. Dit gebeurt door middel van bewerken coc-config:

:CocConfig

In de configuratie moet u toevoegen kubernetes voor alle bestanden yaml. Ik gebruik bovendien een taalserver voor golangdus mijn algemene configuratie ziet er als volgt uit:

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

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

kubernetes — een gereserveerd veld dat de taalserver vertelt het Kubernetes-schema te downloaden van de URL die is gedefinieerd in deze constante. yaml.schemas kan worden uitgebreid om aanvullende schema's te ondersteunen - zie voor meer details relevante documentatie.

Nu kunt u een YAML-bestand maken en automatisch aanvullen gaan gebruiken. Drukken +ruimte (of een andere combinatie geconfigureerd in vim) zou de beschikbare velden en documentatie moeten tonen volgens de huidige context:

Vim met YAML-ondersteuning voor Kubernetes
Werkt hier +spatie omdat ik het heb geconfigureerd inoremap <silent><expr> <c-space> coc#refresh(). Als u dit nog niet heeft gedaan, zie coc.nvim LEESMIJ voor een voorbeeldconfiguratie.

De Kubernetes API-versie selecteren

Op het moment van schrijven wordt yaml-taal-server geleverd met Kubernetes 1.14.0-schema's. Ik vond geen manier om dynamisch een schema te selecteren, dus opende ik overeenkomstige GitHub-probleem. Gelukkig is het, omdat de taalserver in typoscript is geschreven, vrij eenvoudig om de versie handmatig te wijzigen. Om dit te doen, hoeft u alleen maar het bestand te zoeken server.ts.

Om het op uw machine te detecteren, opent u eenvoudigweg het YAML-bestand met vim en zoekt u het proces 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

Het relevante proces voor ons is proces 2380: het is wat vim gebruikt bij het bewerken van een YAML-bestand.

Zoals u gemakkelijk kunt zien, bevindt het bestand zich in /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Bewerk het gewoon door de waarde te wijzigen KUBERNETES_SCHEMA_URL, bijvoorbeeld voor versie 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";

Afhankelijk van de gebruikte versie coc-yaml De locatie van de variabele in de code kan variëren. Houd er ook rekening mee dat ik de repository heb gewijzigd van garethr op instrumenta. Het lijkt erop dat garethr daar overgeschakeld naar ondersteunende circuits.

Om te controleren of de wijziging van kracht is geworden, kijkt u of er een veld verschijnt dat er voorheen niet was [in eerdere versies van Kubernetes]. In het diagram voor K8s 1.14 was er bijvoorbeeld geen opstartenProbe:

Vim met YAML-ondersteuning voor Kubernetes

Beknopt

Ik hoop dat deze kans u net zo bevalt als mij. Veel plezier met YAMling! Zorg ervoor dat u deze opslagplaatsen bekijkt om de hulpprogramma's die in het artikel worden genoemd beter te begrijpen:

PS van vertaler

En daar is vikube, vim-kubernetes и vimkubectl.

Lees ook op onze blog:

Bron: www.habr.com

Voeg een reactie