Kubernetes üçün YAML dəstəyi ilə Vim

Qeyd. tərcümə.: Orijinal məqaləni əvvəllər CoreOS və Heptio kimi şirkətlərdə çalışmış VMware-in memarı və eyni zamanda Kubernetes alb-ingress-controller-in həmmüəllifi Coş Rosso yazmışdır. Müəllif hətta zəfər bulud doğma dövründə də vim-ə üstünlük verən “köhnə məktəb” əməliyyat mühəndisləri üçün çox faydalı ola biləcək kiçik bir resepti paylaşır.

Kubernetes üçün YAML dəstəyi ilə Vim

Vim-də Kubernetes üçün YAML manifestləri yazmaq? Bu spesifikasiyada növbəti sahənin harada olması lazım olduğunu anlamaq üçün saysız-hesabsız saatlar sərf etdiniz? Və ya bəlkə fərqi tez xatırlatmağı qiymətləndirəcəksiniz args и command? Yaxşı xəbər var! Vim ilə əlaqə qurmaq asandır yaml-dil-serveravtomatik tamamlama, doğrulama və digər rahatlıqlar əldə etmək. Bu yazıda bunun üçün bir dil server müştərisini necə qurmaq barədə danışacağıq.

(Orijinal məqalə də videosu var, burada müəllif söhbət edir və materialın məzmununu nümayiş etdirir.)

Dil serveri

Dil serverləri (dil serverləri) redaktorlara və IDE-lərə proqramlaşdırma dillərinin imkanları haqqında danışmaq, bunun üçün xüsusi protokoldan istifadə edərək bir-biri ilə qarşılıqlı əlaqədə olmaq - Dil Server Protokolu (LSP). Bu əla yanaşmadır, çünki o, bir tətbiqə eyni anda bir çox redaktor/İDE-yə məlumat verməyə imkan verir. Məndə artıq var yazdı haqqında gopls - Golang üçün dil serveri - və ondan necə istifadə oluna bilər cəldlik. Kubernetes üçün YAML-də avtomatik tamamlama əldə etmək üçün addımlar oxşardır.

Kubernetes üçün YAML dəstəyi ilə Vim

Vim-in təsvir olunan şəkildə işləməsi üçün bir dil server müştərisini quraşdırmalısınız. Bildiyim iki üsuldur LanguageClient-neovim и coc.vim. Məqalədə nəzərdən keçirəcəyəm coc.vim - Bu, hazırda ən populyar plagindir. vasitəsilə quraşdıra bilərsiniz vim-fiş:

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

Başlamaq üçün coc (və beləliklə, yaml-language-server) node.js-in quraşdırılmasını tələb edəcək:

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

Zaman coc.vim konfiqurasiya edildikdə, server genişləndirilməsini quraşdırın coc-yaml vim-dən:

:CocInstall coc-yaml

Kubernetes üçün YAML dəstəyi ilə Vim

Nəhayət, çox güman ki, konfiqurasiya ilə başlamaq istəyəcəksiniz coc-vim, təqdim etdi misal kimi. Xüsusilə, birləşməni aktivləşdirir +boşluq avtomatik tamamlamağa zəng etmək.

yaml-dil-server aşkarlanmasının qurulması

O coc yaml-language-server istifadə edə bilər, YAML fayllarını redaktə edərkən ondan Kubernetes-dən sxemi yükləməyi xahiş etmək lazımdır. Bu redaktə etməklə həyata keçirilir coc-config:

:CocConfig

Konfiqurasiyada siz əlavə etməlisiniz kubernetes bütün fayllar üçün yaml. Mən əlavə olaraq dil serverindən istifadə edirəm golangmənim ümumi konfiqurasiyam belə görünür:

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

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

kubernetes — dil serverinə Kubernetes sxemini burada müəyyən edilmiş URL-dən yükləməyi bildirən ehtiyat sahə bu daimi. yaml.schemas əlavə sxemləri dəstəkləmək üçün genişləndirilə bilər - daha ətraflı məlumat üçün baxın müvafiq sənədlər.

İndi YAML faylı yarada və avtomatik tamamlamadan istifadə etməyə başlaya bilərsiniz. basaraq +boşluq (və ya vim-də konfiqurasiya edilmiş digər birləşmə) mövcud kontekstə uyğun olaraq mövcud sahələri və sənədləri göstərməlidir:

Kubernetes üçün YAML dəstəyi ilə Vim
Burada işləyir +boşluq çünki konfiqurasiya etmişəm inoremap <silent><expr> <c-space> coc#refresh(). Bunu etməmisinizsə, baxın coc.nvim README konfiqurasiya nümunəsi üçün.

Kubernetes API versiyası seçilir

Bu yazıya görə yaml-dil-server Kubernetes 1.14.0 sxemləri ilə göndərilir. Sxemi dinamik olaraq seçmək üçün bir yol tapmadım, ona görə də açdım müvafiq GitHub məsələsi. Xoşbəxtlikdən, dil serveri şriftlə yazıldığından, versiyanı əl ilə dəyişdirmək olduqca asandır. Bunu etmək üçün faylı tapmaq kifayətdir server.ts.

Bunu maşınınızda aşkar etmək üçün sadəcə olaraq YAML faylını vim ilə açın və prosesi tapın 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

Bizim üçün müvafiq proses 2380 prosesidir: YAML faylını redaktə edərkən vim-in istifadə etdiyi prosesdir.

Asanlıqla gördüyünüz kimi, fayl burada yerləşir /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Sadəcə dəyəri dəyişdirərək redaktə edin KUBERNETES_SCHEMA_URLməsələn, 1.17.0 versiyası üçün:

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

İstifadə olunan versiyadan asılı olaraq coc-yaml Kodda dəyişənin yeri fərqli ola bilər. Unutmayın ki, mən repozitoriyanı buradan dəyişmişəm garethr haqqında instrumenta. Deyəsən garethr orada dəstəkləyici sxemlərə keçdi.

Dəyişikliyin qüvvəyə mindiyini yoxlamaq üçün əvvəllər [Kubernetes-in əvvəlki versiyalarında] olmayan sahənin görünüb-görünmədiyinə baxın. Məsələn, K8s 1.14 üçün diaqramda yox idi startupProbe:

Kubernetes üçün YAML dəstəyi ilə Vim

Xülasə

Ümid edirəm ki, bu fürsət mənim kimi sizi də sevindirir. Xoşbəxt YAMLing! Məqalədə qeyd olunan yardım proqramlarını daha yaxşı başa düşmək üçün bu depoları yoxladığınızdan əmin olun:

Tərcüməçidən PS

Həm də var vikube, vim-kubernetes и vimkubectl.

Bloqumuzda da oxuyun:

Mənbə: www.habr.com

Добавить комментарий