Vim me ke kākoʻo YAML no nā Kubernetes

Nānā. unuhi.: Ua kākau ʻia ka ʻatikala mua e Josh Rosso, he mea kākau kiʻi ma VMware i hana mua ma nā hui e like me CoreOS a me Heptio, a ʻo ia hoʻi ka mea kākau kumu o ka Kubernetes alb-ingress-controller. Hāʻawi ka mea kākau i kahi meaʻai liʻiliʻi i hiki ke hoʻohana nui ʻia no nā ʻenekini hana "kula kahiko" makemake i ka vim ʻoiai i ka wā o ke ao lanakila.

Vim me ke kākoʻo YAML no nā Kubernetes

Ke kākau nei i nā hōʻike YAML no nā Kubernetes ma vim? Ua hoʻohana i nā hola he nui e ho'āʻo ana e ʻike i kahi e pono ai ka māla aʻe i kēia kikoʻī? A i ʻole e mahalo paha ʻoe i kahi hoʻomanaʻo wikiwiki o ka ʻokoʻa args и command? Aia ka nūhou maikaʻi! He maʻalahi ke loulou i ka Vim lawelawe ʻōlelo-yamle kiʻi i ka hoʻopau ʻakomi, hōʻoia a me nā mea ʻoluʻolu ʻē aʻe. Ma kēia ʻatikala e kamaʻilio mākou e pili ana i ka hoʻonohonoho ʻana i kahi mea kūʻai kikowaena ʻōlelo no kēia.

(ʻO ka ʻatikala kumu kekahi aia he wikiō, kahi e kamaʻilio ai ka mea kākau a hōʻike i nā mea i loko o ka mea.)

Kahua ʻōlelo

Nā kikowaena ʻōlelo (nā kikowaena ʻōlelo) e kamaʻilio e pili ana i nā hiki o nā ʻōlelo hoʻonohonoho i nā mea hoʻoponopono a me nā IDE, kahi e launa pū ai lākou me kekahi me ka hoʻohana ʻana i kahi protocol kūikawā - Pūnaewele Kikowaena ʻ Languagelelo (LSP). He ala maikaʻi loa kēia no ka mea hiki i ka hoʻokō hoʻokahi ke hāʻawi i ka ʻikepili i nā mea hoʻoponopono/IDE he nui i ka manawa hoʻokahi. Ua loaʻa iaʻu palapalaʻo ia e pili ana i gopls - he kikowaena ʻōlelo no Golang - a pehea e hoʻohana ʻia ai i loko vim. Ua like nā ʻanuʻu e loaʻa ai ka autocompletion ma YAML no nā Kubernetes.

Vim me ke kākoʻo YAML no nā Kubernetes

I mea e hana ai ka vim ma ke ʻano i wehewehe ʻia, pono ʻoe e hoʻokomo i kahi mea lawelawe kikowaena ʻōlelo. ʻO nā ala ʻelua aʻu i ʻike ai LanguageClient-neovim и coco.vim. Ma ka ʻatikala aʻu e noʻonoʻo ai coc.vim - ʻO kēia ka plugin kaulana loa i kēia manawa. Hiki iā ʻoe ke hoʻouka ma o 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'}

No ka hoʻomaka coc (a pēlā ka yaml-language-server) e koi i ka node.js i hoʻokomo ʻia:

curl -sL install-node.now.sh/lts | bash

Inā coc.vim hoʻonohonoho, hoʻokomo i ka hoʻonui kikowaena coc-yaml mai vim:

:CocInstall coc-yaml

Vim me ke kākoʻo YAML no nā Kubernetes

ʻO ka hope, makemake paha ʻoe e hoʻomaka me ka hoʻonohonoho coc-vim, hoikeia i laʻana. ʻO ka mea kūikawā, hoʻonā i ka hui +wahi e kāhea i ka hoʻopiha ʻana.

Hoʻonohonoho ʻana i ka ʻike kikowaena ʻōlelo yaml

ia coc hiki ke hoʻohana i ka yaml-language-server, pono e noi ʻia e hoʻouka i ka schema mai Kubernetes i ka wā e hoʻoponopono ai i nā faila YAML. Hana ʻia kēia ma ka hoʻoponopono ʻana coc-config:

:CocConfig

I ka hoʻonohonoho hoʻonohonoho pono ʻoe e hoʻohui kubernetes no nā faila a pau yaml. Hoʻohana pū wau i kahi kikowaena ʻōlelo no golangno laila ua like kaʻu config maʻamau:

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

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

kubernetes — he kahua i mālama ʻia e haʻi ana i ke kikowaena ʻōlelo e hoʻoiho i ka schema Kubernetes mai ka URL i wehewehe ʻia ma keia mau. yaml.schemas hiki ke hoʻonui ʻia e kākoʻo i nā hoʻolālā hou - no nā kikoʻī hou aku, ʻike palapala pili.

I kēia manawa hiki iā ʻoe ke hana i kahi faila YAML a hoʻomaka e hoʻohana i ka autocompletion. Ke kaomi ʻana +wahi (a i ʻole nā ​​hui ʻē aʻe i hoʻonohonoho ʻia ma vim) pono e hōʻike i nā kahua i loaʻa a me nā palapala e like me ka pōʻaiapili o kēia manawa:

Vim me ke kākoʻo YAML no nā Kubernetes
+Hana ʻo Space ma ʻaneʻi no ka mea ua hoʻonohonoho wau inoremap <silent><expr> <c-space> coc#refresh(). Inā ʻaʻole ʻoe i hana i kēia, ʻike coc.nvim README no ka laʻana hoʻonohonoho.

Ke koho ʻana i ka mana Kubernetes API

E like me kēia kākau ʻana, nā moku yaml-language-server me Kubernetes 1.14.0 schemas. ʻAʻole i loaʻa iaʻu kahi ala e koho ikaika ai i kahi schema, no laila ua wehe au pili i ka pilikia GitHub. ʻO ka mea pōmaikaʻi, ʻoiai ua kākau ʻia ke kikowaena ʻōlelo ma typescript, maʻalahi loa ka hoʻololi lima ʻana i ka mana. No ka hana ʻana i kēia, e ʻimi wale i ka faila server.ts.

No ka ʻike ʻana iā ia ma kāu mīkini, wehe wale i ka faila YAML me vim a ʻimi i ke kaʻina hana me 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

ʻO ke kaʻina hana kūpono no mākou ʻo ke kaʻina 2380: ʻo ia ka mea a vim e hoʻohana ai i ka hoʻoponopono ʻana i kahi faila YAML.

E like me kāu e ʻike maʻalahi ai, aia ka faila ma /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Hoʻoponopono wale iā ia ma ka hoʻololi ʻana i ka waiwai KUBERNETES_SCHEMA_URL, no ka laʻana, no ka mana 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";

Ma muli o ka mana i hoʻohana ʻia coc-yaml He ʻokoʻa paha ka wahi o ka mea hoʻololi i ke code. E ʻoluʻolu e hoʻomaopopo hoʻi ua hoʻololi wau i ka waihona mai garethr maluna o instrumenta. Me he mea lā garethr ua hoʻololi ʻia i nā kaapuni kākoʻo ma laila.

No ka nānā ʻana i ka hopena o ka hoʻololi, e ʻike inā ʻike ʻia kahi kahua ʻaʻole i loaʻa ma mua [ma nā mana mua o Kubernetes]. No ka laʻana, ma ke kiʻikuhi no K8s 1.14 ʻaʻohe hoʻomakaProbe:

Vim me ke kākoʻo YAML no nā Kubernetes

Hōʻuluʻulu

Manaʻo wau e ʻoluʻolu kēia manawa kūpono iā ʻoe e like me kaʻu. Hauʻoli YAMLing! E nānā pono i kēia mau waihona e hoʻomaopopo maikaʻi i nā pono i ʻōlelo ʻia ma ka ʻatikala:

PS mai ka unuhi

A aia kekahi vikube, vim-kubernetes и vimkubectl.

E heluhelu pū ma kā mākou blog:

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka