[Kubernetes] ๊ธฐ๋ง๊ณ ์‚ฌ ์ •๋ฆฌ 1

2024. 6. 25. 00:41ใ†ComputerScience/DockerKubernetes

 

 

 

 

 

Chap12. Private Multi-Node Docker / Docker in docker 
- Docker in docker – DinD

- official but not recommended (๊ถŒ์žฅ X) 
- 
๋„์ปค ์•ˆ์—์„œ ๋‹ค์‹œ ๋„์ปค๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค + ๊ฒฝ๊ณ ๊ฐ€ ์ •๋ง ๋งŽ๋‹ค. 

 

 

 

 

Chap13. Docker Swarm 1
- 
์ˆ˜์ฒœ ์ˆ˜๋งŒ๋Œ€์˜ ์ปดํ“จํ„ฐ์—์„œ SW ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•œ ๊ถ๊ทน์ ์ธ ๋ฐฉ๋ฒ•, ๋„์ปค ์Šค์›œ (like ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค
- SWARM – 
๋–ผ, ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์ง€๋งŒ, ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์ ์ธ ๊ตฐ (๋„์ปค ์Šค์›œ์€ ์ปจํ…Œ์ด๋„ˆ๋“ค์˜ ๊ตฐ) 
- 
์ผ์ผ์ด ๋‹ค ํƒ€์ดํ•‘? ๋ถˆ๊ฐ€๋Šฅ / ์ž๋™ํ™”๋œ ๋„์ปค ์Šค์›œ ๋“ฑ์žฅ -> ๋” ํŽธํ•˜๊ฒŒ ์ˆ˜๋งŽ์€ ์ด๋ฏธ์ง€์™€ ์ปจํ…Œ์ด๋„ˆ ์ปจํŠธ๋กค ๊ฐ€๋Šฅ

- ์–ŒํŒŒ์ผ์„ ์ปค๋งจ๋“œ๋ผ์ธ์„ ํ†ตํ•ด ์ผ๊พผ๋“ค์—๊ฒŒ ์ซ™ ๋ฟŒ๋ฆผ  ๊ฐœ๋ฐœ์ž ๊ด€์  
- 
๋„์ปค ๋จธ์‹ ์„ ํ†ตํ•ด ์›๊ฒฉ์˜ ์ปดํ“จํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ 

- ๋„์ปค ์Šค์›œ์€ ์›๊ฒฉ์˜ ๋…ธ๋“œ ๊ด€๋ฆฌ ์ด์ƒ์œผ๋กœ, ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์™€ ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„

 

* Orchestratior - ์ˆ˜๋งŽ์€ ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ํ•˜๋‚˜์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(์„œ๋น„์Šค)์„ ๊ตฌ์„ฑํ•จ
์œ ๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ, ์ˆ˜๋งŽ์€ ์ •๋ณด๋ฅผ ์ง€ํœ˜์ž๊ฐ€ ๊ด€๋ฆฌ (์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ์˜ ๋Œ€์ƒ์€ ์ปจํ…Œ์ด๋„ˆ)

* ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ๋กœ ํ•˜๋‚˜๋กœ ๋ฌถ์Œ / ์‹คํ–‰ํ•˜๋Š” ์• ๋Š” IAC (์–ŒํŒŒ์ผ) / application์ด ์ด๊ฑธ ๋ชจ๋ฅด๊ฒŒ ๋Œ์•„๊ฐ€๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ์˜ ์—ญํ• 

- ์ˆ˜๋งŽ์€ ์ž‘์€ SW๋“ค์˜ ์ด์ง‘ํ•ฉ = ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค (๊ตฌ๊ธ€)
+ 
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์™€ ๋„์ปค ์Šค์›œ์ด ์–‘๋Œ€์‚ฐ๋งฅ 

- scalability ์ธก๋ฉด์—์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋Œ€๊ทœ๋ชจ์˜ ์ผ์— ์ ํ•ฉ, ๊ตฌ๊ธ€์ด ์ƒ์šฉ ์„œ๋น„์Šค๋ฅผ ๋„์šฐ๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ

- ๋„์ปค ์Šค์›œ - ์ž‘์€ ๊ทœ๋ชจ์— ์ ํ•ฉ, ๋Œ€์‹  ๋‚œ์ด๋„๊ฐ€ ์‰ฝ๋‹ค 

 

* Container Orchestration – a process that automates the deployment, management, scaling, networking, and availability of container-based applications / CI/CD DevOps ์ž๋™ํ™”๊ฐ€ ํ•ต์‹ฌ
- multiple Docker hosts
๋กœ ๊ตฌ์„ฑ – manager(๋ฆฌ๋”)์—๊ฒŒ ์–ŒํŒŒ์ผ์„ ์ œ๊ณต, ๋งค๋‹ˆ์ €๊ฐ€ workers(nodes) ์ผ๊พผ๋“ค์„ ๋„์šด๋‹ค. 

Ex) 3๊ฐœ์˜ ๋„์ปค ๋จธ์‹ ์„ ๋„์›€ (manager, worker1, worker2)
docker-machine ssh manager docker swarm init --advertise-addr 192.168.99.100 
: 
๋งค๋‹ˆ์ €์•ผ ๋‹ˆ๊ฐ€ ๋Œ€์žฅ์ด์•ผ (๋Œ€์žฅ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ) & ๋‚ด๊ฐ€ ๋งค๋‹ˆ์ €๋ผ๊ณ  ์ฃผ๋ณ€์— ๋ฟŒ๋ฆฌ๋Š” ๊ฒƒ

docker-machine ssh worker1 docker swarm join --token ~ // ์ด ๋ช…๋ น์„ ์นดํ”ผํ•ด์„œ, ์›Œ์ปค๊ฐ€ ํ•ด๋‹น ์Šค์›œ์— ๋“ค์–ด๊ฐ„๋‹ค
๋Œ€์žฅ๋‹˜ IP address๋กœ ๋‚ด port number๋กœ join (192.168.99.100:2377)

 

* Docker stack – init, join์ด ๋๋‚˜๋ฉด ์‹คํ–‰์€ stack files 
: 
์–ŒํŒŒ์ผ๋“ค์„ ์ด์ œ ์Šคํƒ ํŒŒ์ผ์ด๋ผ๊ณ  ๋ถ€๋ฅผ ๊ฒƒ, ํ•˜๋‚˜์˜ ์—”๋“œ ์œ ์ € ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์Šคํƒ์ด๋ผ๊ณ  ์นญํ•จ
- scp 
๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด, ๋‚ด ๋””๋ ‰ํ† ๋ฆฌ์˜ docker-compose.yaml ํŒŒ์ผ์„ ๋งค๋‹ˆ์ €์˜ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋ณต์‚ฌํ•œ๋‹ค. 
- docker stack deploy -c docker-compose.yaml / 
์„œ๋น„์Šค๋ฅผ ๋Œ๋ฆฌ๋ผ๊ณ  ํ•œ๋‹ค + ์Šค์›œ์€ ์ž๋™์œผ๋กœ local network๋ฅผ ๋งŒ๋“ฆ

- ์ดํ›„ stack rm ์„ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ์™€ ์„œ๋น„์Šค (helloswarm) ์ง€์šฐ๊ธฐ -> docker swarm leave๋กœ joinํ•œ ์›Œ์ปค๊ฐ€ ์Šค์›œ์—์„œ ๋‚˜๊ฐ€๊ธฐ

- docker swarm leave ๋ช…๋ น์œผ๋กœ ๋งค๋‹ˆ์ €๋„ ์ง€์šฐ๊ธฐ / docker-machine rm ๋„์ปค ๋จธ์‹  ๋…ธ๋“œ๋“ค์„ ์ง€์›€

 

 

 

Chap14. Docker Swarm 2 
- Scale service up & down, update - 
์‚ฌ๋žŒ์ด ์†์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค, ๋Œ€๋ถ€๋ถ„ ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด up, down 
+ 
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค rest API ์–ธ์–ด๋ณ„ ์กด์žฌ, ์†์œผ๋กœ ํƒ€์ดํ•‘ํ•œ ๋ช…๋ น๋“ค ๋ชจ๋‘ API ํ˜ธ์ถœ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅ

+ ์Šค์›œ์€ ๋‘ ์ปจํ…Œ์ด๋„ˆ ๋ฐ€์–ด๋ฒ„๋ฆผ -> ๋ช…๋ น์— ๋Œ€ํ•œ ๊ฒฐ์ •์„ ์‚ฌ๋žŒ์ด ํ•œ๋‹ค / ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ํ•˜๋‚˜ํ•˜๋‚˜ ์„ฌ์„ธํ•˜๊ฒŒ ๊ต์ฒด (์‚ฌ๋žŒ์ด ์–˜ํ•œํ…Œ ๋ถ€ํƒ) -> ์ธ๊ฐ„์ด ํ•˜๋˜ ์ผ์„ ๋ชจ๋‘ ์ฝ”๋“œํ™” -> ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์•Œ์•„์„œ ํ•จ vs ์Šค์›œ์€ ์‚ฌ๋žŒ์ด ๋ช…๋ น์„ ๋‚ด๋ฆผ

 

docker service create --replicas 3 -p 80:80 --name web-1 nginx // nginx๋กœ web-1 ์ด๋ฆ„์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ 3๊ฐœ ๋งŒ๋“ค์–ด๋ผ
docker service scale web-1=4        // * scale option
์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ๊ฐœ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๊ณ  ์ค„์ž„ 
docker service update --image nginx:1.14.0 web-1     // latest version
์ด๋˜ nginx๋ฅผ downgrade, ๋กค๋ฐฑ

 

 

 

Chap15. Docker Labels

