Vim miaraka amin'ny fanohanana YAML ho an'ny Kubernetes
Fanamarihana. transl.: Ny lahatsoratra tany am-boalohany dia nosoratan'i Josh Rosso, mpanao mari-trano ao amin'ny VMware izay niasa taloha tao amin'ny orinasa toa an'i CoreOS sy Heptio, ary izy koa no mpiara-manoratra ny Kubernetes alb-ingress-controller. Ny mpanoratra dia mizara fomba fahandro kely izay mety ho tena ilaina ho an'ny "sekoly taloha" miasa injeniera izay tia vim na dia ao amin'ny vanim-potoana ny mpandresy rahona teratany.
Manoratra YAML manifests ho an'ny Kubernetes amin'ny vim? Nandany ora tsy tambo isaina niezahana hamantatra hoe aiza no tokony hisy ny saha manaraka amin'ity famaritana ity? Na mety hankasitraka ny fampahatsiahivana haingana momba ny fahasamihafana ianao args ΠΈ command? Misy vaovao mahafaly! Vim dia mora mifandray yaml-language-serverhahazoana fahavitan'ny mandeha ho azy, fanamarinana ary fanamorana hafa. Ato amin'ity lahatsoratra ity dia hiresaka momba ny fomba fametrahana mpanjifa mpizara fiteny ho an'izany isika.
(Ny lahatsoratra tany am-boalohany koa misy video ve, izay iresahanβny mpanoratra sy anehoana ny votoatinβny fitaovana.)
Mpizara fiteny
Mpizara fiteny (mpizara amin'ny fiteny) miresaka momba ny fahaiza-manaon'ny fiteny fandaharana amin'ny tonian-dahatsoratra sy IDE, izay hifaneraseran'izy ireo amin'ny alΓ lan'ny protocol manokana - Protocol Server Server (LSP). Fomba lehibe izany satria mamela ny fampiharana iray hanome angon-drakitra ho an'ny mpamoaka lahatsoratra/IDE maro indray mandeha. efa manana aho nanoratra about gopls - mpizara fiteny ho an'ny Golang - sy ny fomba fampiasana azy vim. Mitovy ny dingana hahazoana autocompletion amin'ny YAML ho an'ny Kubernetes.
Mba hahafahan'ny vim miasa amin'ny fomba voalaza dia mila mametraka mpanjifa mpizara fiteny ianao. Ny fomba roa fantatro dia LanguageClient-neovim ΠΈ coco.vim. Ao amin'ny lahatsoratra hodinihintsika coc.vim - Ity no plugin malaza indrindra amin'izao fotoana izao. Azonao atao ny mametraka azy amin'ny alΓ lan'ny 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'}
Ho fanombohana coc (ary noho izany ny yaml-language-server) dia mitaky ny fametrahana ny node.js:
curl -sL install-node.now.sh/lts | bash
rehefa coc.vim configured, mametraka ny fanitarana ny mpizara coc-yaml avy amin'ny vim:
:CocInstall coc-yaml
Farany, mety te hanomboka amin'ny fanamboarana ianao coc-vim, aseho ho ohatra. Indrindra indrindra, dia manetsika ny fitambarana +space hiantso ny autocompletion.
Mametraka fitiliana yaml-language-server
fa coc Afaka mampiasa yaml-language-server, mila angatahina ny hampiditra ny schema avy amin'ny Kubernetes rehefa manitsy ny rakitra YAML. Atao amin'ny alalan'ny fanitsiana izany coc-config:
:CocConfig
Ao amin'ny fanamafisana dia mila ampiana ianao kubernetes ho an'ny rakitra rehetra yaml. Mampiasa mpizara fiteny ihany koa aho golangka toy izao ny config ankapohako:
kubernetes β saha voatokana izay milaza amin'ny mpizara fiteny mba hisintona ny tetika Kubernetes avy amin'ny URL voafaritra ao tsy miova ity. yaml.schemas azo itarina hanohanana tetika fanampiny - raha mila fanazavana fanampiny dia jereo antontan-taratasy mifandraika amin'izany.
Afaka mamorona rakitra YAML ianao izao ary manomboka mampiasa autocompletion. maika +space (na fitambarana hafa namboarina ao amin'ny vim) dia tokony hampiseho ireo saha sy antontan-taratasy misy araka ny toe-javatra misy ankehitriny:
+Space dia miasa eto satria nataoko inoremap <silent><expr> <c-space> coc#refresh(). Raha mbola tsy nanao izany ianao dia jereo coc.nvim README ohatra ny configuration.
Mifidy ny Kubernetes API version
Hatramin'ny nanoratana ity, ny yaml-language-server dia mandeha miaraka amin'ny skema Kubernetes 1.14.0. Tsy nahita fomba hifidianana schema amin'ny fomba mavitrika aho, ka nanokatra aho olana GitHub mifanaraka amin'izany. Soa ihany fa satria nosoratana tamin'ny sora-baventy ny mpizara fiteny, dia mora ny manova ny dikan-teny. Mba hanaovana izany, tadiavo fotsiny ny rakitra server.ts.
Raha te hahalala izany amin'ny milinanao dia sokafy fotsiny ny rakitra YAML miaraka amin'ny vim ary tadiavo ny dingana miaraka amin'ny yaml-language-server.
Aminay dia ilaina ny process 2380: io no ampiasain'ny vim rehefa manova rakitra YAML.
Araka ny hitanao mora, ny rakitra dia hita ao /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Ahitsio fotsiny amin'ny fanovana ny sandany KUBERNETES_SCHEMA_URL, ohatra, ho an'ny version 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";
Arakaraka ny dikan-teny ampiasaina coc-yaml Mety tsy hitovy ny toerana misy ny variable ao amin'ny code. Azafady mariho ihany koa fa nanova ny tahiry avy amin'ny garethr amin'ny instrumenta. Toa izany garethr nivadika ho circuits mpanohana any.
Raha te hanamarina fa nisy fiantraikany ilay fanovana dia jereo raha toa ka misy saha tsy hita teo aloha [amin'ny dikan-teny Kubernetes teo aloha]. Ohatra, ao amin'ny kisary ho an'ny K8s 1.14 dia tsy nisy startupProbe:
famintinana
Manantena aho fa ity fahafahana ity dia hampifaly anao tahaka ny nataoko. Happy YAMLing! Aza hadino ny mijery ireto tahiry ireto mba hahatakarana bebe kokoa ireo fitaovana voalaza ao amin'ny lahatsoratra: