Kubernetes සඳහා YAML සහාය සමඟ Vim

සටහන. පරිවර්තනය.: මුල් ලිපිය ලියා ඇත්තේ මීට පෙර CoreOS සහ Heptio වැනි සමාගම්වල සේවය කළ සහ Kubernetes alb-ingress-controller හි සම-කර්තෘ වන VMware හි ගෘහ නිර්මාණ ශිල්පියෙකු වන Josh Rosso විසිනි. ජයග්රාහී වලාකුළු ස්වදේශික යුගයේ පවා vim කැමති "පැරණි පාසල්" මෙහෙයුම් ඉංජිනේරුවන් සඳහා ඉතා ප්රයෝජනවත් විය හැකි කුඩා වට්ටෝරුවක් කතුවරයා බෙදා ගනී.

Kubernetes සඳහා YAML සහාය සමඟ Vim

Vim හි Kubernetes සඳහා YAML මැනිෆෙස්ට් ලිවීම? මෙම පිරිවිතරයේ ඊළඟ ක්ෂේත්‍රය තිබිය යුත්තේ කොතැනදැයි සොයා බැලීමට ගණන් කළ නොහැකි පැය ගණනක් ගත කළාද? නැතහොත් වෙනස පිළිබඳ ඉක්මන් මතක් කිරීමක් ඔබ අගය කරනු ඇත args и command? හොඳ ආරංචියක් තිබේ! Vim වෙත සම්බන්ධ කිරීම පහසුය yaml-language-serverස්වයංක්‍රීයව සම්පූර්ණ කිරීම, වලංගු කිරීම සහ අනෙකුත් පහසුව ලබා ගැනීමට. මෙම ලිපියෙන් අපි මේ සඳහා භාෂා සේවාදායක සේවාදායකයක් සකසන්නේ කෙසේද යන්න ගැන කතා කරමු.

(මුල් ලිපියත් වීඩියෝ එකක් තියෙනවද, කතුවරයා ද්‍රව්‍යයේ අන්තර්ගතය කතා කරන සහ නිරූපණය කරන තැන.)

භාෂා සේවාදායකය

භාෂා සේවාදායකයන් (භාෂා සේවාදායකයන්) සංස්කාරකවරුන්ට සහ IDE වලට ක්‍රමලේඛන භාෂා වල හැකියාවන් ගැන කතා කරන්න, ඒ සඳහා ඔවුන් විශේෂ ප්‍රොටෝකෝලයක් භාවිතයෙන් එකිනෙකා සමඟ අන්තර් ක්‍රියා කරයි - භාෂා සේවාදායක ප්‍රොටොකෝලය (LSP). මෙය එක් ක්‍රියාත්මක කිරීමකට බොහෝ සංස්කාරක/අයිඩීඊ වෙත එකවර දත්ත සැපයීමට ඉඩ දෙන බැවින් මෙය විශිෂ්ට ප්‍රවේශයකි. මම දැනටමත් තියෙනවා ලිවීය ගැන gopls - Golang සඳහා භාෂා සේවාදායකයක් - සහ එය භාවිතා කළ හැකි ආකාරය විම්. Kubernetes සඳහා YAML හි ස්වයං සම්පූර්ණ කිරීම ලබා ගැනීමේ පියවර සමාන වේ.

Kubernetes සඳහා YAML සහාය සමඟ Vim

vim විස්තර කර ඇති ආකාරයට ක්‍රියා කිරීමට නම්, ඔබට භාෂා සේවාදායක සේවාදායකයක් ස්ථාපනය කිරීමට අවශ්‍ය වනු ඇත. මම දන්න ක්‍රම දෙක තමයි LanguageClient-neovim и coc.vim. ලිපියෙන් මම සලකා බලමි coc.vim - මේ මොහොතේ වඩාත්ම ජනප්‍රිය ප්ලගිනය මෙයයි. ඔබට එය හරහා ස්ථාපනය කළ හැකිය 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'}

ආරම්භය සඳහා coc (සහ ඒ අනුව yaml-language-server) node.js ස්ථාපනය කිරීමට අවශ්‍ය වනු ඇත:

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

කවදාද? coc.vim වින්‍යාස කර ඇත, සේවාදායක දිගුව ස්ථාපනය කරන්න coc-yaml vim වෙතින්:

:CocInstall coc-yaml

Kubernetes සඳහා YAML සහාය සමඟ Vim

අවසාන වශයෙන්, ඔබට බොහෝ විට වින්‍යාසය සමඟ ආරම්භ කිරීමට අවශ්‍ය වනු ඇත coc-vim, ඉදිරිපත් කරන ලදී උදාහරණයක් ලෙස. විශේෂයෙන්ම, එය සංයෝජනය සක්රිය කරයි +අවකාශය ස්වයං සම්පූර්ණ කිරීම ඇමතීමට.

yaml-language-server අනාවරණය සැකසීම

බව coc yaml-language-server භාවිතා කළ හැක, YAML ගොනු සංස්කරණය කිරීමේදී එය Kubernetes වෙතින් යෝජනා ක්‍රමය පූරණය කිරීමට ඉල්ලා සිටිය යුතුය. මෙය සංස්කරණය කිරීම මගින් සිදු කෙරේ coc-config:

:CocConfig

වින්යාසය තුළ ඔබට එකතු කිරීමට අවශ්ය වනු ඇත kubernetes සියලුම ගොනු සඳහා yaml. මම අමතර වශයෙන් භාෂා සේවාදායකයක් භාවිතා කරමි golangඑබැවින් මගේ සාමාන්‍ය වින්‍යාසය මේ ආකාරයට පෙනේ:

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

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

kubernetes — අර්ථ දක්වා ඇති URL එකෙන් Kubernetes schema බාගත කරන ලෙස භාෂා සේවාදායකයට පවසන වෙන් කළ ක්ෂේත්‍රයක් මෙම නියතය. yaml.schemas අමතර යෝජනා ක්‍රම සඳහා සහාය වීම සඳහා පුළුල් කළ හැක - වැඩි විස්තර සඳහා, බලන්න අදාළ ලියකියවිලි.

දැන් ඔබට YAML ගොනුවක් සාදා ස්වයං සම්පුර්ණ කිරීම භාවිතා කිරීම ආරම්භ කළ හැක. එබීම +අවකාශය (හෝ vim හි වින්‍යාස කර ඇති වෙනත් සංයෝජනයක්) වත්මන් සන්දර්භය අනුව පවතින ක්ෂේත්‍ර සහ ලේඛන පෙන්විය යුතුය:

Kubernetes සඳහා YAML සහාය සමඟ Vim
මෙහි වැඩ කරයි +අවකාශය මම වින්‍යාස කළ නිසා inoremap <silent><expr> <c-space> coc#refresh(). ඔබ මෙය කර නොමැති නම්, බලන්න coc.nvim README උදාහරණ වින්‍යාසයක් සඳහා.

Kubernetes API අනුවාදය තේරීම

මෙම ලියන විට, yaml-language-server නැව්ගත කරන්නේ Kubernetes 1.14.0 schemas සමඟිනි. මම ස්කීමාවක් ගතිකව තෝරා ගැනීමට ක්‍රමයක් සොයා නොගත් නිසා මම විවෘත කළෙමි අනුරූප GitHub ගැටළුව. වාසනාවකට මෙන්, භාෂා සේවාදායකය යතුරු ලියනයකින් ලියා ඇති බැවින්, අනුවාදය අතින් වෙනස් කිරීම තරමක් පහසුය. මෙය සිදු කිරීම සඳහා, ගොනුව සොයා ගන්න server.ts.

එය ඔබගේ යන්ත්‍රයේ හඳුනා ගැනීමට, හුදෙක් YAML ගොනුව vim සමඟ විවෘත කර ක්‍රියාවලිය සොයා ගන්න 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

අපට අදාළ ක්‍රියාවලිය 2380 ක්‍රියාවලියයි: YAML ගොනුවක් සංස්කරණය කිරීමේදී vim භාවිතා කරන්නේ එයයි.

ඔබට පහසුවෙන් පෙනෙන පරිදි, ගොනුව පිහිටා ඇත /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. අගය වෙනස් කිරීමෙන් පමණක් එය සංස්කරණය කරන්න KUBERNETES_SCHEMA_URL, උදාහරණයක් ලෙස, 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";

භාවිතා කරන ලද අනුවාදය මත පදනම්ව coc-yaml කේතයේ විචල්‍යයේ පිහිටීම වෙනස් විය හැක. මම ගබඩාව වෙනස් කළ බව ද කරුණාවෙන් සලකන්න garethr මත instrumenta. බව පෙනේ garethr එහි ආධාරක පරිපථ වෙත මාරු විය.

වෙනස ක්‍රියාත්මක වී ඇත්දැයි පරීක්ෂා කිරීමට, [කුබර්නෙටස් හි පෙර අනුවාදවල] පෙර නොතිබූ ක්ෂේත්‍රයක් දිස්වන්නේ දැයි බලන්න. උදාහරණයක් ලෙස, K8s 1.14 සඳහා රූප සටහනේ නැත startupProbe:

Kubernetes සඳහා YAML සහාය සමඟ Vim

සාරාංශය

මෙම අවස්ථාව මා මෙන් ඔබ සතුටු කරනු ඇතැයි මම බලාපොරොත්තු වෙමි. සුභ YAMLing! ලිපියේ සඳහන් කර ඇති උපයෝගිතා හොඳින් අවබෝධ කර ගැනීම සඳහා මෙම ගබඩාවන් පරීක්ෂා කිරීමට වග බලා ගන්න:

පරිවර්තකගෙන් PS

ඒ වගේම තියෙනවා vikube, vim-kubernetes и vimkubectl.

අපගේ බ්ලොග් අඩවියේ ද කියවන්න:

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න