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