ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°. ΠΏΡΠ΅Π²ΠΎΠ΄: ΠΡΠΈΠ³ΠΈΠ½Π°Π»Π½Π°ΡΠ° ΡΡΠ°ΡΠΈΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π° ΠΎΡ ΠΠΆΠΎΡ Π ΠΎΡΠΎ, Π°ΡΡ ΠΈΡΠ΅ΠΊΡ Π²ΡΠ² VMware, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π΅ ΡΠ°Π±ΠΎΡΠΈΠ» Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΊΠ°ΡΠΎ CoreOS ΠΈ Heptio ΠΈ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ ΡΡΠ°Π²ΡΠΎΡ Π½Π° Kubernetes alb-ingress-controller. ΠΠ²ΡΠΎΡΡΡ ΡΠΏΠΎΠ΄Π΅Π»Ρ ΠΌΠ°Π»ΠΊΠ° ΡΠ΅ΡΠ΅ΠΏΡΠ°, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π° Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΡΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈ ΠΎΡ βΡΡΠ°ΡΠ°ΡΠ° ΡΠΊΠΎΠ»Π°β, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ vim Π΄ΠΎΡΠΈ Π² Π΅ΡΠ°ΡΠ° Π½Π° ΠΏΠΎΠ±Π΅Π΄ΠΎΠ½ΠΎΡΠ½ΠΈΡ ΡΠΎΠ΄Π΅Π½ ΠΎΠ±Π»Π°ΠΊ.
ΠΠΈΡΠ°Π½Π΅ Π½Π° YAML ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈ Π·Π° 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-ΡΡΡΠ²ΡΡΡΡ) ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ node.js:
curl -sL install-node.now.sh/lts | bash
ΠΠΎΠ³Π°ΡΠΎ coc.vim
ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΡΠ²ΡΡΠ° coc-yaml
ΠΎΡ vim:
:CocInstall coc-yaml
Π Π½Π°ΠΊΡΠ°Ρ, Π½Π°ΠΉ-Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ΅ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° coc-vim
, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΈ
ΠΠ°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° yaml-Π΅Π·ΠΈΠΊ-ΡΡΡΠ²ΡΡ
Π§Π΅ coc
ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° yaml-language-ΡΡΡΠ²ΡΡ, ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΠΌΠΎΠ»Π΅Π½ Π΄Π° Π·Π°ΡΠ΅Π΄ΠΈ ΡΡ
Π΅ΠΌΠ°ΡΠ° ΠΎΡ 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