Kubernetes အတွက် YAML ပံ့ပိုးမှုဖြင့် Vim

မှတ်ချက်။ ဘာသာပြန်မူရင်းဆောင်းပါးကို CoreOS နှင့် Heptio ကဲ့သို့သော ကုမ္ပဏီများတွင် ယခင်က လုပ်ဆောင်ခဲ့သော VMware မှ ဗိသုကာပညာရှင် Josh Rosso မှ ရေးသားခဲ့ပြီး Kubernetes alb-ingress-controller ၏ တွဲဖက်ရေးသားသူလည်းဖြစ်သည်။ စာရေးသူသည် အောင်မြင်သော cloud ဇာတိခေတ်တွင်ပင် vim ကြိုက်နှစ်သက်သော "ကျောင်းဟောင်း" လည်ပတ်အင်ဂျင်နီယာများအတွက် အလွန်အသုံးဝင်နိုင်သော ဟင်းချက်နည်းလေးတစ်ခုကို မျှဝေထားပါသည်။

Kubernetes အတွက် YAML ပံ့ပိုးမှုဖြင့် Vim

vim တွင် Kubernetes အတွက် YAML manifests ကိုရေးနေပါသလား။ ဤသတ်မှတ်ချက်တွင် နောက်အကွက်သည် မည်သည့်နေရာတွင်ရှိသင့်သည်ကို အဖြေရှာရန် နာရီပေါင်းမရေမတွက်နိုင်အောင် ကြိုးစားနေပါသလား။ သို့မဟုတ် ခြားနားချက်ကို အမြန်သတိပေးချက်ကို သင်သဘောပေါက်ပေမည်။ args и command? သတင်းကောင်းရှိပါတယ်! Vim သည် လင့်ခ်ချိတ်ရန် လွယ်ကူသည်။ yaml-ဘာသာစကား-ဆာဗာအလိုအလျောက် ပြီးစီးမှု၊ တရားဝင်မှုနှင့် အခြားအဆင်ပြေမှုများ ရရှိရန်။ ဤဆောင်းပါးတွင် ၎င်းအတွက် ဘာသာစကားဆာဗာ client တစ်ခုကို မည်သို့သတ်မှတ်ရမည်ကို ဆွေးနွေးပါမည်။

(မူရင်းဆောင်းပါးလည်း ပါသည်။ ဗီဒီယိုရှိပါသလား။စာရေးဆရာက အကြောင်းအရာကို သရုပ်ပြပြီး ဆွေးနွေးသည်။)

ဘာသာစကားဆာဗာ

ဘာသာစကားဆာဗာများ (ဘာသာစကားဆာဗာများ) အထူးပရိုတိုကောကို အသုံးပြု၍ တည်းဖြတ်သူများနှင့် IDE များထံသို့ ပရိုဂရမ်းမင်းဘာသာစကားများ၏ စွမ်းရည်များအကြောင်း ပြောဆိုပါ၊ ဘာသာစကား server protocol ကို (LSP)။ ၎င်းသည် အကောင်အထည်ဖော်မှုတစ်ခုအား တည်းဖြတ်သူ/IDE အများအပြားထံ တစ်ပြိုင်နက်တည်း ဒေတာပံ့ပိုးပေးနိုင်သောကြောင့် ၎င်းသည် ကောင်းမွန်သောချဉ်းကပ်မှုတစ်ခုဖြစ်သည်။ ငါရှိပြီးသား ငါရေးသားခဲ့သည် အကွောငျး gopls - Golang အတွက် ဘာသာစကားဆာဗာ - နှင့် ၎င်းကို မည်သို့အသုံးပြုနိုင်မည်နည်း။ vim. Kubernetes အတွက် YAML တွင် အလိုအလျောက် ဖြည့်သွင်းရန် အဆင့်များ သည် အလားတူဖြစ်သည်။

Kubernetes အတွက် YAML ပံ့ပိုးမှုဖြင့် Vim

vim တွင်ဖော်ပြထားသောနည်းလမ်းအတိုင်းအလုပ်လုပ်ရန်အတွက်၊ သင်သည် ဘာသာစကားဆာဗာဖောက်သည်တစ်ခုကို ထည့်သွင်းရန် လိုအပ်မည်ဖြစ်သည်။ ကျွန်တော်သိတဲ့ နည်းနှစ်နည်းပါ။ LanguageClient-neovim и coc.vim. ဆောင်းပါးမှာ ကျွန်တော် စဉ်းစားပါမယ်။ coc.vim - ဤသည်မှာ ယခုအချိန်တွင် လူကြိုက်အများဆုံး ပလပ်အင်ဖြစ်သည်။ မှတဆင့်သင်တပ်ဆင်နိုင်သည်။ vim-ပလပ်:

" 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

