Kubernetes uchun YAML yordami bilan Vim

Eslatma. tarjima.: Asl maqola avval CoreOS va Heptio kabi kompaniyalarda ishlagan, shuningdek, Kubernetes alb-ingress-controller hammuallifi boʻlgan VMware meʼmori Josh Rosso tomonidan yozilgan. Muallif hatto g'alaba qozongan bulutlilar davrida ham vimni afzal ko'radigan "eski maktab" operatsion muhandislari uchun juda foydali bo'lishi mumkin bo'lgan kichik retsepti bilan o'rtoqlashadi.

Kubernetes uchun YAML yordami bilan Vim

Vim-da Kubernetes uchun YAML manifestlarini yozish kerakmi? Ushbu spetsifikatsiyada keyingi maydon qayerda bo'lishi kerakligini aniqlash uchun son-sanoqsiz soatlarni sarfladingizmi? Yoki farqni tezda eslatib qo'yishni qadrlaysiz args и command? Yaxshi xabar bor! Vim-ga ulanish oson yaml-til-serveravtomatik yakunlash, tekshirish va boshqa qulayliklarni olish. Ushbu maqolada biz buning uchun til server mijozini qanday sozlash haqida gapiramiz.

(Asl maqola ham video bormi, bu erda muallif suhbatlashadi va materialning mazmunini namoyish etadi.)

Til serveri

Til serverlari (til serverlari) muharrirlar va IDE-larga dasturlash tillarining imkoniyatlari haqida gapiring, ular uchun ular maxsus protokol yordamida bir-biri bilan o'zaro ta'sir qiladi - Til serveri protokoli (LSP). Bu ajoyib yondashuv, chunki u bitta dasturga bir vaqtning o'zida ko'plab muharrirlarga/IDElarga ma'lumotlarni taqdim etish imkonini beradi. Menda allaqachon bor yozgan atrofida gopls - Golang uchun til serveri - va undan qanday foydalanish mumkin energiya. Kubernetes uchun YAML-da avtomatik to'ldirishni olish bosqichlari o'xshash.

Kubernetes uchun YAML yordami bilan Vim

Vim tavsiflangan tarzda ishlashi uchun siz til server mijozini o'rnatishingiz kerak bo'ladi. Men bilgan ikkita usul LanguageClient-neovim и coc.vim. Maqolada men ko'rib chiqaman coc.vim - Bu ayni paytda eng mashhur plagin. orqali o'rnatishingiz mumkin vim-vilka:

" 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'}

Boshlash uchun coc (va shuning uchun yaml-language-server) node.js o'rnatilishini talab qiladi:

curl -sL install-node.now.sh/lts | bash

qachon coc.vim sozlangan bo'lsa, server kengaytmasini o'rnating coc-yaml vim dan:

:CocInstall coc-yaml

Kubernetes uchun YAML yordami bilan Vim

Nihoyat, siz konfiguratsiyadan boshlashni xohlaysiz coc-vim, taqdim etdi misol sifatida. Xususan, u kombinatsiyani faollashtiradi + bo'sh joy avtoto'ldirishni chaqirish uchun.

Yaml-language-server aniqlashni sozlash

ekan coc yaml-language-serverdan foydalanishi mumkin bo'lsa, YAML fayllarini tahrirlashda Kubernetes-dan sxemani yuklashni so'rash kerak. Bu tahrirlash orqali amalga oshiriladi coc-config:

:CocConfig

Konfiguratsiyada siz qo'shishingiz kerak bo'ladi kubernetes barcha fayllar uchun yaml. Men qo'shimcha ravishda til serveridan foydalanaman golangshuning uchun mening umumiy konfiguratsiyam shunday ko'rinadi:

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

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

kubernetes — til serveriga Kubernetes sxemasini quyidagi URLda belgilangan URLdan yuklab olishni aytadigan ajratilgan maydon. bu doimiy. yaml.schemas qo'shimcha sxemalarni qo'llab-quvvatlash uchun kengaytirilishi mumkin - batafsil ma'lumot uchun qarang tegishli hujjatlar.

Endi siz YAML faylini yaratishingiz va avtoto'ldirishdan foydalanishni boshlashingiz mumkin. Bosish + bo'sh joy (yoki vim-da sozlangan boshqa kombinatsiya) mavjud kontekstga muvofiq mavjud maydonlar va hujjatlarni ko'rsatishi kerak:

Kubernetes uchun YAML yordami bilan Vim
Bu yerda ishlaydi +bo'sh joy, chunki men sozlaganman inoremap <silent><expr> <c-space> coc#refresh(). Agar buni qilmagan bo'lsangiz, qarang coc.nvim README misol konfiguratsiyasi uchun.

Kubernetes API versiyasini tanlash

Ushbu yozish paytida yaml-til-server Kubernetes 1.14.0 sxemalari bilan jo'natiladi. Men sxemani dinamik ravishda tanlashning yo'lini topa olmadim, shuning uchun men ochdim tegishli GitHub muammosi. Yaxshiyamki, til serveri shriftda yozilganligi sababli, versiyani qo'lda o'zgartirish juda oson. Buning uchun faqat faylni toping server.ts.

Uni kompyuteringizda aniqlash uchun YAML faylini vim bilan oching va jarayonni toping 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

Biz uchun tegishli jarayon 2380-protsessdir: bu vim YAML faylini tahrirlashda foydalanadi.

Ko'rib turganingizdek, fayl ichida joylashgan /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Faqat qiymatni o'zgartirish orqali uni tahrirlang KUBERNETES_SCHEMA_URL, masalan, 1.17.0 versiyasi uchun:

// 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";

Amaldagi versiyaga qarab coc-yaml Koddagi o'zgaruvchining joylashuvi farq qilishi mumkin. Iltimos, men omborni o'zgartirganimni ham unutmang garethr haqida instrumenta. Shunday ko'rinadi garethr u erda qo'llab-quvvatlovchi sxemalarga o'tdi.

O'zgartirish kuchga kirganligini tekshirish uchun [Kubernetesning oldingi versiyalarida] ilgari bo'lmagan maydon paydo bo'lganligini tekshiring. Masalan, K8s 1.14 uchun diagrammada yo'q edi startupProbe:

Kubernetes uchun YAML yordami bilan Vim

Xulosa

Umid qilamanki, bu imkoniyat men kabi sizni ham xursand qiladi. YAMLing muborak! Maqolada keltirilgan yordam dasturlarini yaxshiroq tushunish uchun ushbu omborlarni ko'rib chiqing:

Tarjimondan PS

Va yana bor vikube, vim-kubernetes и vimkubectl.

Shuningdek, bizning blogimizda o'qing:

Manba: www.habr.com

a Izoh qo'shish