๐Ÿณ Docker Swarm

์ตœ์ค€ํ˜ธยท2023๋…„ 11์›” 14์ผ
0

๊ฐœ์ธ ๊ณต๋ถ€

๋ชฉ๋ก ๋ณด๊ธฐ
7/7
post-thumbnail

๐Ÿ”ด Docker Swarm์ด๋ž€?

์˜ˆ์ „๋ถ€ํ„ฐ ๋„์ปค ์Šค์›œ์ด๋ž€ ๋ง์„ ๋งŽ์ด ๋“ฃ๊ธด ํ–ˆ์ง€๋งŒ k8s๊ฐ€ ์žˆ๋Š”๋ฐ ๊ตณ์ด ์ด๊ฑธ ๊ณต๋ถ€ํ•ด์•ผํ• ๊นŒ? ๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ์—ˆ๋‹ค. ์™œ๋ƒ๋ฉด ์š”์ฆ˜ ๋Œ€๋ถ€๋ถ„ ์„œ๋น„์Šค๋Š” k8s๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์˜€๋Š”๋ฐ. ์†”์งํžˆ k8s๋ฅผ ์‚ฌ์šฉํ•ด๋ณผ ์ˆ˜๋ก ๋‚ด๊ฐ€ api ๊ฐœ๋ฐœ์ž์ธ์ง€ ์ธํ”„๋ผ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋Š”๊ฒƒ์ธ์ง€ ํ—ท๊ฐˆ๋ฆด ์ •๋„๋กœ ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ๋†’๊ณ  ๋„ˆ๋ฌด ๋งŽ์€ ๊ธฐ๋Šฅ๋“ค์ด ์žˆ์—ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋„์ปค ์Šค์›œ์ด ๋‚˜์˜จ์ง€๋„ ๊ฝค ๋๊ณ  ๋‚ด ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋”์ด์ƒ ํ•˜๋‚˜์˜ ์„œ๋ฒ„๋กœ๋งŒ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•„ ๋„์ปค ์Šค์›œ์œผ๋กœ ์„ธํŒ…ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ k8s๋ฅผ ๋ณด๊ณ  ๊ฒ์„ ๋จน์—ˆ๋˜ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋„์ปค ์Šค์›œ์„ ๋ณด๋ฉด ์•„์ฃผ ์‰ฝ๋‹ค๊ณ  ์ƒ๊ฐํ•  ๊ฒƒ์ด๋‹ค. Docker๊ฐ€ ๊ธฐ๋ณธ ๋ฒ ์ด์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์— ์‚ฌ์šฉํ–ˆ๋˜ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋„ˆ๋ฌด ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ”ต Docker Swarm ์„ค์น˜

๊ฐ€์žฅ ํฐ ์žฅ์ ์ธ๋ฐ Docker Swarm์€ Docker๊ฐ€ ์„ค์น˜๋œ ํ™˜๊ฒฝ์—์„œ ๋”ฐ๋กœ ์„ค์น˜ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

Docker ์„ธํŒ…์ด ์™„๋ฃŒ๋˜์–ด์žˆ๋‹ค ๊ฐ€์ •ํ•˜์— ์ง„ํ–‰ํ•˜๊ฒ ๋‹ค!

๐Ÿ”ต Docker Swarm ์‹œ์ž‘

๐ŸŸข docker swarm init

๋จผ์ € docker swarm init ์œผ๋กœ ํ•ด๋‹น ๋จธ์‹ ์ด docker swarm์„ ํ™œ์„ฑํ™” ํ•œ๋‹ค๊ณ  ์•Œ๋ ค์•ผ ํ•œ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด token์ด ๋ฐœ๊ธ‰๋˜์–ด์ง€๋Š”๋ฐ ํ•ด๋‹น ํ† ํฐ๊ณผ ip๊ฐ’์œผ๋กœ ๋‹ค๋ฅธ ๋จธ์‹ (๋˜๋‹ค๋ฅธ ์„œ๋ฒ„)์—์„œ swarm์— joinํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ๋ฐฉ๋ฒ•์€ ๋‚ด๊ฐ€ ์ง„ํ–‰ํ•˜๋ ค๋Š” ๋ฐฉ์‹์€ ์•„๋‹ˆ์—ฌ์„œ ํ•„์š”ํ•œ ๋ถ„๋“ค์€ ๊ณต์‹๋ฌธ์„œ์—์„œ ํ™•์ธ ํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  swarm์ด ์ •์ƒ์ ์ธ ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด docker info ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

Swarm ๊ฐ’์ด active๋ผ๋ฉด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

๐ŸŸข docker service create

๊ทธ ๋‹ค์Œ swarm์—์„œ service๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์ž
docker service create --replicas 1 --name hello alpine ping docker.com
๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณต์‹๋ฌธ์„œ์—์„œ ์•ˆ๋‚ดํ•˜๋Š” ๋Œ€๋กœ ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์—ˆ๋‹ค.

docker service create --replicas 1 --name <์„œ๋น„์Šค์ด๋ฆ„> <์ด๋ฏธ์ง€> <์‹คํ–‰์‹œ ๋ช…๋ น์–ด>
--replicas : ์„œ๋ฒ„์˜ scale
--name : ์ƒ์„ฑ๋  ์„œ๋น„์Šค์˜ ์ด๋ฆ„

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค.

๐ŸŸข scale out

์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํˆด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์ด์œ ๊ฐ€ ์Šค์ผ€์ผ ์ธ-์•„์›ƒ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ปจํŠธ๋กคํ•  ์ˆ˜ ์žˆ์–ด์„œ์ผ ๊ฒƒ์ด๋‹ค.

docker service scale hello=3

๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์œ„์—์„œ ์ƒ์„ฑํ–ˆ๋˜ ์„œ๋น„์Šค์˜ ์„œ๋ฒ„๊ฐ€ 3๋Œ€๋กœ ์ฆ๊ฐ€ํ•œ๋‹ค. ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ๊นŒ์ง€ ํ•จ๊ป˜ ํ•ด์ค€๋‹ค.

๊ทธ ์™ธ์—๋„ api gateway ์„œ๋ฒ„ ์„ธํŒ…, config ์„ธํŒ…๊ณผ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๋กœ๊น… ๋„๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ k8s๋ž‘ ๋น„๊ตํ•ด์„œ๋„ ๋’ค์ง€์ง€ ์•Š์„ ์„ธํŒ…๋“ค์ด ์ „๋ถ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ docker๋งŒ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ์ž์‹ ์ด ์›ํ•˜๋Š” ์„ธํŒ…์œผ๋กœ ์ž์œ ๋กญ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ฐ„๋‹จํ•œ ํ† ์ดํ”„๋กœ์ ํŠธ๋‚˜ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํˆด์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ํ•ด๋ณด๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•ด๋ณด๋ฉด ์ข‹์„๊ฒƒ ๊ฐ™๋‹ค.

๋˜ํ•œ ์š”์ฆ˜ aws๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ docker swarm์œผ๋กœ ์„œ๋ฒ„ ์„ธํŒ…ํ•˜๋Š ๊ณณ๋„ ์ƒ๊ธฐ๊ณ  ์žˆ์œผ๋‹ˆ ๊ทธ๋Ÿฐ์ชฝ์œผ๋กœ ์ดํ•ดํ•ด๋‘๋Š” ๊ฒƒ๋„ ์ข‹์„๊ฒƒ ๊ฐ™๊ณ !

๐Ÿ‘ ์ •๋ฆฌ

docker swarm์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์ƒ๊ฐํ•ด๋ดค๋‹ค.

๐Ÿ™Œ ์†Œ์Šค ์ตœ์ดˆ ๋ฐฐํฌ์‹œ

docker compose๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€ ์ƒ์„ฑ -> ์ด๋ฏธ์ง€ hub๋กœ ํ‘ธ์‹œ -> docker swarm์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ํ†ตํ•ด service ์ƒ์„ฑ

๐Ÿ™Œ ์†Œ์Šค ์—…๋ฐ์ดํŠธ ์‹œ

docker swarm์—์„œ image๋งŒ update

profile
์ฝ”๋”ฉ์„ ๊น”๋”ํ•˜๊ฒŒ ํ•˜๊ณ  ์‹ถ์–ดํ•˜๋Š” ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž (ํŽธํ•˜๊ฒŒ ๊ธ€์„ ์“ฐ๊ธฐ์œ„ํ•ด ๋ฐ˜๋ง์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค! ์–‘ํ•ด ๋ถ€ํƒ๋“œ๋ ค์š”!) ํ˜„์žฌ KakaoVX ๊ทผ๋ฌด์ค‘์ž…๋‹ˆ๋‹ค!

0๊ฐœ์˜ ๋Œ“๊ธ€