နောက်ဆုံးအနေနဲ့၊ သင်က configuration နဲ့စတင်ချင်ဖွယ်ရှိပါလိမ့်မယ်။ coc-vim၊ တင်ပြသည် ဥပမာတစ်ခုအနေနဲ့. အထူးသဖြင့်၊ ၎င်းသည်ပေါင်းစပ်မှုကိုအသက်ဝင်စေသည်။ + နေရာ autocompletion ခေါ်ရန်။

yaml-language-server detection ကို စနစ်ထည့်သွင်းခြင်း။

ထို coc yaml-language-server ကိုသုံးနိုင်သည်၊ YAML ဖိုင်များကိုတည်းဖြတ်သောအခါ Kubernetes မှ schema ကိုဖွင့်ရန်တောင်းဆိုရန်လိုအပ်သည်။ တည်းဖြတ်ခြင်းဖြင့် လုပ်ဆောင်သည်။ coc-config:

:CocConfig

configuration တွင်သင်ထည့်သွင်းရန်လိုအပ်လိမ့်မည်။ kubernetes ဖိုင်အားလုံးအတွက် yaml. ကျွန်ုပ်သည် ဘာသာစကားဆာဗာကို ထပ်မံ၍ အသုံးပြုပါသည်။ golangထို့ကြောင့် ကျွန်ုပ်၏ ယေဘူယျ config သည် ဤကဲ့သို့ ဖြစ်သည်-

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

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

kubernetes — သတ်မှတ်ထားသော URL မှ Kubernetes schema ကို ဒေါင်းလုဒ်လုပ်ရန် ဘာသာစကားဆာဗာအား သီးသန့်အကွက်တစ်ခု ဤအဆက်မပြတ်. yaml.schemas နောက်ထပ်အစီအစဥ်များကိုပံ့ပိုးရန် တိုးချဲ့နိုင်သည် - အသေးစိတ်အချက်အလက်များအတွက် ကြည့်ပါ။ သက်ဆိုင်ရာစာရွက်စာတမ်း.

ယခု သင်သည် YAML ဖိုင်ကို ဖန်တီးနိုင်ပြီး အလိုအလျောက် ဖြည့်သွင်းခြင်းကို စတင်အသုံးပြုနိုင်ပါသည်။ နှိပ်တယ်။ + နေရာ (သို့မဟုတ် vim တွင် ပြင်ဆင်ထားသော အခြားပေါင်းစပ်မှု) သည် လက်ရှိအခြေအနေအရ ရရှိနိုင်သော အကွက်များနှင့် စာရွက်စာတမ်းများကို ပြသသင့်သည်-

Kubernetes အတွက် YAML ပံ့ပိုးမှုဖြင့် Vim
ဒီမှာအလုပ်လုပ်တယ်။ ငါစီစဉ်ထားသောကြောင့် +space inoremap <silent><expr> <c-space> coc#refresh(). ဒါကို မလုပ်ရသေးရင် ကြည့်ပါ။ coc.nvim README ဥပမာ configuration တစ်ခုအတွက်။

Kubernetes API ဗားရှင်းကို ရွေးချယ်ခြင်း။

ဤရေးသားမှုအရ yaml-language-server သည် Kubernetes 1.14.0 schemas ဖြင့် ပို့ဆောင်ပါသည်။ schema တစ်ခုကို dynamically ရွေးရန် နည်းလမ်းရှာမတွေ့သောကြောင့် ဖွင့်လိုက်ပါသည်။ သက်ဆိုင်ရာ 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 အဲဒီမှာ supporting circuits တွေ ပြောင်းသွားတယ်။

အပြောင်းအလဲက အကျိုးသက်ရောက်မှုရှိမရှိ စစ်ဆေးရန်၊ [ Kubernetes ၏ ယခင်ဗားရှင်းများ] တွင် ယခင်က မရှိခဲ့သော အကွက်တစ်ခု ပေါ်လာခြင်းရှိမရှိ ကြည့်ပါ။ ဥပမာအားဖြင့်၊ K8s 1.14 အတွက် ပုံကြမ်းတွင် မရှိပါ။ startupProbe:

Kubernetes အတွက် YAML ပံ့ပိုးမှုဖြင့် Vim

အကျဉ်းချုပ်

ဒီအခွင့်အရေးက ငါလုပ်ခဲ့သလောက် မင်းကျေနပ်မယ်လို့ ငါမျှော်လင့်တယ်။ ပျော်ရွှင်ဖွယ် YAMLing။ ဆောင်းပါးတွင်ဖော်ပြထားသော utilities များကို ပိုမိုကောင်းမွန်စွာနားလည်ရန် ဤသိုလှောင်ရုံများကို စစ်ဆေးကြည့်ရှုပါ-

PS ဘာသာပြန်မှ

နောက်ပြီးတော့လည်း ရှိပါတယ်။ Vikube, vim-kubernetes и vimkubectl.

ကျွန်ုပ်တို့၏ဘလော့ဂ်တွင်လည်းဖတ်ပါ

source: www.habr.com

မှတ်ချက် Add