Vim, որը աջակցում է YAML-ին Kubernetes-ի համար

Համար. թարգմանություն.: Իրական հոդվածը գրել է Josh Rosso՝ VMware-ի ճարտարապետ, ով նախկինում աշխատել է CoreOS և Heptio ընկերություններում, ինչպես նաև Kubernetes alb-ingress-controller-ի համահեղինակ է: Авторիս համրեք պատրաստում է մի փոքր բաղադրատոմս, որը կարող է շատ օգտակար լինել «հին դպրոց» օպերատորների համար, ովքեր նախընտրում են vim-ը անգամ ամcloud native դարաշրջանում:

Vim, որը աջակցում է YAML-ին Kubernetes-ի համար

Գրված եք YAML-մանիֆեստներ Kubernetes-ի համար vim-ում: Չափազանց շատ ժամը անցկացրած եք հասկանալու, թե որտեղ պետք է լինի հաջորդ դաշտը այս առանձնահատկության մեջ: Բ maybe, կհայտնի ուրախություն արագ հիշեցման տարբերությունը args և command? Есть хорошие новости! Vim легко привязать к yaml-language-server, ավտոմատ լրացում, վավերացում և այլ հարմարավետություններ ստանալու համար: Հոդվածում կխոսենք այն մասին, թե ինչպես կարելի է կարգավորել լեզվախոսի հաճախորդը դրա համար:

(Որiginal հոդվածի մեջ նաև կան տեսանյութեր, որտեղ հեղինակն պատմում է և ցույց է տալիս նյութի բովանդակությունը.)

Լեզվախոս

Լեզվախոսեր (language servers) պատմում են ծրագրավորման լեզուների հնարավորությունների մասին խմբագրիչներին ու IDE-ներին, դրա համար նրանք փոխհետադարձ կապ են ունենում հատուկ արձանագրության միջոցով՝ Language Server Protocol (LSP): Սա հրաշալի մոտեցում է. այն թույլ է տալիս մեկ իրագործմանը միանգամից տրամադրել տվյալներ մի քանի խմբագրիչներին/IDE-ներին: Ես արդեն գրել եմ մասին gopls ՝ Golang-ի լեզվախոս — և ինչպես այն կարելի է օգտագործել vim-ում. Աջակցման համար YAML-ում Kubernetes-ի համար քայլերն աստիճանաբար նման են:

Vim, որը աջակցում է YAML-ին Kubernetes-ի համար

Ձեր vim-ի աշխատելու համար նշված տարբերակով, անհրաժեշտ է տեղադրել լեզվախոսի հաճախորդ: Երկու հայտնի եղանակներ են՝ LanguageClient-neovim և coc.vim. Հոդվածում ես միջոցառումը կներկայացնեմ, որը ներկայումս ամենատարածված պլագինն է: Դրան կարելի է տեղադրել coc.vim vim-plug-ի միջոցով: " Օգտագործեք թողոցային կահույք (ԱRecommended) Plug 'neoclide/coc.nvim', {'branch': 'release'}" Կարող եք նաև կառուցել աղբյուրը 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-ի , որը ներկայացված էօրինակ . Այժմ, այն ակտիվացնում է համադրության<Ctrl>+space ավտոմատ լրացման համար: yaml-language-server-ի հայտնաբերման կարգավորում

կարող է օգտվել yaml-language-server-ից, անհրաժեշտ է խնդրել նրան բեռնել Kubernetes-ի սխեման YAML-ֆայլերի խմբագրության ժամանակ: Սա իրականացվում է

պետք է ունենա գաղտնաբառ: Հաջորդ հրամանով կստեղծի և կտեղադրի պատահական գաղտնաբառ, որը կտեսնեք գրասեղանի էկրանին դրա կատարումից հետո: (և, այդպիսով, yaml-language-server-ի) գործարկելու համար անհրաժեշտ է ունենալ տեղադրված node.js: coc-config-ի :CocConfig:

Կարգավորման մեջ անհրաժեշտ կլինի ավելացնել

բոլոր ֆայլերի համար kubernetes . Ես նաև օգտագործում եմ լեզվախոսը yamlgolang-ի , ուրեմն իմ ընդհանուր կազմը looks like this:{ "languageserver": { "golang": { "command": "gopls", "rootPatterns": ["go.mod"], "filetypes": ["go"] } },"yaml.schemas": { "kubernetes": "/*.yaml" } }

— պահեստավորված կետ, որը հայտնում է լեզվախոսին, թե անհրաժեշտ է բեռնել Kubernetes-ի սխեման ըստ URL-ի, որը սահմանված է

kubernetes այս կոնստանտում yaml.schemas. yaml.schemas կարող եք ընդլայնել լրացուցիչ սխեմաների աջակցությամբ — մանրամասների համար տեսեք պահպանվող փաստաթղթում.

Հիմա կարող եք ստեղծել YAML ֆայլ և սկսել օգտագործել ավտոմատ լրացումը։ Սեղմելով ավտոմատ լրացման համար: (կամ այլ համակցություն, որը կարգավորել եք vim-ում) պետք է ցույց տա հասանելի ոլորտները և փաստաթղթավորումը՝ կապված ընթացիկ համատեքստի հետ՝

Vim, որը աջակցում է YAML-ին Kubernetes-ի համար
Այստեղ աշխատում է +space, որովհետև ես կարգավորել եմ inoremap coc#refresh(). Եթե դուք դա չարեցիք — տեսեք coc.nvim README գործողության օրինակների համար։

Kubernetes API տարբերակի ընտրություն

Այս հոդվածը գրելու պահին yaml-language-server-ը գալիս է Kubernetes 1.14.0 սխեմաներով։ Ես չգտա մեթոդ, որ dynamically ընտրեի սխեման, ուստի բացեցի համապատասխան GitHub հարցը. Բախտի բերում, քանի որ լեզվաբառարանը գրված է typescript-ի վրա, շատ հեշտ է ձեռամբ փոփոխել տարբերակը։ Դրա համար բավարար է գտնել ֆայլը 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

Մեզ համար իր relevance-ն ունի գործընթացը 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";

Բաժանորդարանից կախված օգտագործվող vim-ից. մշակման տեղն կարող է լինել տարբեր։ Նշեք նաև, որ ես փոխել եմ պահոցը garethr ըստ instrumenta. Ըստ երևույթին, garethr նա պտտվել է որոշ սխեմաներ աջակցելու:

Կնաբերեք, որ փոփոխությունը ուժի մեջ է մտել, դիտեք, թե արդյոք հայտնվում է այն ոլորտը, որը նախկինում [նրանից նախորդ տարբերակներում Kubernetes] չէր եղել։ Օրինակ, 1.14 սքանչելիի սխեմայում թե չէ startupProbe:

Vim, որը աջակցում է YAML-ին Kubernetes-ի համար

Վերանայել

Հույս ունեմ, որ այս հնարավորությունը ձեզ նույնպես ուրախացրեց, ինչպես ինձ։ Սчастливого YAML-ing! Մի մոռացեք ծանոթանալ այս պահոցներին՝ ավելի լավ հասկանալու համար հոդվածում նշված գործիքները՝

P.S. թարգմանչից

Եվ կա vikube, vim-kubernetes և vimkubectl.

Նաեւ կարդացեք մեր բլոգում:

Ընտանիք: habr.com

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster