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.
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.
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
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:
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:
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.
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:
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: