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

Գրված եք YAML-մանիֆեստներ Kubernetes-ի համար vim-ում: Չափազանց շատ ժամը անցկացրած եք հասկանալու, թե որտեղ պետք է լինի հաջորդ դաշտը այս առանձնահատկության մեջ: Բ maybe, կհայտնի ուրախություն արագ հիշեցման տարբերությունը args և command? Есть хорошие новости! Vim легко привязать к , ավտոմատ լրացում, վավերացում և այլ հարմարավետություններ ստանալու համար: Հոդվածում կխոսենք այն մասին, թե ինչպես կարելի է կարգավորել լեզվախոսի հաճախորդը դրա համար:
(Որiginal հոդվածի մեջ նաև , որտեղ հեղինակն պատմում է և ցույց է տալիս նյութի բովանդակությունը.)
Լեզվախոս
Լեզվախոսեր (language servers) պատմում են ծրագրավորման լեզուների հնարավորությունների մասին խմբագրիչներին ու IDE-ներին, դրա համար նրանք փոխհետադարձ կապ են ունենում հատուկ արձանագրության միջոցով՝ (LSP): Սա հրաշալի մոտեցում է. այն թույլ է տալիս մեկ իրագործմանը միանգամից տրամադրել տվյալներ մի քանի խմբագրիչներին/IDE-ներին: Ես արդեն մասին ՝ Golang-ի լեզվախոս — և ինչպես այն կարելի է օգտագործել . Աջակցման համար YAML-ում Kubernetes-ի համար քայլերն աստիճանաբար նման են:

Ձեր vim-ի աշխատելու համար նշված տարբերակով, անհրաժեշտ է տեղադրել լեզվախոսի հաճախորդ: Երկու հայտնի եղանակներ են՝ և . Հոդվածում ես միջոցառումը կներկայացնեմ, որը ներկայումս ամենատարածված պլագինն է: Դրան կարելի է տեղադրել coc.vim vim-plug-ի միջոցով: :
Սկսելու համար coc-ի (և, այդպիսով, yaml-language-server-ի) գործարկելու համար անհրաժեշտ է ունենալ տեղադրված node.js: curl -sL install-node.now.sh/lts | bash
հաստատված, տեղադրեք ծառայության ընդլայնումը Երբ coc.vim coc-yaml vim-ից. :CocInstall coc-yaml
Վերջապես, ամենայն հավանականությամբ ցանկանում եք սկսել բանաձևից 
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 ֆայլ և սկսել օգտագործել ավտոմատ լրացումը։ Սեղմելով ավտոմատ լրացման համար: (կամ այլ համակցություն, որը կարգավորել եք vim-ում) պետք է ցույց տա հասանելի ոլորտները և փաստաթղթավորումը՝ կապված ընթացիկ համատեքստի հետ՝

Այստեղ աշխատում է +space, որովհետև ես կարգավորել եմ inoremap coc#refresh(). Եթե դուք դա չարեցիք — տեսեք գործողության օրինակների համար։
Kubernetes API տարբերակի ընտրություն
Այս հոդվածը գրելու պահին yaml-language-server-ը գալիս է Kubernetes 1.14.0 սխեմաներով։ Ես չգտա մեթոդ, որ dynamically ընտրեի սխեման, ուստի բացեցի . Բախտի բերում, քանի որ լեզվաբառարանը գրված է 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 սքանչելիի սխեմայում թե չէ :

Վերանայել
Հույս ունեմ, որ այս հնարավորությունը ձեզ նույնպես ուրախացրեց, ինչպես ինձ։ Սчастливого YAML-ing! Մի մոռացեք ծանոթանալ այս պահոցներին՝ ավելի լավ հասկանալու համար հոդվածում նշված գործիքները՝
- coc-vim: ;
- coc-yaml: .
P.S. թարգմանչից
Եվ կա , և .
Նաեւ կարդացեք մեր բլոգում:
- «»;
- «».
Ընտանիք: habr.com
