Vim cù supportu YAML per Kubernetes

Nota. transl.: L'articulu originale hè statu scrittu da Josh Rosso, un architettu in VMware chì hà travagliatu prima in cumpagnie cum'è CoreOS è Heptio, è hè ancu u coautore di u Kubernetes alb-ingress-controller. L'autore sparte una piccula ricetta chì pò esse assai utile per l'ingegneri di l'operazione "vecchia scola" chì preferanu vim ancu in l'era di a nuvola vittoria nativa.

Vim cù supportu YAML per Kubernetes

Scrivite manifesti YAML per Kubernetes in vim? Passatu innumerevoli ore à pruvà à capisce induve u prossimu campu deve esse in questa specificazione? O forse vi apprezzerete un rapidu ricordu di a diferenza args и command? Ci hè una bona nutizia! Vim hè faciule per ligà yaml-language-serverper uttene cumpletamentu automaticu, validazione è altre comodità. In questu articulu, parlemu di cumu si stabilisce un cliente di u servitore di lingua per questu.

(L'articulu originale ancu ci hè un video, induve l'autore parla è dimostra u cuntenutu di u materiale.)

Servitore di lingua

Servitori di lingua (servitori di lingua) parlà di e capacità di i linguaggi di prugrammazione à l'editori è l'IDE, per quale interagiscenu cù l'altri usendu un protokollu speciale - Protocol di Servizio Lingua (LSP). Questu hè un grande approcciu perchè permette una implementazione per furnisce dati à parechji editori / IDE à una volta. Aghju digià hà scrittu circa goppi - un servitore di lingua per Golang - è cumu pò esse usatu in vim. I passi per uttene l'autocompletion in YAML per Kubernetes sò simili.

Vim cù supportu YAML per Kubernetes

Per vim per travaglià in a manera descritta, avete bisognu di stallà un cliente di u servitore di lingua. I dui metudi chì cunnoscu sò LanguageClient-neovim и coc.vim. In l'articulu vi cunsiderà coc.vim - Questu hè u plugin più populari in u mumentu. Pudete stallà 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'}

Per principiu coc (è cusì u yaml-language-server) necessitarà node.js installatu:

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

Quandu coc.vim cunfiguratu, installate l'estensione di u servitore coc-yaml da vim:

:CocInstall coc-yaml

Vim cù supportu YAML per Kubernetes

Infine, vi prubabilmente vulete principià cù a cunfigurazione coc-vim, prisentatu cum'è un esempiu. In particulare, attiva a cumminazzioni + spaziu per chjamà autocompletion.

Configurazione di a deteczione di yaml-language-server

chì coc Puderia aduprà yaml-language-server, ci vole à esse dumandatu à carica u schema da Kubernetes quandu editate i schedari YAML. Questu hè fattu per edità coc-config:

:CocConfig

In a cunfigurazione vi tuccherà à aghjunghje kubernetes per tutti i schedari yaml. Aduprà ancu un servitore di lingua per golangcusì a mo cunfigurazione generale hè cusì:

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

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

kubernetes - un campu riservatu chì dice à u servitore di lingua per scaricà u schema Kubernetes da l'URL definitu in sta custante. yaml.schemas pò esse allargatu per sustene schemi supplementari - per più dettagli, vede documentazione pertinente.

Avà pudete creà un schedariu YAML è cumincià à aduprà autocompletion. Pressendu + spaziu (o altra cumminazione cunfigurata in vim) deve mustrà i campi dispunibili è a documentazione secondu u cuntestu attuale:

Vim cù supportu YAML per Kubernetes
Funziona quì + spaziu perchè aghju cunfiguratu inoremap <silent><expr> <c-space> coc#refresh(). Se ùn avete micca fattu questu, vede coc.nvim README per un esempiu di cunfigurazione.

Selezzione di a versione di l'API Kubernetes

Da questu scrittu, yaml-language-server spedisce cù schemi Kubernetes 1.14.0. Ùn aghju micca truvatu un modu per selezziunà dinamicamente un schema, cusì aghju apertu prublema GitHub currispondente. Fortunatamente, postu chì u servitore di lingua hè scrittu in dattilografu, hè abbastanza faciule per cambià manualmente a versione. Per fà questu, solu truvà u schedariu server.ts.

Per detect lu in a vostra macchina, simpricimenti apre u schedariu YAML cù vim è truvà u prucessu cù 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

U prucessu pertinente per noi hè u prucessu 2380: hè ciò chì vim usa quandu edita un schedariu YAML.

Comu pudete vede facilmente, u schedariu hè situatu in /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Basta à edità cambiendu u valore KUBERNETES_SCHEMA_URL, per esempiu, per a versione 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";

Sicondu a versione utilizata coc-yaml U locu di a variabile in u codice pò varià. Per piacè nutate ancu chì aghju cambiatu u repository da garethr nantu instrumenta. Sembra chì garethr cambiatu à i circuiti di supportu quì.

Per verificà chì u cambiamentu hà fattu effettu, vede s'ellu appare un campu chì ùn era micca prima [in versioni precedenti di Kubernetes]. Per esempiu, in u schema per K8s 1.14 ùn ci era micca startupProbe:

Vim cù supportu YAML per Kubernetes

Resumen

Spergu chì sta opportunità vi piace quant'è mè. Felice YAMling! Assicuratevi di verificà questi repositori per capisce megliu l'utilità citate in l'articulu:

PS da u traduttore

È ci hè ancu vikube, vim-kubernetes и vimkubectl.

Leghjite puru nant'à u nostru blog:

Source: www.habr.com

Add a comment