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.

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 , 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 , 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 - (LSP) Iki minangka pendekatan sing apik, amarga ngidini siji implementasine nyedhiyakake data menyang sawetara editor / IDE bebarengan. Aku wis bab — server basa kanggo Golang — lan carane bisa digunakake ing Langkah-langkah kanggo ngrampungake otomatis YAML kanggo Kubernetes padha.

Kanggo nggawe vim bisa digunakake kanthi cara sing diterangake, sampeyan kudu nginstal klien server basa. Loro cara sing aku ngerti yaiku и . Ing artikel aku bakal nimbang coc.vim - minangka plugin sing paling populer saiki. Sampeyan bisa nginstal liwat :
" 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 
Pungkasan, sampeyan bisa uga pengin miwiti konfigurasi. coc-vim, diwenehi . 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 . yaml.schemas bisa ditambahi kanggo ndhukung rencana tambahan - ndeleng rincian ing .
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:

Kerja ing kene + spasi amarga aku nyetel inoremap <silent><expr> <c-space> coc#refresh()Yen sampeyan durung nindakake iki, ndeleng 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 . 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-serverProses 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. :

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:
- coc-vim: ;
- coc-yaml: .
PS saka penerjemah
Lan ana , и .
Waca uga ing blog kita:
- «";
- «".
Source: www.habr.com
