Vim kalayan dukungan YAML pikeun Kubernetes

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.

Vim kalayan dukungan YAML pikeun Kubernetes

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.

Vim kalayan dukungan YAML pikeun Kubernetes

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

Vim kalayan dukungan YAML pikeun Kubernetes

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:

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

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

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:

Vim kalayan dukungan YAML pikeun Kubernetes
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.

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

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:

Vim kalayan dukungan YAML pikeun Kubernetes

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:

PS ti penerjemah

Sareng aya ogé vikube, vim-kubernetes и vimkubectl.

Baca ogé dina blog urang:

sumber: www.habr.com

Tambahkeun komentar