- ๋„์ปค์—์„œ ์ทจ๊ธ‰ํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ(์ด๋ฏธ์ง€, ์ปจํ…Œ์ด๋„ˆ, volumes, networks, swarm nodes etc)์— ๋ผ๋ฒจ์„ ๋ถ™์ด๋Š” ๊ฒƒ
- 
๋ฌด์–ธ๊ฐ€ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ผ๋ฒจ์„ ๋‹ฌ ์ˆ˜ ์žˆ๋‹ค or ์ปจํ…Œ์ด๋„ˆ ๋“ฑ์„ ์ƒํ˜ธ ๊ด€๊ณ„๋กœ ๋ฌถ์–ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ

- key-value pair (dictionary), ์—ฌ๋Ÿฌ ๋ผ๋ฒจ์„ ๋‹ฌ ์ˆ˜ ์žˆ๋‹ค.

- Each key-label pair must be unique within an object.  
+ 
์นดํ…Œ๊ณ ๋ฆฌ(๋Œ€๋ถ„๋ฅ˜์—์„œ ์†Œ๋ถ„๋ฅ˜๋กœ) ๊ตฌ๋ถ„ํ•  ๋•Œ . ์ ์„ ์ฐ๊ณ , ๋™๋“ฑํ•œ ๋ ˆ๋ฒจ์—์„œ ๊ตฌ๋ถ„ํ•  ๋•Œ  ํ•˜์ดํ”ˆ์„ ๋ถ™์ธ๋‹ค.
+ App 
ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœํ•  ๋•Œ ์›น์‚ฌ์ดํŠธ ์—ญ์ˆœ์œผ๋กœ ๋„๋ฉ”์ธ์„ ๋’ค์ง‘๋Š”๋‹ค ex) com.example.some-label
+ 
๋„์ปค๊ฐ€ ์ ์œ ํ•œ ๋ผ๋ฒจ์€ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ex) com.docker.*, io.docker.*, &org.dockerproject.*

 

* ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค (or ์˜ค๋ฅธ์ชฝ์„ ์™ผ์ชฝ์œผ๋กœ ์นญํ•œ๋‹ค)
- docker node update --label-add foo worker1 // worker1 
์— :foo ๋ผ๊ณ  ๋ผ๋ฒจ์„ ๋ถ™์ด๋Š” ๊ฒƒ

- static for the lifetime of the object, ํ•œ๋ฒˆ ์ƒ์„ฑํ•˜๋ฉด ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์ฃฝ์„ ๋•Œ๊นŒ์ง€ ์œ ์ง€๋จ
- to change labels, you must recreate the object / 
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ๋Š” ๋™์ ์œผ๋กœ update ๊ฐ€๋Šฅํ•จ 

 

 

 

Chap16. Kubernetes Overview
* 
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋„ ๋„์ปค์Šค์›œ๊ณผ ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์ด๋‹ค.
- 
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์‹ค์ œ๋กœ ํšŒ์‚ฌ์—์„œ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€, ๊ตฌ๊ธ€์ด ์“ฐ๋Š” ์„œ๋น„์Šค๋ฅผ ์˜คํ”ˆ์†Œ์Šคํ™” ํ•œ ๊ฒƒ (๊ตฌ๊ธ€์ด ์จ์„œ ๊ฒ€์ฆ๋จ)
- 
๋„์ปค ์Šค์›œ์—์„œ๋Š” ์ผ์ผ์ด ์†์œผ๋กœ ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๋“ค์„ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ž๋™ํ™”ํ•˜์—ฌ ํ›จ์”ฌ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณต, ๋Œ€๊ทœ๋ชจ์— ํŽธ๋ฆฌ

- ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์˜คํ”ˆ์†Œ์Šค SW / management ๊ธฐ๋Šฅ์ด ๋„์ปค๋ณด๋‹ค ๊ฐ•๋ ฅ / ๋„์ปค๋ฅผ ๋ฐ‘์— ๊น– - ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์€ ๋„์ปค์ธ ๊ฒƒ
- open-source system for automating deployment, scaling & management of containerized applications (Google)
+ 
๊ตฌ๊ธ€์˜ ๋…ผ๋ฌธ Borg, Omega - ์ˆ˜์ฒœ ์ˆ˜๋งŒ๋Œ€์˜ ์ปดํ“จํ„ฐ๋ฅผ ๋ฌถ๋Š” ํ–‰์œ„ (cluster) ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„๋‹ˆ๋ผ job, task ์ฆ‰ ํ”„๋กœ๊ทธ๋žจ

 

* CNCF - Cloud Native computing Foundation : ์• ์‹œ๋‹น์ดˆ ์ˆ˜์ฒœ ์ˆ˜๋งŒ๋Œ€์˜ ์ปดํ“จํ„ฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์‹œ์ž‘
- 
๋ฆฌ๋ˆ…์Šค ์‚ฐํ•˜์—์„œ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… ๊ด€๋ จ์œผ๋กœ ๋ถ„๋ฆฌ๋จ, ์ˆ˜์ฒœ ์ˆ˜๋งŒ๊ฐœ์˜ CPU, DISK, ๋„คํŠธ์›Œํฌ๋ฅผ ์ƒ๊ฐํ•˜๊ณ  SW ๋งŒ๋“ค๊ธฐ

