Kubernetes కోసం YAML మద్దతుతో Vim

గమనిక. అనువాదం.: అసలు కథనాన్ని VMwareలో ఆర్కిటెక్ట్ అయిన జోష్ రోస్సో వ్రాసారు, అతను గతంలో CoreOS మరియు Heptio వంటి కంపెనీలలో పనిచేశాడు మరియు కుబెర్నెట్స్ ఆల్బ్-ఇన్‌గ్రెస్-కంట్రోలర్ యొక్క సహ రచయిత కూడా. విజేత క్లౌడ్ స్థానిక యుగంలో కూడా విమ్‌ను ఇష్టపడే "పాత పాఠశాల" ఆపరేషన్ ఇంజనీర్‌లకు చాలా ఉపయోగకరంగా ఉండే చిన్న వంటకాన్ని రచయిత పంచుకున్నారు.

Kubernetes కోసం YAML మద్దతుతో Vim

విమ్‌లో కుబెర్నెట్స్ కోసం YAML మానిఫెస్ట్‌లను వ్రాయాలా? ఈ స్పెసిఫికేషన్‌లో తదుపరి ఫీల్డ్ ఎక్కడ ఉండాలో గుర్తించడానికి లెక్కలేనన్ని గంటలు గడిపారా? లేదా మీరు వ్యత్యాసాన్ని శీఘ్ర రిమైండర్‌ని అభినందిస్తారు args и command? శుభవార్త ఉంది! Vimకి లింక్ చేయడం సులభం yaml-language-serverస్వయంచాలకంగా పూర్తి చేయడం, ధ్రువీకరణ మరియు ఇతర సౌకర్యాలను పొందడానికి. దీని కోసం లాంగ్వేజ్ సర్వర్ క్లయింట్‌ను ఎలా సెటప్ చేయాలో ఈ ఆర్టికల్‌లో మాట్లాడుతాము.

(అసలు వ్యాసం కూడా వీడియో ఉందా, రచయిత మాట్లాడుతాడు మరియు పదార్థంలోని విషయాలను ప్రదర్శిస్తాడు.)

భాషా సర్వర్

భాషా సర్వర్లు (భాషా సర్వర్లు) సంపాదకులు మరియు IDE లకు ప్రోగ్రామింగ్ భాషల సామర్థ్యాల గురించి మాట్లాడండి, దీని కోసం వారు ఒక ప్రత్యేక ప్రోటోకాల్‌ని ఉపయోగించి పరస్పరం సంభాషించవచ్చు - భాషా సర్వర్ ప్రోటోకాల్ (LSP). ఇది ఒక గొప్ప విధానం ఎందుకంటే ఇది ఒకేసారి అనేక ఎడిటర్‌లు/IDEలకు డేటాను అందించడానికి ఒక అమలును అనుమతిస్తుంది. నేను ఇప్పటికే నేను వ్రాసిన గురించి gopls - గోలాంగ్ కోసం భాషా సర్వర్ - మరియు దానిని ఎలా ఉపయోగించవచ్చు vim. కుబెర్నెటీస్ కోసం YAMLలో స్వయంపూర్తి పొందడానికి దశలు ఒకే విధంగా ఉంటాయి.

Kubernetes కోసం YAML మద్దతుతో Vim

విమ్ వివరించిన విధంగా పని చేయడానికి, మీరు భాషా సర్వర్ క్లయింట్‌ను ఇన్‌స్టాల్ చేయాలి. నాకు తెలిసిన రెండు పద్ధతులు లాంగ్వేజ్ క్లయింట్-నియోవిమ్ и coc.vim. వ్యాసంలో నేను పరిశీలిస్తాను coc.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

చివరగా, మీరు కాన్ఫిగరేషన్‌తో ప్రారంభించాలనుకుంటున్నారు 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 నుండి కుబెర్నెట్స్ స్కీమాను డౌన్‌లోడ్ చేయమని భాషా సర్వర్‌కు చెప్పే రిజర్వు చేయబడిన ఫీల్డ్ ఈ స్థిరమైన. yaml.schemas అదనపు పథకాలకు మద్దతు ఇవ్వడానికి విస్తరించవచ్చు - మరిన్ని వివరాల కోసం, చూడండి సంబంధిత డాక్యుమెంటేషన్.

ఇప్పుడు మీరు YAML ఫైల్‌ని సృష్టించి, స్వీయపూర్తిని ఉపయోగించడం ప్రారంభించవచ్చు. నొక్కడం + స్పేస్ (లేదా vimలో కాన్ఫిగర్ చేయబడిన ఇతర కలయిక) ప్రస్తుత సందర్భం ప్రకారం అందుబాటులో ఉన్న ఫీల్డ్‌లు మరియు డాక్యుమెంటేషన్‌ను చూపాలి:

Kubernetes కోసం YAML మద్దతుతో Vim
ఇక్కడ పని చేస్తుంది +స్పేస్ ఎందుకంటే నేను కాన్ఫిగర్ చేసాను inoremap <silent><expr> <c-space> coc#refresh(). మీరు దీన్ని చేయకుంటే, చూడండి coc.nvim README ఒక ఉదాహరణ కాన్ఫిగరేషన్ కోసం.

కుబెర్నెటెస్ API వెర్షన్‌ని ఎంచుకోవడం

ఈ రచన ప్రకారం, కుబెర్నెటెస్ 1.14.0 స్కీమాలతో yaml-language-server షిప్‌లు. నేను డైనమిక్‌గా స్కీమాను ఎంచుకోవడానికి మార్గం కనుగొనలేదు, కాబట్టి నేను తెరిచాను సంబంధిత 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 కోడ్‌లోని వేరియబుల్ యొక్క స్థానం మారవచ్చు. నేను రిపోజిటరీని మార్చినట్లు కూడా దయచేసి గమనించండి garethrinstrumenta. ఇది అలా అనిపిస్తుంది garethr అక్కడ సపోర్టింగ్ సర్క్యూట్‌లకు మారారు.

మార్పు ప్రభావం చూపిందో లేదో తనిఖీ చేయడానికి, ఇంతకు ముందు లేని ఫీల్డ్ కనిపిస్తుందో లేదో చూడండి. ఉదాహరణకు, K8s 1.14 కోసం రేఖాచిత్రంలో సంఖ్య లేదు స్టార్టప్ ప్రోబ్:

Kubernetes కోసం YAML మద్దతుతో Vim

సారాంశం

ఈ అవకాశం నన్ను ఎంతగానో సంతోషపెట్టిందని ఆశిస్తున్నాను. హ్యాపీ యమ్లింగ్! వ్యాసంలో పేర్కొన్న యుటిలిటీలను బాగా అర్థం చేసుకోవడానికి ఈ రిపోజిటరీలను తప్పకుండా తనిఖీ చేయండి:

అనువాదకుని నుండి PS

మరియు కూడా ఉంది వికుబే, vim-kubernetes и vimkubectl.

మా బ్లాగులో కూడా చదవండి:

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి