ื ืืืืฅ. ืืจืึทื ืกื.: ืืขืจ ืึธืจืืืื ืขื ืึทืจืืืงื ืืื ืืขืืืขื ืืขืฉืจืืื ืืืจื Josh Rosso, ืึทื ืึทืจืืืืขืงื ืืื VMware ืืืึธืก ืคืจืืขืจ ืืขืืจืืขื ืืื ืงืึธืืคึผืึทื ืืขืก ืึทืืึท ืืื CoreOS ืืื Heptio, ืืื ืืื ืืืื ืืขืจ ืงืึธ-ืืืืจ ืคืื ืื Kubernetes alb-ingress-controller. ืืขืจ ืืืืจ ืฉืึทืจืขืก ืึท ืงืืืื ืจืขืฆืขืคึผื ืืืึธืก ืงืขื ืืืื ืืืืขืจ ื ืืฆืืง ืคึฟืึทืจ "ืึทืื ืฉืืืข" ืึทืคึผืขืจืืืฉืึทื ื ืขื ืืืฉืึทื ืืจื ืืืึธืก ืืขืกืขืจ ืืืขืื ืืืื ืืคืืื ืืื ืืขืจ ืชืงืืคื ืคืื ืื ืืืืงืืึธืจืืึทืก ืืืึธืืงื ืืขืืืืจื.
ืฉืจืืืื YAML ืืึทื ืืคืขืกืฅ ืคึฟืึทืจ ืงืืืขืจื ืขืืขืก ืืื ืืืื? ืคืืจืืจืืื ืงืึทืื ืืืึทืก ืฉืขื ืืจืืื ื ืฆื ืจืขืืขื ืขื ืืืืก ืืื ืืขืจ ืืืืึทืืขืจ ืคืขืื ืืึธื ืืืื ืืื ืืขื ืืึทืฉืจืืึทืืื ื? ืึธืืขืจ ืืคึฟืฉืจ ืืืจ ืืืขื ืึธืคึผืฉืึทืฆื ืึท ืฉื ืขื ืืขืจืืึธื ืื ื ืคืื ืื ืืืืืง args
ะธ command
? ืขืก ืืื ืืื ื ืืึทืขืก! Vim ืืื ืืจืื ื ืฆื ืืื ืง ืฆื
(ืืขืจ ืึธืจืืืื ืขื ืึทืจืืืงื ืืืื
ืฉืคึผืจืึทื ืกืขืจืืืขืจ
ืฉืคึผืจืึทื ืกืขืจืืืขืจืก (ืฉืคึผืจืึทื ืกืขืจืืืขืจืก) ืจืขืื ืืืขืื ืื ืงืืืคึผืึทืืืืึทืืื ืคืื ืคึผืจืึธืืจืึทืืืื ื ืฉืคึผืจืึทืื ืฆื ืจืขืืืงืฆืืข ืืื IDE, ืคึฟืึทืจ ืืืึธืก ืืื ืื ืืขืจืึทืงื ืืื ืืขืืขืจ ืื ืืขืจืข ืืื ืึท ืกืคึผืขืฆืืขื ืคึผืจืึธืืึธืงืึธื -
ืืื ืกืืจ ืคึฟืึทืจ ืืืื ืฆื ืึทืจืืขืื ืืื ืื ืืืกืงืจืืืื ืืืขื, ืืืจ ืืึทืจืคึฟื ืฆื ืื ืกืืึทืืืจื ืึท ืฉืคึผืจืึทื ืกืขืจืืืขืจ ืงืืืขื ื. ืื ืฆืืืื ืืขืืืึธืืก ืืื ืืืืกื ืคืื ืืขื ืขื 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
ืคืื ืืืื:
:CocInstall coc-yaml
ืฆืื ืกืืฃ, ืืืจ ืืืขื ืจืืึฟ ืืกืชึผืื ืืืืื ืฆื ืึธื ืืืืื ืืื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื coc-vim
, ืืขืจืืื ืื
ืืึทืฉืืขืืืงื yaml-language-server ืืืืขืงืฉืึทื
ืึทื coc
ืงืขื ื ืืฆื yaml-language-server, ืขืก ืืึทืจืฃ ืืืื ืืขืืขืื ืฆื ืืึธืื ืื ืกืืฉืขืืึท ืคึฟืื Kubernetes ืืืขื ืขืืืืื ื YAML ืืขืงืขืก. ืืึธืก ืืื ืืขืืื ืืืจื ืขืืืืื ื coc-config
:
:CocConfig
ืืื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืืจ ืืืขื ืืึทืจืคึฟื ืฆื ืืืืื kubernetes
ืคึฟืึทืจ ืึทืืข ืืขืงืขืก yaml
. ืืื ืืืื ื ืืฆื ืึท ืฉืคึผืจืึทื ืกืขืจืืืขืจ ืคึฟืึทืจ golang
ืึทืืื ืืืื ืึทืืืขืืืื ืข ืงืึทื ืคืืืืขืจืืืฉืึทื ืงืืงื ืืื ืืึธืก:
{
"languageserver": {
"golang": {
"command": "gopls",
"rootPatterns": ["go.mod"],
"filetypes": ["go"]
}
},
"yaml.schemas": {
"kubernetes": "/*.yaml"
}
}
kubernetes
- ืึท ืจืขืืขืจืืืืจื ืคืขืื ืืืึธืก ืืขืจืฆืืืื ืื ืฉืคึผืจืึทื ืกืขืจืืืขืจ ืฆื ืึธืคึผืืึธืืืจื ืื Kubernetes ืกืืฉืขืืึท ืคึฟืื ืื URL ืืืคืืื ื ืืื yaml.schemas
ืงืขื ืขื ืืืื ืืงืกืคึผืึทื ืืื ืฆื ืฉืืืฆื ื ืึธื ืกืงืืื - ืคึฟืึทืจ ืืขืจ ืืขืืึทืืืก, ืืขื
ืืืฆื ืืืจ ืงืขื ืขื ืืึทืื ืึท YAML ืืขืงืข ืืื ืึธื ืืืืื ื ืืฆื ืึทืืืึธืงืึธืืคึผืืขืืืึธื. ืืจืื ืืืขื + ืคึผืืึทืฅ (ืึธืืขืจ ืื ืืขืจืข ืงืึธืืืื ืึทืฆืืข ืงืึทื ืคืืืืขืจื ืืื vim) ืืึธื ืืืืึทืื ืื ืคืึทืจืึทื ืขื ืคืขืืืขืจ ืืื ืืึทืงืืืืขื ืืืืฉืึทื ืืืื ืืขื ืงืจืึทื ื ืงืึธื ืืขืงืกื:
+ืกืคืขืืก ืึทืจืืขื ืืึธ ืืืืึทื ืืื ืงืึทื ืคืืืืขืจื inoremap <silent><expr> <c-space> coc#refresh()
. ืืืื ืืืจ ืืึธื ื ืืฉื ืืขืืื ืืขื, ืืขื
ืกืขืืขืงืืื ื ืื Kubernetes API ืืืขืจืกืืข
ืืื ืคืื ืืขื ืฉืจืืืื, yaml-language-server ืฉืืคื ืืื Kubernetes 1.14.0 ืกืืฉืขืืึทืก. ืืื ืืื ื ืืฉื ืืขืคืื ืขื ืึท ืืืขื ืฆื ืืื ืึทืืืงืึทืืื ืืืืกืงืืืึทืื ืึท ืกืืฉืขืืึท, ืึทืืื ืืื ืืขืขืคื ื 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: ืืึธืก ืืื ืืืึธืก 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";
ืืขืคึผืขื ืืื ื ืืืืฃ ืื ืืืขืจืกืืข ืืขื ืืฆื coc-yaml
ืืขืจ ืึธืจื ืคืื ืื ืืืึทืืขืืืืืง ืืื ืื ืงืึธื ืงืขื ืืืึทืื. ืืืืข ืืืื ืืึธื ืึทื ืืื ืืฉืืื ืืืฉื ืื ืจืืคึผืึทืืึทืืึธืจื ืคึฟืื garethr
ืืืืฃ instrumenta
. ืขืก ืืืื ื ืึทื garethr
ืกืืืืืฉื ืฆื ืฉืืืฆื ืกืขืจืงืึทืฅ ืืึธืจื.
ืฆื ืงืึธื ืืจืึธืืืจื ืึทื ืื ืขื ืืขืจืื ื ืืื ืืขืืืขื ืืืืจืงืื ื, ืืขื ืืืื ืึท ืคืขืื ืืื ื ืืฉื ืืึธืจื ืคืจืืขืจ [ืืื ืคืจืืึทืขืจืืืง ืืืขืจืกืืขืก ืคืื Kubernetes]. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืื ืื ืืืึทืืจืึทืืข ืคึฟืึทืจ K8s 1.14 ืขืก ืืื ืืขืืืขื ื ืื
ืงืืฆืขืจ
ืืื ืืึธืคึฟื ืื ืืขืืขืื ืืืื ืคึผืืืืื ืืืจ ืืื ืคืื ืืื ืืืจ. ืืื ืืึทืืืื ื! ืืืื ืืืืขืจ ืฆื ืงืึธื ืืจืึธืืืจื ืื ืจืืคึผืึทืืึทืืึธืจืื ืฆื ืืขืกืขืจ ืคึฟืึทืจืฉืืืื ืื ืืืืืืึทืืื ืืขืจืืื ื ืืื ืืขื ืึทืจืืืงื:
- coc-vim:
https://github.com/neoclide/coc.nvim ; - coc-yaml:
https://github.com/neoclide/coc-yaml .
ืคึผืก ืคืื ืืืืขืจืืขืฆืขืจ
ืืื ืขืก ืืื ืืืื
ืืืืขื ืขื ืืืื ืืืืฃ ืืื ืืืขืจ ืืืึธื:
- ยซ
ืงืืืขืืึธืงืก ืืื ืื ืืขืจืข ืฉืขืื ืคึฟืึทืจ Kubernetes "; - ยซ
ืงืึทื ืกืึธืื ืืขืืคึผืขืจืก ืคึฟืึทืจ ืืจืืขืื ืืื Kubernetes ืืืจื kubectl '.
ืืงืืจ: www.habr.com