- microservices, dynamically orchestrating those containers to optimize resource utilization 

* Kubernetes: polyglot - multi-language๋กœ ๊ฐœ๋ฐœ / Google / Go ์–ธ์–ด๋กœ ์“ฐ์ž„ – cluster management SW
- 
์ปจํ…Œ์ด๋„ˆ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ / deploying apps์— ๋Œ€ํ•œ ๋„๊ตฌ ์ œ๊ณต / scaling๊ณผ update 

 

* Pokémon Go - ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ  ์ข‹์€ ๊ฑด ์•Œ๊ฒ ์–ด, ๊ทผ๋ฐ public user๋“ค์ด VM์„ ๋ฒ—์–ด๋‚  ํ•„์š”๊ฐ€ ์žˆ์–ด?
+ 
ํฌ์ผ“๋ชฌ ๊ณ : ์ปจํ…Œ์ด๋„ˆ ๋ฒ ์ด์Šค, ๊ตฌ๊ธ€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์‚ฌ์šฉ 

-> ํŠธ๋ž˜ํ”ฝ ํญ๋ฐœํ–ˆ์ง€๋งŒ, ์„œ๋น„์Šค์— ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ๋‹ค (์„ฑ๊ณต์ ์ธ ์šด์˜ ์‚ฌ๋ก€) / ์ด์ •๋„ ํ„ฐ์ง€๋ฉด ์„œ๋น„์Šค๊ฐ€ ๋ฉˆ์ถฐ์•ผ ๋˜๋Š”๋ฐ, ์•ˆ ํ„ฐ์ง 

+ ์˜ˆ์ƒ๋ณด๋‹ค 50๋ฐฐ ์ด์ƒ์˜ ํŠธ๋ž˜ํ”ฝ์ด ํญ๋ฐœํ–ˆ์œผ๋‚˜ ๊ฒฌ๋Ž ๋‹ค. 
** 
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ๊ฒ€์ฆ๋œ ์‚ฌ๋ก€ - ์ปจํ…Œ์ด๋„ˆ์™€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋ฒค์ฒ˜ ํšŒ์‚ฌ merit / ๊ตฌ๊ธ€์˜ ํƒ€๊นƒ์€ ๋ฒค์ฒ˜!

+ ํ˜„์žฌ ์ „์„ธ๊ณ„๊ฐ€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋กœ ๋Œ€๋™๋‹จ๊ฒฐ / ์••๋„์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ ์ค‘ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๋น„์œจ์ด ๋†’๋‹ค

 

 

 

Chap17. Microservices and Killercoda 
- 
๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ vs IBM mainframe - ์—„์ฒญ๋‚œ CPU DISK ํ•œ ๋Œ€์˜ ์ปดํ“จํ„ฐ (monolithic)

- ๊ธฐ์กด์˜ ๋ชจ๋†€๋ฆฌํ‹ฑ ๊ตฌ์กฐ - ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ, ๋ง‰๊ฐ•ํ•œ ์ปดํ“จํ„ฐ๊ฐ€ ๋ชจ๋‘ ํ†ต์ œ / ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค / ์ €์žฅํ•  ์ •๋ณด๊ฐ€ ์žˆ๋Š” data access layer
/ 
๋Œ์•„๊ฐ€๋Š” ๋กœ์ง / 3๊ฐœ๋ฅผ, ํ•˜๋‚˜์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•ˆ์— ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ 
- ์‹คํ–‰ํŒŒ์ผ ํ•˜๋‚˜์— ๋‹ค ๋„ฃ์Œ (์‚ฌ์šฉ์ž UI, ์ฃผ๋ฌธ๊ณผ ๊ด€๋ จ๋œ ๋ฐฑ์—”๋“œ ๋กœ์ง, inventory ๋ฐ์ดํ„ฐ ์œ ์ง€ ๋“ฑ) 

 

* What happens once the apps becomes large & team grows in size? 
1) 
์ƒˆ๋กœ์šด ์š”๊ตฌ์‚ฌํ•ญ -> 4๊ฐœ์˜ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ์žˆ์„ ๋•Œ, ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚œ๋‹ค๊ณ  ํ•ด์„œ, 4๊ฐœ์˜ ๋ชจ๋“ˆ์ด ์ผ๊ด„์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋ณ„๋กœ ์—†์Œ 
-
๋ชจ๋†€๋ฆฌํ‹ฑ ๊ตฌ์กฐ๋Š” ํŠน์ • ๋ชจ๋“ˆ์ด 2๋ฐฐ ๋” ํ•„์š”ํ•˜๋ฉด 1ํ…Œ๋ผ ์”ฉ ๋‘ ์Œ๋‘ฅ์ด๊ฐ€ ํ•„์š”ํ•จ 
- 
๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋Š” ์ฆ๋Ÿ‰์ด ํ•„์š”ํ•œ ๋ชจ๋“ˆ๋งŒ N๋ฐฐ ์ฐจ๋ณ„ํ™”๋œ ์šฉ๋Ÿ‰์— ๋Œ€ํ•ด ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ์ฆ์„ค์ด ๊ฐ€๋Šฅํ•จ
2) 
ํŒ€์ด ์ปค์ง€๋ฉด? ๊ฐ™์ด ํ•˜๋‚˜์˜ ๋Œ€๊ทœ๋ชจ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์—…ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค 

- ํ•œ ๋ฒˆ ๋ฆด๋ฆฌ์ฆˆ ํ•˜๋ ค๋ฉด ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ทœ์น™, ์ผ์ •์„ ๋งž์ถ”์–ด์•ผ ํ•จ 

- ๊ฐ๊ฐ์˜ ๋…๋ฆฝ์ ์ธ ํ”„๋กœ๊ทธ๋žจ๋“ค - ํ†ต์‹ , API๋ฅผ ํ†ตํ•ด ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋„๋ก ํ•จ 
- 
๋”ฐ๋กœ DB๋ฅผ ๊ฐ–๊ณ  ์žˆ์Œ / ์šฐ๋ฆฌ ํŒ€ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ณ , ์ˆ˜์ •ํ•ด๋„ ์˜† ๋ถ€์„œ์˜ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ (ํ†ตํ•ฉ ๊ด€๋ จ ํšŒ์˜๊ฐ€ ์ค„์–ด๋“ฆ) / ๋ฆด๋ฆฌ์ฆˆ ์ผ์ •์ด ๋ถ€์„œ๋ณ„๋กœ ๋‹ฌ๋ผ์ ธ๋„ ๋จ (๋…๋ฆฝ์ ) // ํŒ€์˜ ์šด์˜(HR)์— ๋Œ€ํ•œ ์ ‘๊ทผ๋ฒ•๋„ ๋‹ฌ๋ผ์ง 

-> ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์— ์ตœ์ ํ™”๋œ ์‚ฌ๋žŒ๊ณผ ๊ธฐ์ˆ ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค (์–ธ์–ด, ๊ฐœ๋ฐœ ์Šคํƒ, polyglot)

* Why Microservice Architecture? 
- 
์ž‘์€ ์„œ๋น„์Šค๋“ค๋กœ ์ฐข๋Š”๋‹ค / 3๊ฐœ์˜ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•  ๋ฟ, ๊ฐ๊ฐ ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค๋“ค๋กœ ๋–ผ์–ด๋‚ด์„œ ์‹คํ–‰์‹œํ‚ค๊ณ , ์ด๊ฑธ ๋ชจ์•„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ œ๊ณตํ•˜์ž / product = group of independent services / ๋ชจ๋‘ business area์— ๋”ฐ๋ผ ์ชผ๊ฐœ์ง€๊ณ , ๊ฐ๊ฐ์ด ์›ํ•˜๋Š” tech stack์„ ํ™œ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ๋จ / ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋“ค์€ rest over HTTP๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ†ต์‹  ๊ฐ€๋Šฅ + ์ž‘๊ณ , ๋น ๋ฅด๋‹ค

 

(1) Scalability – scalie independently without affecting other microservices – ๋ชจ๋†€๋ฆฌํ‹ฑ์€ ์šฉ๋Ÿ‰ ๋ถ€์กฑํ•˜๋ฉด ์„ธ์Œ๋‘ฅ์ด
(2) Availability - 
๊ฐ€์šฉ์„ฑ - ๊ณ„์† ์„œ๋น„์Šค๊ฐ€ ๋™์ž‘ํ•˜๋Š”๊ฐ€? ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋จนํ†ต์ด ๋˜๋ฉด? ๋ชจ๋†€๋ฆฌํ‹ฑ์€ ๋‹ค ์ฃฝ์Œ
- 
์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ์ฃฝ์œผ๋ฉด, ์•ฝ๊ฐ„์˜ ์ง€์—ฐ์€ ์žˆ๊ฒ ์ง€๋งŒ, ๊ฑ”๋งŒ ๋˜์‚ด๋ฆฌ๋ฉด ๋œ๋‹ค - ๋ชจ๋†€๋ฆฌํ‹ฑ์ฒ˜๋Ÿผ ํ†ต์œผ๋กœ ๋ง๊ฐ€์ง€์ง€๋Š” ์•Š์Œ
(3) Fault Tolerance – 
์žฅ์•  ๋Œ€์‘ – application์˜ ์ž‘์€ ๋ถ€๋ถ„๋งŒ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค (SK C&C ์ „์ฒด ๋‹ค ์ฃฝ์ง€ ์•Š๊ณ ) 
(4) Agility - 
์š”๊ตฌ์‚ฌํ•ญ์ด ๋ฐ”๋€” ๋•Œ, agileํ•˜๊ฒŒ ๋Œ€์‘ ๊ฐ€๋Šฅ - ์ž‘์€ ๊ทœ๋ชจ ํŒ€, ์ง€๊ธˆ ๋‹น์žฅ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœ
(5) Polyglot Persistence - 
ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ, ์—ฌ๋Ÿฌ ์–ธ์–ด์™€ ์—ฌ๋Ÿฌ DB๊ฐ€ ๊ณต์กดํ•˜๋Š” ๊ตฌ์กฐ
- 
๋ชฉ์ ์— ๋งž๋Š” ๋„๊ตฌ๋ฅผ ์ตœ์ ํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค (multi-lingual) / ๋ชจ๋†€๋ฆฌํ‹ฑ์€ DB์™€ major ์–ธ์–ด๊ฐ€ ์ •ํ•ด์ง
- 
๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์„ ํ˜ธํ•˜๋Š” ๊ธฐ์ˆ  ์Šคํƒ์œผ๋กœ, ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅํ•จ (polyglot) - ๊ฐ์ž ๋ณธ์ธ์˜ ์—ญํ• ์— ์ถฉ์‹ค
(6) Maintainability - 
์œ ์ง€๋ณด์ˆ˜์˜ ํŽธ๋ฆฌํ•จ / ์ž‘์€ ํŒŒ์ผ, ํ”„๋กœ๊ทธ๋žจ๋“ค๋กœ ๋งŽ์ด ๋‚˜๋‰˜์–ด์ง - ๋ฉ์น˜ ํฐ ํ•˜๋‚˜๋ณด๋‹ค, ๋ฉ์น˜ ์ž‘์€ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฝ๋‹ค

 

* ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๊ฐ€ ์žฅ์ ์„ ๊ฐ–๋Š” ๊ฒฝ์šฐ
(1) Software stack agnostic - 
๊ฐ์ž ์•Œ์•„์„œ ์งœ / API๋งŒ ๋งž์ถ”์ž (HTTP ํ†ต์‹  ํ”„๋กœํ† ์ฝœ๋กœ ํ•˜๋Š” ๊ฒƒ) 
- SW stack
์€ ์•Œ ํ•„์š” X, ์–ฝ๋งค์ด์ง€ ์•Š์Œ - ์›ํ•˜๋Š” ๊ธฐ๋Šฅ๋งŒ ์ œ๋Œ€๋กœ ํ•ด์ฃผ๋ฉด ๋จ / ๋‚ด๋ถ€๋Š” ์•Œ์•„์„œ ์งœ๋ผ (์ตœ์ ํ™” ๊ฐ€๋Šฅ)
(2) Faster Development - 
์ž‘์€ SW๋ฅผ ํ•˜๋ฃจ์— ๋ฆด๋ฆฌ์ฆˆ 4๋ฒˆ์ด๋‚˜ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ex) ๋„ค์ด๋ฒ„, ๊ตฌ๊ธ€

(3) clear separation of business concerns - ๋ณต์žกํ•˜๋‹ˆ ๋‚˜์ค‘์—

+ ๋ณ„๋„๋กœ ๊ฐœ๋ฐœ๋˜๊ณ , ์œ ์ง€๋ณด์ˆ˜ ๋˜๋ฉฐ, 7~9๋ช…์˜ ์ž‘์€ ํŒ€ ๋‚ด๋ถ€์—์„œ ๊ฐœ๋ฐœํ•˜๊ณ , ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์„œ๋กœ ๋Œ€ํ™”ํ•˜๋ฉฐ, ๊ฐ์ž ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœํ–ˆ๋Š”์ง€ ๋‚ด๋ถ€์ ์ธ ๊ตฌํ˜„์—๋Š” ๊ด€์‹ฌ์ด ์—†๋‹ค - ๊ฐ๊ฐ์˜ ์„œ๋ฒ„๋Š” API๋ฅผ ์ œ๊ณตํ•  ๋ฟ
- mesh 
๊ทธ๋ฌผ ๋ผ์ธ์€ ํ†ต์‹  ๋ผ์ธ์ด ์žˆ๋Š” ๊ฒƒ์„ ์˜๋ฏธ - API๊ฐ€ ๋ฏธ๋ฆฌ ์ž˜ ์ •์˜ํ•˜๋Š” ๊ฒƒ ์ค‘์š” // ๊ฐ์ฒด์ง€ํ–ฅ์˜ ๊ธฐ๋ฒ•๊ณผ ์œ ์‚ฌํ•จ
- 
๊ฐ์ฒด์™€ ๊ฐ™์ด ๊ฐ๊ฐ ๋…๋ฆฝ์ ์ธ ์ปจํ…Œ์ด๋„ˆ๋“ค๋กœ ๋–จ์–ด์ ธ ์žˆ๋Š” ๊ฒƒ

 

- flask crud resful ์˜ˆ์ œ - get put delete ๋“ฑ ์ •๋ง ์ž‘์€ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ – micro ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์งฌ
- 
์ด๋Ÿฐ ์• ๋“ค์„ ์ปจํ…Œ์ด๋„ˆ ์œ„์— ๊ตฌํ˜„ํ•จ + ๊ตณ์ด ํ”„๋ ˆ์ž„์›Œํฌ ์•ˆ ์จ๋„ ๋˜๋Š”๋ฐ, ํ†ต๊ณ„ ์ •๋ณด ๋“ฑ ๊ธฐํƒ€ ํŽธํ•˜๋‹ˆ๊นŒ ์“ฐ๋Š” ๊ฒƒ

+ ๋„์ปค๋Š” ์ž๊ธฐ๊ฐ€ ์ง์ ‘, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” NodePort๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋Œ€์‹  ํ•˜๋Š” ๊ฒƒ 
 Cluster IP - 
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ๋„์šฐ์ž๋งˆ์ž get all์„ ํ•˜๋ฉด ์žˆ์Œ - DNS๋ฅผ ํฌํ•จํ•˜์—ฌ, ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์คŒ

 

 

 

Chap18. Microservices and Killercoda
- 
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋„์ปค ๊ธฐ๋ฐ˜์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ™œ์šฉํ•ด์„œ, ๊ทธ ์œ„์— ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•˜๋Š” ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ SW
- Basic Objects in k8s – Node, Cluster, Container, Pod, Deployment, Ingress 

* ์ปจํ…Œ์ด๋„ˆ ๊ฐœ๋…์€ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•จ - ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ๋Š” ์กฐ๊ธˆ ๋” ํฐ ๊ฐœ๋…์ด ํ•„์š” -> pod์„ ๊ณ ์•ˆํ•จ

 

* Pods - ๊ฐœ๋ฐœ ๊ด€์ ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„๋Š” ์ปจํ…Œ์ด๋„ˆ But ์šด์˜ ๊ด€์ ์—์„œ๋Š” DB, Logic ๋“ฑ์ด ํ•จ๊ป˜ ์›€์ง์ž„ 

- ๊ฐœ๋ณ„์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์šด์šฉํ•  ์ผX // ํ•จ๊ป˜ ์›€์ง์—ฌ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— IP Address๋ฅผ ๋ฌถ๋Š”๋‹ค. 

- ์œ ์˜๋ฏธํ•œ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ์ตœ์†Œ ๋‹จ์œ„๊ฐ€ pod - ๋‚ด๋ถ€์— ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ๋“ค์–ด๊ฐ
ex) 1a, 1b : 
์ปจํ…Œ์ด๋„ˆ1์— ํ•ด๋‹นํ•˜๋Š” ์• ๊ฐ€ 2๊ฐœ ๋– ์žˆ๊ตฌ๋‚˜ // ๋™์ผํ•œ IP Address๋ฅผ ํ•˜๋‚˜ ๋ถ€์—ฌํ•ด์„œ 3๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•จ๊ป˜ ์“ฐ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค - localhost๋กœ ๋ณธ์ธ๋“ค์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค

- basic building block of Kubernetes – the smallest and simplest unit in k8s – ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์šด์˜ ๊ด€์ ์ด๋‹ˆ๊นŒ 
- pod
์€ ํ•˜๋‚˜์˜ IP Address๋ฅผ ๊ณต์œ  - ํฌํŠธ ๋„˜๋ฒ„๋งŒ ๋‹ค๋ฅด๊ฒŒ ๋ถ€๋ฅด๋ฉด ๋จ / ๋‚ด๋ถ€ ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ์ž๊ธฐ๋“ค๋ผ๋ฆฌ ๋Œ€ํ™”ํ•˜๊ธฐ ์šฉ์ด
- Each pod is assigned a unique IP address – pod 
์•ˆ์˜ ์• ๋“ค์€ localhost์— port number๋งŒ ์ฃผ๋ฉด ๊ฐ์ž ์ ‘์† ๊ฐ€๋Šฅ

 

* Nodes - ๋…ธ๋“œ = ๋„์ปค ๋จธ์‹ , ์ปดํ“จํ„ฐ์— ์ƒ์‘ / A worker machine in Kubernetes – VM or physical machine 
- each node contains the services (a set of pods using label selectors) necessary to run pods 

* Clusters - ๋…ธ๋“œ๋“ค์˜ ์ง‘ํ•ฉ์ฒด๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ / ๋…ธ๋“œ๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ ์•ˆ์œผ๋กœ ๋Œ๋ ค๋“ค์–ด๊ฐ + ์Šคํ† ๋ฆฌ์ง€๋“ค์ด ํด๋Ÿฌ์Šคํ„ฐ์— ๋ถ™์Œ
- 
ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์ ์ธ ์ปดํ“จํ„ฐ, ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์šฐ๋ฆฌ์˜ ์šด์˜์˜ ๋Œ€์ƒ
- A set of nodes that run containerized applications managed by Kubernetes 
- 
์ด ํด๋Ÿฌ์Šคํ„ฐ๋‚˜ ๋…ธ๋“œ๋“ค์ด ์ง์ ‘ ์ธํ„ฐ๋„ท์— ๋…ธ์ถœ๋˜์ง€๋Š” ์•Š์Œ  ๋„คํŠธ์›Œํฌ๊ฐ€ ๋ฐฉ์–ด๋จ 

-> ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ€๋ ค๋ฉด ํด๋Ÿฌ์Šคํ„ฐ์— ๊ตฌ๋ฉ์„ ๋šซ์–ด์„œ ์™ธ๋ถ€๋กœ ๋‚˜๊ฐ€์•ผ ํ•จ

* Deployment - ํ•˜๋‚˜์˜ ์–ŒํŒŒ์ผ๋กœ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ๋‹ค ๋„์›€ – programmer describe a desired state in a Deployment
- 
๊ฐœ๋ฐœ์ž๋Š” ํฌ๋งํ•˜๋Š” ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•ด  ๋„์ปค ํŒŒ์ผ์€ ์‹คํ–‰, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋ถ€ํƒ (pod 4๊ฐœ๊ฐ€ ๋œจ๊ธธ ํฌ๋งํ•ฉ๋‹ˆ๋‹ค) 
- 4
๊ฐœ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ฃฝ์—ˆ์–ด -> ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋‹ค๊ฐ€ ๋‹ค์‹œ ์‚ด๋ ค์ค€๋‹ค - ์„œ๋น„์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ๋“  ์œ ์ง€๋˜๋„๋ก 
* 
์–ŒํŒŒ์ผ์— ์ธํ”„๋ผ ๊ธฐ์ˆ ํ•˜๋Š” ๊ฒƒ์ด desired state

 

** ๋„์ปคํ•˜๊ณ  ๋‹ค๋ฅธ ํฐ ์ฐจ์ด์ 

- ๋„์ปค์Šค์›œ vs ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค - ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—๋Š” ์„œ๋น„์Šค ์šด์˜ํ•  ๋•Œ ํ•„์š”ํ•œ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ๋งŽ์Œ 
- 
๋„์ปค๋Š” ๋„์ปค ์—”์ง„ / ๋„์ปค ๋ฐ๋ชฌ ๋ (๋‚ด๊ฐ€ ๋„์ปค ์—”์ง„์—๊ฒŒ CLI๋กœ 4๊ฐœ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š” ์š”์ฒญํ•จ) 
- 
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋ฌด์ˆ˜ํ•œ ํ”„๋กœ๊ทธ๋žจ๋“ค์˜ ๋ฉ์–ด๋ฆฌ - ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ํ•ด์ฃผ๋Š”๊ฑฐ์•ผ X ์•„์ฃผ ๊ตฌ์ฒด์ ์ธ Deployment Controller ํ”„๋กœ๊ทธ๋žจ์ด ํ•˜๋Š” ๊ฒƒ 
- 
๋„์ปค์—๊ฒŒ ๋ช…๋ น์„ ์ฃผ๋ฉด, ๋„์ปค๊ฐ€ ์ด์— ํ•ด๋‹นํ•˜๋Š” ํ–‰๋™์„ ํ•จ (4๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด๋ผ) - ์ด๊ฒŒ ๋„์ปค ์Šคํƒ€์ผ 

- ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ธ๊ฐ„์ด ์•„๋‹ˆ๋ผ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ํ•˜๋Š” ๊ฒƒ // 4๊ฐœ๊ฐ€ ๋™์ž‘ํ•˜๋„๋ก ๋งŒ๋“ค์–ด ์ฃผ์…จ์œผ๋ฉด ์ข‹๊ฒ ์–ด์š” ๋ถ€ํƒ (๊ฐœ๋ฐœ๊ณผ ์šด์˜์˜ ์ฐจ์ด์™€ ๋น„์Šท)

 

* Ingress – An API Object that manages external access to the services in a cluster, typically HTTP 
- ingress can provide load balancing, SSL termination and name-based virtual hosting 

+ ์ œ์ผ ์ฒ˜์Œ์—๋Š” service/cluster IP ๋”ฑ ํ•˜๋‚˜ ๋– ์žˆ์Œ - ์„œ๋น„์Šค ์•ˆ์˜ cluster IP / node port ์–˜๋„ ์„œ๋น„์Šค
- 
์„œ๋น„์Šค๊ฐ€ ๋ญ๋ƒ? ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค - ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋„ ์ฒ˜์Œ์—๋Š” ๋„์ปค ์Šค์›œ + borg, omega ์ •๋„ -> ์ ์  ๊ธฐ๋Šฅ์ด ๋งŽ์•„์ง 
- 
๊ฐœ๋ฐœํŒ€์—์„œ๋Š” ์ž์ฃผ ์“ฐ๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๊ณ , ์šด์˜ํŒ€์—์„œ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋กœ ์ด๊ฒƒ๋“ค์„ ๋„์ž…ํ•˜๋Š” ๊ฒƒ