Catetan. narjamahkeun.: Artikel aslina ditulis ku Josh Rosso, arsiték di VMware anu saméméhna digawé di pausahaan kayaning CoreOS na Heptio, sarta ogé ko-panulis Kubernetes alb-ingress-controller. Panulis ngabagi resep alit anu tiasa mangpaat pisan pikeun insinyur operasi "sakola heubeul" anu resep vim sanajan dina jaman pribumi awan anu unggul.
Nulis YAML manifests pikeun Kubernetes dina vim? Nyéépkeun jam-jam anu teu kaétang nyobian terang dimana lapangan salajengna kedah aya dina spésifikasi ieu? Atawa meureun anjeun bakal ngahargaan panginget gancang bédana args и command? Aya warta alus! Vim gampang dihubungkeun yaml-basa-serverpikeun meunangkeun parantosan otomatis, validasi jeung conveniences séjén. Dina artikel ieu kami bakal ngobrol ngeunaan kumaha carana nyetél klien server basa pikeun ieu.
(Artikel aslina ogé aya video na, dimana pangarang ngobrolkeun sareng nunjukkeun eusi bahan.)
Pangladén basa
Pangladén basa (server basa) ngobrol ngeunaan kamampuan basa pamrograman pikeun éditor sareng IDE, dimana aranjeunna saling berinteraksi nganggo protokol khusus - Protokol Server Bahasa (LSP). Ieu pendekatan hébat sabab ngamungkinkeun hiji palaksanaan nyadiakeun data ka loba éditor / IDE sakaligus. Kuring geus geus kuring nulis kira-kira gopls - server basa pikeun Golang - jeung kumaha eta bisa dipaké dina vim. Léngkah-léngkah pikeun ngalengkepan otomatis dina YAML pikeun Kubernetes sami.
Pikeun vim tiasa dianggo dina cara anu dijelaskeun, anjeun kedah pasang klien pangladén basa. Dua metode anu kuring terang nyaéta LanguageClient-neovim и coc.vim. Dina artikel kuring bakal mertimbangkeun coc.vim - Ieu mangrupikeun plugin anu paling populér ayeuna. Anjeun tiasa install deui via vim-colokan:
" 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'}
Pikeun ngamimitian coc (sahingga yaml-language-server) ngabutuhkeun node.js dipasang:
curl -sL install-node.now.sh/lts | bash
iraha coc.vim ngonpigurasi, install extension server coc-yaml ti vim:
:CocInstall coc-yaml
Tungtungna, anjeun paling dipikaresep hoyong mimitian ku konfigurasi coc-vim, dibere salaku conto. Khususna, éta ngaktifkeun kombinasi + rohangan pikeun nelepon autocompletion.
Nyetél deteksi yaml-basa-server
yen coc tiasa nganggo yaml-language-server, éta kedah dipenta pikeun ngamuat skéma tina Kubernetes nalika ngédit file YAML. Hal ieu dilakukeun ku ngédit coc-config:
:CocConfig
Dina konfigurasi anjeun bakal kedah nambahkeun kubernetes pikeun sakabéh file yaml. Kuring Sajaba ngagunakeun server basa pikeun golangjanten config umum abdi sapertos kieu:
kubernetes — widang ditangtayungan nu ngabejaan server basa pikeun ngundeur skéma Kubernetes tina URL nu ditetepkeun dina konstanta ieu. yaml.schemas bisa dimekarkeun pikeun ngarojong schemes tambahan - pikeun leuwih rinci, tingali dokuméntasi relevan.
Ayeuna anjeun tiasa nyiptakeun file YAML sareng mimitian nganggo autocompletion. Mencétan + rohangan (atanapi kombinasi séjén anu dikonpigurasi dina vim) kedah nunjukkeun widang sareng dokuméntasi anu sayogi dumasar kana kontéks ayeuna:
Gawé di dieu + spasi sabab kuring ngonpigurasi inoremap <silent><expr> <c-space> coc#refresh(). Upami anjeun henteu acan ngalakukeun ieu, tingali coc.nvim README pikeun konfigurasi conto.
Milih versi API Kubernetes
Nalika tulisan ieu, yaml-basa-server dikirimkeun ku skema Kubernetes 1.14.0. Abdi henteu mendakan cara pikeun milih skema sacara dinamis, janten kuring dibuka masalah GitHub pakait. Untungna, saprak server basa ditulis dina typescript, éta rada gampang pikeun ngarobah versi sacara manual. Jang ngalampahkeun ieu, ngan manggihan file server.ts.
Pikeun ngadeteksi éta dina mesin anjeun, kantun buka file YAML nganggo vim sareng milari prosésna yaml-language-server.
Prosés anu relevan pikeun kami nyaéta prosés 2380: éta anu dianggo ku vim nalika ngédit file YAML.
Sakumaha anjeun tiasa tingali, file aya dina /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Ngan edit ku cara ngarobah nilai KUBERNETES_SCHEMA_URL, contona, pikeun 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 kana versi dipaké coc-yaml Lokasi variabel dina kode bisa rupa-rupa. Punten dicatet ogé yén kuring ngarobih gudang tina garethr dina instrumenta. Sigana éta garethr switched pikeun ngarojong sirkuit dinya.
Pikeun mariksa yén parobihan parantos dilaksanakeun, tingali upami aya widang anu teu aya sateuacanna [dina versi Kubernetes sateuacana]. Contona, dina diagram pikeun K8s 1.14 euweuh ngamimitianProbe:
singgetan
Abdi ngarepkeun kasempetan ieu ngabagéakeun anjeun sapertos kuring. Wilujeng YAMLing! Pastikeun pikeun pariksa repositori ieu pikeun langkung ngartos utilitas anu disebatkeun dina tulisan: