๋ฉ๋ชจ. ๋ฒ์ญ: ์๋ณธ ๊ธฐ์ฌ๋ ์ด์ ์ CoreOS, Heptio ๋ฑ์ ํ์ฌ์์ ๊ทผ๋ฌดํ์ผ๋ฉฐ Kubernetes alb-ingress-controller์ ๊ณต๋ ์ ์์ด๊ธฐ๋ ํ VMware์ ์ค๊ณ์ Josh Rosso๊ฐ ์์ฑํ์ต๋๋ค. ์ ์๋ ์น๋ฆฌํ๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์๋์๋ vim์ ์ ํธํ๋ "๊ตฌ์" ์ด์ ์์ง๋์ด์๊ฒ ๋งค์ฐ ์ ์ฉํ ์ ์๋ ์์ ๋ฐฉ๋ฒ์ ๊ณต์ ํฉ๋๋ค.
vim์์ Kubernetes์ฉ YAML ๋งค๋ํ์คํธ๋ฅผ ์์ฑํ์๋์? ์ด ์ฌ์์์ ๋ค์ ํ๋๊ฐ ์ด๋์ ์์ด์ผ ํ๋์ง ์์๋ด๋ ค๊ณ ์
์ ์์ด ๋ง์ ์๊ฐ์ ์๋นํ์
จ๋์? ์๋๋ฉด ์ฐจ์ด์ ์ ๋น ๋ฅด๊ฒ ์๊ธฐ์์ผ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. 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-์ธ์ด-์๋ฒ)์๋ node.js๊ฐ ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.
curl -sL install-node.now.sh/lts | bash
์ธ์ coc.vim
๊ตฌ์ฑ, ์๋ฒ ํ์ฅ ์ค์น coc-yaml
vim์์:
:CocInstall coc-yaml
๋ง์ง๋ง์ผ๋ก ๊ตฌ์ฑ๋ถํฐ ์์ํ๊ณ ์ถ์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. coc-vim
, ์ ์
yaml-์ธ์ด-์๋ฒ ๊ฐ์ง ์ค์
๊ทธ coc
yaml-์ธ์ด-์๋ฒ๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉด YAML ํ์ผ์ ํธ์งํ ๋ Kubernetes์์ ์คํค๋ง๋ฅผ ๋ก๋ํ๋๋ก ์์ฒญํด์ผ ํฉ๋๋ค. ์ด๋ ํธ์ง์ ํตํด ์ด๋ฃจ์ด์ง๋๋ค. coc-config
:
:CocConfig
๊ตฌ์ฑ์์ ๋ค์์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. kubernetes
๋ชจ๋ ํ์ผ์ ๋ํด yaml
. ์ถ๊ฐ์ ์ผ๋ก ์ธ์ด ์๋ฒ๋ฅผ ์ฌ์ฉํฉ๋๋ค. golang
๋ด ์ผ๋ฐ์ ์ธ ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{
"languageserver": {
"golang": {
"command": "gopls",
"rootPatterns": ["go.mod"],
"filetypes": ["go"]
}
},
"yaml.schemas": {
"kubernetes": "/*.yaml"
}
}
kubernetes
โ ๋ค์์ ์ ์๋ URL์์ Kubernetes ์คํค๋ง๋ฅผ ๋ค์ด๋ก๋ํ๋๋ก ์ธ์ด ์๋ฒ์ ์ง์ํ๋ ์์ฝ๋ ํ๋์
๋๋ค. yaml.schemas
์ถ๊ฐ ๊ตฌ์ฑํ๋ฅผ ์ง์ํ๋๋ก ํ์ฅ๋ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ค์์ ์ฐธ์กฐํ์ธ์.
์ด์ YAML ํ์ผ์ ์์ฑํ๊ณ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋๋ฅด๊ธฐ +์คํ์ด์ค (๋๋ vim์ ๊ตฌ์ฑ๋ ๋ค๋ฅธ ์กฐํฉ)์ ํ์ฌ ์ปจํ ์คํธ์ ๋ฐ๋ผ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋์ ๋ฌธ์๋ฅผ ํ์ํด์ผ ํฉ๋๋ค.
์ฌ๊ธฐ์ ์ผํจ +space๋ฅผ ๊ตฌ์ฑํ๊ธฐ ๋๋ฌธ์ ๊ณต๋ฐฑ inoremap <silent><expr> <c-space> coc#refresh()
. ์์ง ํด๋ณด์ง ์์๋ค๋ฉด ๋ค์์ ์ฐธ์กฐํ์ธ์.
Kubernetes API ๋ฒ์ ์ ํ
์ด ๊ธ์ ์ฐ๋ ์์ ์์ yaml-์ธ์ด-server๋ Kubernetes 1.14.0 ์คํค๋ง์ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค. ์คํค๋ง๋ฅผ ๋์ ์ผ๋ก ์ ํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํด ์ด์์ต๋๋ค. server.ts
.
์ปดํจํฐ์์ ์ด๋ฅผ ๊ฐ์งํ๋ ค๋ฉด vim์ผ๋ก YAML ํ์ผ์ ์ด๊ณ ๋ค์์ผ๋ก ํ๋ก์ธ์ค๋ฅผ ์ฐพ์ผ์ธ์. 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 .
๋ฒ์ญ๊ฐ์ ์ถ์
๊ทธ๋ฆฌ๊ณ ๊ฑฐ๊ธฐ์์๋ค.
๋ธ๋ก๊ทธ์์๋ ์ฝ์ด๋ณด์ธ์.
- ยซ
Kubernetes์ฉ kubebox ๋ฐ ๊ธฐํ ์ ธ "; - ยซ
kubectl์ ํตํด Kubernetes ์์ ์ ์ํ ์ฝ์ ๋์ฐ๋ฏธ ".
์ถ์ฒ : habr.com