α αααΆαα ααααααα α’αααααααΎαααααΌαααΆααααααααα Josh Rosso αααααΆααααΆαααααααα VMware αααααΈαα»αααααΎααΆααα αααα»αα αα»αααΌα ααΆ CoreOS αα·α Heptio α αΎαααααΆαα α’ααααα·αααααα Kubernetes alb-ingress-controller αααααα α’ααααα·ααααα αααααααααΌαααααααΌα αα½ααααα’αΆα ααΆααααααααααααααΆαααα·αααααααααα·ααααα·ααΆα "ααΆααΆα αΆαα" αααα αΌαα α·ααα vim ααΌααααΈαααα αααα»ααα»αααααααααααααααΆαααααααααααααα
ααΆαααααα YAML manifests αααααΆαα Kubernetes αααα»α vim? α
αααΆαβαααβααΆααβααααβαααα»αβααΆαβααααΆααΆαβααβααΎαβααΆβααΎβααααααβαααααΆααβαα½αβαα
βααααααβααΆβαααα»αβααΆαβαααααΆααβααα? α¬αααα ααααΆα’αααααΉααααα
α·ααααααα»αααΆαααααΉααααΆαααΆαααα ααα’αααΈααΆααα»αααααΆ args
ΠΈ command
? ααΆαααααΉαααα’! Vim ααΆααααα½αααααΆαααα
(α’αααααααΎααααααα
αααΆαααΈαααααΆααΆ
αααΆαααΈαααααΆααΆ (αααΆαααΈαααααΆααΆ) αα·ααΆαβα’αααΈβαααααααΆαβααβααΆααΆβαααααβαααααα·ααΈβαα
βα’αααβααβααααα½α αα·α IDE αααβαα½αααβααααΎβα’ααααααααβααΆαα½αβααααΆβαααβααααΎβαα·ααΈααΆαβαα·ααα -
ααΎααααΈα±αα 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
ααΆα
α»αααααα α’αααααααααΆα
ααα
αΆααααααΎαααΆαα½αααΉαααΆαααααααα
ααΆαααααααα 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 αα·αααΆαααα
αααααα
αααα»αβαααααΉαβααΆβα±ααΆαβαααβααΉαβααααΎβα±ααβα’αααβαααβα α·αααβααΌα βαααβααΆβααΆαβααααΎβα±ααβαααα»αβα ααΈαααΆα YAMLing! ααααΌαααααΆααααΆαα·αα·αααααΎαααααΆααααΆαααααααΎααααΈαααααΆααααα αααΆααα’αααΈα§αααααααααΎααααΆαααααααΆααααααΆαααα αααα»αα’αααααα
- coc-vimα
https://github.com/neoclide/coc.nvim ; - coc-yamlα
https://github.com/neoclide/coc-yaml .
PS ααΈα’ααααααααα
α αΎαααΆααααααα
ααΌαα’αΆαααααααα ααΎαααααααααααΎαα
- Β«
kubebox αα·αααααααααααααααααΆαα Kubernetes Β» - Β«
α’ααααααα½ααα»αααΌααααααΆααααααΎααΆαααΆαα½α Kubernetes ααΆαααα kubectl "α
ααααα: www.habr.com