Vim ma le YAML lagolago mo Kubernetes

Manatua. fa'aliliu.: O le uluai tusiga na tusia e Josh Rosso, o se tusiata i VMware na galue muamua i kamupani e pei o CoreOS ma Heptio, ma o ia foi o le tusitala o le Kubernetes alb-ingress-controller. E faasoa mai e le tusitala se fua itiiti e mafai ona aoga tele mo "aoga tuai" enisinia faagaioiga e sili atu i le vim e oo lava i le vaitau o le ao manumalo.

Vim ma le YAML lagolago mo Kubernetes

Tusiaina YAML faʻaaliga mo Kubernetes i vim? Na fa'aaluina le tele o itula e taumafai ai e iloa po'o fea le isi fanua e tatau ona i ai i lenei fa'amatalaga? Pe atonu e te talisapaia se faamanatu vave o le eseesega args и command? E iai tala fiafia! Vim e faigofie ona feso'ota'i i yaml-gagana-servere maua ai le faʻamaeʻaina otometi, faʻamaonia ma isi mea faigofie. I totonu o lenei tusiga o le a tatou talanoa pe faʻafefea ona faʻatutuina se gagana server client mo lenei.

(O le uluai tusiga foi o iai se vitio, lea e tautala ai le tusitala ma faʻaalia mea o loʻo i totonu o le mataupu.)

Gagana server

Sau gagana (gagana) talanoa e uiga i le gafatia o gagana polokalame i faatonu ma IDE, lea latou te fegalegaleai ai le tasi ma le isi e faʻaaoga ai se faʻasalalauga faʻapitoa - Gagana Faʻavae Tulafono (LSP). Ole auala sili lea ona e mafai ai e le tasi faʻatinoga ona tuʻuina atu faʻamatalaga i le tele o faatonu / IDE i le taimi e tasi. ua uma ona ou tusia e uiga i gopls - se gagana mo Golang - ma pe fa'apefea ona fa'aoga i totonu vim. O laasaga e maua ai le autocompletion ile YAML mo Kubernetes e tutusa.

Vim ma le YAML lagolago mo Kubernetes

Ina ia mafai ona galue le vim i le auala faʻamatalaina, e te manaʻomia le faʻapipiʻiina o se tagata faʻapipiʻi gagana. O auala e lua ou te iloa o LanguageClient-neovim и coc.vim. I le tusiga o le a ou mafaufau i ai coc.vim - Ole mea sili lea ona lauiloa i le taimi nei. E mafai ona e fa'apipi'i e ala i 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'}

Mo le amataga coc (ma o lea o le yaml-gagana-server) o le a manaʻomia le node.js faʻapipiʻi:

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

Pe a coc.vim configured, faʻapipiʻi le faʻaopoopoga o le server coc-yaml mai vim:

:CocInstall coc-yaml

Vim ma le YAML lagolago mo Kubernetes

Mulimuli ane, atonu e te mana'o e amata i le fa'atulagaina coc-vim, tuuina atu e fai ma faataitaiga. Aemaise lava, e faʻagaoioia le tuʻufaʻatasia + vateatea e valaau le autocompletion.

Fa'atulaga le su'esu'ega o le yaml-gagana-server

lea coc e mafai ona faʻaogaina le yaml-language-server, e manaʻomia le talosagaina e utaina le polokalame mai Kubernetes pe a faʻasaʻo faila YAML. E faia lenei mea e ala i le teuteuina coc-config:

:CocConfig

I le faʻatulagaga e te manaʻomia e faʻaopoopo kubernetes mo faila uma yaml. Ou te fa'aogaina fo'i se 'au'aunaga gagana mo golango lea la o laʻu faʻasalalauga lautele e pei o lenei:

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

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

kubernetes - o se fanua faʻapolopolo e taʻu atu i le server gagana e sii maia le Kubernetes schema mai le URL o loʻo faʻamatalaina i totonu lenei tumau. yaml.schemas e mafai ona fa'alautele e lagolago polokalame fa'aopoopo - mo nisi fa'amatalaga, va'ai pepa talafeagai.

Ole taimi nei e mafai ona e fatuina se faila YAML ma amata faʻaaoga le autocompletion. Oomi + vateatea (poʻo isi tuʻufaʻatasiga faʻatulagaina i vim) e tatau ona faʻaalia avanoa avanoa ma faʻamaumauga e tusa ai ma le tala o loʻo iai nei:

Vim ma le YAML lagolago mo Kubernetes
E galue iinei + avanoa aua na ou configured inoremap <silent><expr> <c-space> coc#refresh(). Afai e te le'i faia lenei mea, va'ai coc.nvim FAITAU mo se faʻataʻitaʻiga faʻatulagaina.

Filifilia o le Kubernetes API version

E pei o lenei tusitusiga, o vaʻa yaml-gagana-server ma Kubernetes 1.14.0 schemas. Ou te leʻi mauaina se auala e filifili ai se fuafuaga, o lea na ou tatalaina ai tulaga tutusa GitHub. O le mea e lelei ai, talu ai ona o le 'au'aunaga o le gagana o lo'o tusia i le typescript, e faigofie lava ona suia ma le lima le lomiga. Ina ia faia lenei mea, naʻo le suʻeina o le faila server.ts.

Ina ia iloa i luga o lau masini, faigofie ona tatala le faila YAML ma vim ma suʻe le faagasologa ma 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 le faagasologa talafeagai mo i matou o le faagasologa 2380: o le mea lea e faʻaaogaina e vim pe a faʻasaʻo se faila YAML.

E pei ona faigofie ona e vaʻaia, o le faila o loʻo i totonu /Users/joshrosso/.config/coc/extensions/node_modules/coc-yaml/node_modules/yaml-language-server/out/server/src/server.js. Na'o le fa'asa'o e ala i le suia o le tau KUBERNETES_SCHEMA_URL, mo se faʻataʻitaʻiga, mo le 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";

Fa'alagolago ile fa'aoga na fa'aaogaina coc-yaml O le nofoaga o le fesuiaiga i le code atonu e eseese. Faamolemole ia matau foi na ou suia le fale teu oloa mai garethr i instrumenta. E foliga mai o lena garethr sui i le lagolago lagolago iina.

Ina ia siaki pe ua aoga le suiga, vaai pe aliali mai se fanua e lei i ai muamua [i lomiga muamua o Kubernetes]. Mo se faʻataʻitaʻiga, i le ata mo K8s 1.14 e leai startupProbe:

Vim ma le YAML lagolago mo Kubernetes

Aotelega

Ou te faʻamoemoe o lenei avanoa e faʻafiafiaina oe e pei lava o aʻu. Manuia le YAMLing! Ia mautinoa e siaki nei faleoloa e malamalama atili ai i mea aoga o loʻo taʻua i le tusiga:

PS mai faaliliu

Ma e iai foʻi vikube, vim-kubernetes и vimkubectl.

Faitau foi i la matou blog:

puna: www.habr.com

Faaopoopo i ai se faamatalaga