Vim-ը YAML աջակցությամբ Kubernetes-ի համար

Նշում. թարգմ.Բնօրինակ հոդվածը գրել է Ջոշ Ռոսսոն՝ VMware-ի ճարտարապետ, ով նախկինում աշխատել է այնպիսի ընկերություններում, ինչպիսիք են CoreOS-ը և Heptio-ն, և նաև Kubernetes alb-ingress-controller-ի համահեղինակն է: Հեղինակը կիսվում է մի փոքրիկ բաղադրատոմսով, որը կարող է շատ օգտակար լինել «հին դպրոցի» օպերացիոն ինժեներների համար, ովքեր նախընտրում են vim-ը նույնիսկ հաղթական ամպի հայրենի դարաշրջանում:

Vim-ը YAML աջակցությամբ Kubernetes-ի համար

Kubernetes-ի համար YAML մանիֆեստներ գրել վիմում: Անհամար ժամեր եք ծախսել՝ փորձելով պարզել, թե որտեղ պետք է լինի հաջորդ դաշտը այս բնութագրում: Կամ գուցե դուք կգնահատեք տարբերության արագ հիշեցումը args и command? Լավ նորություն կա։ Vim-ին հեշտ է կապել yaml-language-serverավտոմատ լրացում, վավերացում և այլ հարմարություններ ստանալու համար: Այս հոդվածում մենք կխոսենք, թե ինչպես ստեղծել լեզվի սերվերի հաճախորդ դրա համար:

(Բնօրինակ հոդվածը նույնպես կա տեսանյութ, որտեղ հեղինակը խոսում և ցուցադրում է նյութի բովանդակությունը։)

Լեզվի սերվեր

Լեզուների սերվերներ (լեզու սերվերներ) Խոսեք ծրագրավորման լեզուների հնարավորությունների մասին խմբագիրներին և IDE-ներին, որոնց համար նրանք փոխազդում են միմյանց հետ՝ օգտագործելով հատուկ արձանագրություն. Լեզուների սերվերի արձանագրություն (LSP): Սա հիանալի մոտեցում է, քանի որ այն թույլ է տալիս մեկ իրականացմանը տվյալներ տրամադրել միանգամից բազմաթիվ խմբագիրների/IDE-ների: Ես արդեն ունեմ գրել է մոտ gopls - լեզվի սերվեր Golang-ի համար և ինչպես այն կարող է օգտագործվել եռանդ. Kubernetes-ի համար YAML-ում ավտոմատ լրացում ստանալու քայլերը նման են:

Vim-ը YAML աջակցությամբ Kubernetes-ի համար

Որպեսզի 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

Vim-ը YAML աջակցությամբ Kubernetes-ի համար

Ի վերջո, դուք, ամենայն հավանականությամբ, կցանկանաք սկսել կոնֆիգուրացիայից coc-vim, ներկայացված որպես օրինակ. Մասնավորապես, այն ակտիվացնում է համակցությունը +բացատ զանգահարել ավտոմատ լրացում:

Yaml-language-server-ի հայտնաբերման կարգավորում

Որ coc կարող է օգտագործել yaml-language-server, նրան պետք է խնդրել բեռնել սխեման Kubernetes-ից YAML ֆայլերը խմբագրելիս: Դա արվում է խմբագրման միջոցով coc-config:

:CocConfig

Կազմաձևում դուք պետք է ավելացնեք kubernetes բոլոր ֆայլերի համար yaml. Ես լրացուցիչ օգտագործում եմ լեզվի սերվեր golangԱյսպիսով, իմ ընդհանուր կազմաձևը հետևյալն է.

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

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

kubernetes — վերապահված դաշտ, որը թույլ է տալիս լեզվի սերվերին ներբեռնել Kubernetes սխեման նշված URL-ից այս հաստատունը. yaml.schemas կարող է ընդլայնվել՝ աջակցելու լրացուցիչ սխեմաներին - ավելի մանրամասն տե՛ս համապատասխան փաստաթղթեր.

Այժմ դուք կարող եք ստեղծել YAML ֆայլ և սկսել օգտագործել ավտոմատ լրացումը: Սեղմելով +բացատ (կամ այլ համակցություն, որը կազմաձևված է vim-ում) պետք է ցույց տա առկա դաշտերը և փաստաթղթերը՝ համաձայն ընթացիկ համատեքստի.

Vim-ը YAML աջակցությամբ Kubernetes-ի համար
+Space-ն աշխատում է այստեղ, քանի որ ես կարգավորել եմ inoremap <silent><expr> <c-space> coc#refresh(). Եթե ​​դուք չեք արել սա, տես coc.nvim README օրինակի կոնֆիգուրացիայի համար:

Ընտրելով Kubernetes API տարբերակը

Այս գրելու պահին yaml-language-server-ը առաքվում է Kubernetes 1.14.0 սխեմաներով: Ես չգտա սխեմա դինամիկ ընտրելու միջոց, ուստի բացեցի համապատասխան 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 պրոցեսն է. դա այն է, ինչ օգտագործում է vim-ը YAML ֆայլը խմբագրելիս:

Ինչպես հեշտությամբ կարող եք տեսնել, ֆայլը գտնվում է /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 այնտեղ անցավ օժանդակ սխեմաների:

Ստուգելու համար, որ փոփոխությունն ուժի մեջ է մտել, տեսեք՝ արդյոք հայտնվո՞ւմ է մի դաշտ, որը նախկինում չկար [Kubernetes-ի նախորդ տարբերակներում]: Օրինակ, K8s 1.14-ի դիագրամում չկար startupProbe:

Vim-ը YAML աջակցությամբ Kubernetes-ի համար

Ամփոփում

Հուսով եմ, որ այս հնարավորությունը ձեզ հաճելի կլինի նույնքան, որքան ինձ: Շնորհավոր ՅԱՄԼինգ: Համոզվեք, որ ստուգեք այս պահեստները՝ հոդվածում նշված կոմունալ ծառայություններն ավելի լավ հասկանալու համար.

PS թարգմանչից

Եվ կա նաև vikube, vim-kubernetes и վիմկուբեկտլ.

Կարդացեք նաև մեր բլոգում.

Source: www.habr.com

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