Vim kanthi dhukungan YAML kanggo Kubernetes

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

Vim kanthi dhukungan YAML kanggo Kubernetes

Nulis YAML manifests kanggo Kubernetes ing vim? Ngginakaken jam sing ora kaetung nyoba kanggo mangerteni ing ngendi lapangan sabanjure kudu ana ing spesifikasi iki? Utawa mungkin sampeyan bakal ngurmati pangeling cepet babagan prabΓ©dan args ΠΈ command? Ana kabar apik! Vim gampang disambungake yaml-basa-serverkanggo entuk rampung otomatis, validasi lan kepenak liyane. Ing artikel iki, kita bakal ngomong babagan carane nyiyapake klien server basa kanggo iki.

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

Server basa

Server basa (server basa) Dhiskusi babagan kemampuan basa pamrograman menyang editor lan IDE, 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 akeh editor / IDE bebarengan. Aku wis wrote bab gopls - server basa kanggo Golang - lan carane bisa digunakake ing vim. Langkah-langkah kanggo ngrampungake otomatis ing YAML kanggo Kubernetes padha.

Vim kanthi dhukungan YAML kanggo Kubernetes

Supaya 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 - Iki 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 bakal pengin miwiti konfigurasi coc-vim, diwenehi minangka conto. Utamane, ngaktifake kombinasi kasebut + ruang kanggo nelpon autocompletion.

Nyiyapake deteksi 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 yaml. Aku tambahan nggunakake server basa kanggo golangdadi 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 - kanggo rincian liyane, ndeleng dokumentasi sing cocog.

Saiki sampeyan bisa nggawe file YAML lan miwiti nggunakake autocompletion. menet + ruang (utawa kombinasi liyane 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 ngatur 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 iki, 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. Begjanipun, wiwit server basa ditulis ing typescript, iku cukup gampang kanggo ngganti versi manual. Kanggo nindakake iki, mung golek file server.ts.

Kanggo ndeteksi 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 proses 2380: yaiku 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 ngowahi kanthi ngganti nilai KUBERNETES_SCHEMA_URL, contone, kanggo 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 beda-beda. Wigati uga yen aku ngganti repositori saka garethr ing instrumenta. Iku misale jek sing garethr ngalih menyang sirkuit ndhukung ana.

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

Vim kanthi dhukungan YAML kanggo Kubernetes

Ringkesan

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

PS saka penerjemah

Lan ana vikube, vim-kubernetes ΠΈ vimkubectl.

Waca uga ing blog kita:

Source: www.habr.com

Add a comment