Vim kanthi dhukungan YAML kanggo Kubernetes

Cathetan. nerjemahake.: Artikel asli ditulis dening Josh Rosso, arsitek ing VMware sing sadurunge makarya ing CoreOS lan Heptio, lan co-penulis Kubernetes alb-ingress-controller. Penulis nuduhake resep cilik sing bisa migunani banget kanggo insinyur ops sekolah lawas sing luwih seneng vim sanajan ing jaman awan asli.

Vim kanthi dhukungan YAML kanggo Kubernetes

Apa sampeyan nulis manifests YAML kanggo Kubernetes ing vim? Apa sampeyan wis ngentekake pirang-pirang jam nyoba ngerteni endi lapangan sabanjure ing spek iki? Utawa mungkin sampeyan bakal ngurmati pangeling cepet babagan prabédan args и command? Ana kabar apik! Vim gampang diikat yaml-basa-server, kanggo entuk rampung otomatis, validasi lan kepenak liyane. Ing artikel iki kita bakal ngomong babagan carane nyiyapake klien server basa kanggo iki.

(Artikel asli uga duwe ana video, ing ngendi penulis ngandhani lan nduduhake isi materi.)

Server basa

Server basa (server basa) ngandhani editor lan IDE babagan kemampuan basa pamrograman, sing padha sesambungan karo siji liyane nggunakake protokol khusus - Protokol Server Bahasa (LSP) Iki minangka pendekatan sing apik, amarga ngidini siji implementasine nyedhiyakake data menyang sawetara editor / IDE bebarengan. Aku wis wrote bab gopls — server basa kanggo Golang — lan carane bisa digunakake ing vimLangkah-langkah kanggo ngrampungake otomatis YAML kanggo Kubernetes padha.

Vim kanthi dhukungan YAML kanggo Kubernetes

Kanggo nggawe vim bisa digunakake kanthi cara sing diterangake, sampeyan kudu nginstal klien server basa. Loro cara sing aku ngerti yaiku LanguageClient-neovim и coc.vim. Ing artikel aku bakal nimbang coc.vim - minangka plugin sing paling populer saiki. Sampeyan bisa nginstal liwat 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'}

Kanggo wiwitan coc (lan kanthi mangkono yaml-language-server) mbutuhake node.js diinstal:

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

Nalika coc.vim diatur, nginstal extension server coc-yaml saka vim:

:CocInstall coc-yaml

Vim kanthi dhukungan YAML kanggo Kubernetes

Pungkasan, sampeyan bisa uga pengin miwiti konfigurasi. coc-vim, diwenehi minangka conto. Utamane, ngaktifake kombinasi kasebut + ruang kanggo nelpon autocompletion.

Nyiyapake panemuan yaml-language-server

sing coc bisa nggunakake yaml-language-server, perlu dijaluk mbukak skema saka Kubernetes nalika nyunting file YAML. Iki ditindakake kanthi nyunting coc-config:

:CocConfig

Ing konfigurasi sampeyan kudu nambah kubernetes kanggo kabeh file yamlAku tambahan nggunakake server basa kanggo golang, dadi konfigurasi umumku katon kaya iki:

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

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

kubernetes — kolom reserved sing ngandhani server basa kanggo ngundhuh skema Kubernetes saka URL sing ditetepake ing pancet iki. yaml.schemas bisa ditambahi kanggo ndhukung rencana tambahan - ndeleng rincian ing dokumentasi sing cocog.

Saiki sampeyan bisa nggawe file YAML lan miwiti nggunakake autocompletion. Klik + ruang (utawa kombinasi apa wae sing dikonfigurasi ing vim) kudu nuduhake lapangan lan dokumentasi sing kasedhiya miturut konteks saiki:

Vim kanthi dhukungan YAML kanggo Kubernetes
Kerja ing kene + spasi amarga aku nyetel inoremap <silent><expr> <c-space> coc#refresh()Yen sampeyan durung nindakake iki, ndeleng coc.nvim README kanggo conto konfigurasi.

Milih Versi API Kubernetes

Nalika nulis, yaml-language-server dikirim nganggo skema Kubernetes 1.14.0. Aku ora nemokake cara kanggo milih skema kanthi dinamis, mula aku mbukak masalah GitHub sing cocog. Untunge, amarga server basa ditulis nganggo skrip, cukup gampang ngganti versi kanthi manual. Kanggo nindakake iki, mung golek file server.ts.

Kanggo nemokake ing mesin sampeyan, bukak file YAML nganggo vim lan temokake proses kasebut 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

Proses sing cocog kanggo kita yaiku 2380: iki sing digunakake vim nalika nyunting file YAML.

Minangka sampeyan bisa ndeleng kanthi gampang, file kasebut ana ing /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Cukup kanggo ngowahi kanthi ngganti nilai KUBERNETES_SCHEMA_URL, contone, menyang versi 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";

Gumantung ing versi digunakake coc-yaml lokasi variabel ing kode bisa uga beda. Uga elinga yen aku ngganti repositori saka garethr ing instrumentaIku misale jek sing garethr ngalih menyang rencana ndhukung ana.

Kanggo mriksa manawa owah-owahan wis ditrapake, goleki kolom sing ora ana sadurunge [ing versi Kubernetes sadurunge]. Contone, skema kanggo K8s 1.14 ora duwe. wiwitanProbe:

Vim kanthi dhukungan YAML kanggo Kubernetes

Ringkesan

Muga-muga fitur iki wis nyenengake kanggo sampeyan kaya aku. Sugeng YAMLing! Priksa manawa sampeyan mriksa repositori kasebut supaya luwih ngerti babagan utilitas sing kasebut ing artikel iki:

PS saka penerjemah

Lan ana vikube, vim kubernetes и vimkubectl.

Waca uga ing blog kita:

Source: www.habr.com

Add a comment