Calico๋ฅผ ์‚ฌ์šฉํ•œ ๋„คํŠธ์›Œํฌ ์ •์ฑ… ์‹œํ–‰ ์˜ต์…˜ ์ดํ•ด

Calico๋ฅผ ์‚ฌ์šฉํ•œ ๋„คํŠธ์›Œํฌ ์ •์ฑ… ์‹œํ–‰ ์˜ต์…˜ ์ดํ•ด

Calico ๋„คํŠธ์›Œํฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ•˜๋“œ์›จ์–ด ํ˜ธ์ŠคํŠธ, ๊ฐ€์ƒ ๋จธ์‹  ๋ฐ ํฌ๋“œ๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•œ ํ†ตํ•ฉ ๊ตฌ๋ฌธ์œผ๋กœ ๊ด‘๋ฒ”์œ„ํ•œ ๋„คํŠธ์›Œํฌ ์ •์ฑ…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ •์ฑ…์€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚ด์— ์ ์šฉ๋˜๊ฑฐ๋‚˜ ๋‹ค์Œ์— ์ ์šฉ๋˜๋Š” ๊ธ€๋กœ๋ฒŒ ๋„คํŠธ์›Œํฌ ์ •์ฑ…์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์—”๋“œํฌ์ธํŠธ (ํ˜ธ์ŠคํŠธ์—์„œ ์ง์ ‘ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด - ํ˜ธ์ŠคํŠธ๋Š” ์„œ๋ฒ„ ๋˜๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์ผ ์ˆ˜ ์žˆ์Œ) ๋˜๋Š” ์›Œํฌ๋กœ๋“œ ์—”๋“œํฌ์ธํŠธ (์ปจํ…Œ์ด๋„ˆ ๋˜๋Š” ํ˜ธ์ŠคํŒ…๋œ ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด) Calico ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๋ฉด preDNAT, unraracked ๋ฐ applyOnForward์™€ ๊ฐ™์€ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ท ๊ฒฝ๋กœ์˜ ๋‹ค์–‘ํ•œ ์ง€์ ์— ๋ณด์•ˆ ์กฐ์น˜๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ต์…˜์˜ ์ž‘๋™ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๋ฉด ์ „์ฒด ์‹œ์Šคํ…œ์˜ ๋ณด์•ˆ๊ณผ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ํŒจํ‚ท ์ฒ˜๋ฆฌ ๊ฒฝ๋กœ(iptabels ์ฒด์ธ)์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์„ ๊ฐ•์กฐํ•˜๋ฉด์„œ ํ˜ธ์ŠคํŠธ ์—”๋“œํฌ์ธํŠธ์— ์ ์šฉ๋˜๋Š” ์ด๋Ÿฌํ•œ Calico ์ •์ฑ… ์˜ต์…˜(preDNAT, unraracked ๋ฐ applyOnForward)์˜ ๋ณธ์งˆ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ Kubernetes ๋ฐ Calico ๋„คํŠธ์›Œํฌ ์ •์ฑ…์˜ ์ž‘๋™ ๋ฐฉ์‹์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์‹œ๋„ํ•ด ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค ๊ธฐ๋ณธ ๋„คํŠธ์›Œํฌ ์ •์ฑ… ํŠœํ† ๋ฆฌ์–ผ ะธ ํ˜ธ์ŠคํŠธ ๋ณดํ˜ธ ํŠœํ† ๋ฆฌ์–ผ ์ด ๊ธ€์„ ์ฝ๊ธฐ ์ „์— Calico๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”. ๋˜ํ•œ ์—…๋ฌด์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์ดํ•ด๋„ ๊ฐ–๊ณ  ๊ณ„์‹œ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. iptables์— ๋ฆฌ๋ˆ…์Šค์—์„œ.

์˜ฅ์–‘๋ชฉ ๊ธ€๋กœ๋ฒŒ ๋„คํŠธ์›Œํฌ ์ •์ฑ… ๋ ˆ์ด๋ธ”์„ ๊ธฐ์ค€์œผ๋กœ ์ผ๋ จ์˜ ์•ก์„ธ์Šค ๊ทœ์น™์„ ํ˜ธ์ŠคํŠธ ๋ฐ ์›Œํฌ๋กœ๋“œ/ํฌ๋“œ ๊ทธ๋ฃน์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ€์ƒ ๋จธ์‹ , ํ•˜๋“œ์›จ์–ด์— ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ์‹œ์Šคํ…œ, Kubernetes ์ธํ”„๋ผ ๋“ฑ ์ด๊ธฐ์ข… ์‹œ์Šคํ…œ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์„ ์–ธ์  ์ •์ฑ… ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ(๋…ธ๋“œ)๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ์ˆ˜์‹  ํŠธ๋ž˜ํ”ฝ์— ๋„คํŠธ์›Œํฌ ์ •์ฑ…์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: NodePort ๋˜๋Š” ์™ธ๋ถ€ IP ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด).

๊ธฐ๋ณธ ์ˆ˜์ค€์—์„œ Calico๋Š” Pod๋ฅผ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•  ๋•Œ(์•„๋ž˜ ๋‹ค์ด์–ด๊ทธ๋žจ ์ฐธ์กฐ) ๊ฐ€์ƒ ์ด๋”๋„ท ์ธํ„ฐํŽ˜์ด์Šค(veth)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ํ˜ธ์ŠคํŠธ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ํฌ๋“œ์—์„œ ์ „์†กํ•œ ํŠธ๋ž˜ํ”ฝ์€ ์ด ๊ฐ€์ƒ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ํ˜ธ์ŠคํŠธ๋กœ ๋“ค์–ด์˜ค๋ฉฐ ๋ฌผ๋ฆฌ์  ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์˜ค๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Calico๋Š” ์ด๋Ÿฌํ•œ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ด๋ฆ„์„ caliXXX๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์€ ๊ฐ€์ƒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๋งˆ์น˜ ํฌ๋“œ๊ฐ€ ํ•œ ํ™‰ ๋–จ์–ด์ง„ ๊ฒƒ์ฒ˜๋Ÿผ iptables๋ฅผ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠธ๋ž˜ํ”ฝ์ด Pod๋กœ ๋“ค์–ด์˜ค๊ฑฐ๋‚˜ Pod์—์„œ ๋“ค์–ด์˜ค๋ฉด ํ˜ธ์ŠคํŠธ์˜ ๊ด€์ ์—์„œ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

Calico๋ฅผ ์‹คํ–‰ํ•˜๋Š” Kubernetes ๋…ธ๋“œ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ€์ƒ ์ธํ„ฐํŽ˜์ด์Šค(veth)๋ฅผ ์›Œํฌ๋กœ๋“œ์— ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์—์„œ๋Š” veth#10(calic1cbf1ca0f8)์ด calico-monitoring ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ cnx-manager-*์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[centos@ip-172-31-31-46 K8S]$ sudo ip a
...
10: calic1cbf1ca0f8@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1440 qdisc noqueue state UP group default
    link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netnsid 5
    inet6 fe80::ecee:eeff:feee:eeee/64 scope link
       valid_lft forever preferred_lft forever
...

[centos@ip-172-31-31-46 K8S]$ calicoctl get wep --all-namespaces
...
calico-monitoring cnx-manager-8f778bd66-lz45m                            ip-172-31-31-46.ec2.internal 192.168.103.134/32
calic1cbf1ca0f8
...

Calico๋ฅผ ์‚ฌ์šฉํ•œ ๋„คํŠธ์›Œํฌ ์ •์ฑ… ์‹œํ–‰ ์˜ต์…˜ ์ดํ•ด

Calico๊ฐ€ ๊ฐ ์›Œํฌ๋กœ๋“œ์— ๋Œ€ํ•œ veth ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด ์ •์ฑ…์„ ์–ด๋–ป๊ฒŒ ์‹œํ–‰ํ•ฉ๋‹ˆ๊นŒ? ์ด๋ฅผ ์œ„ํ•ด Calico๋Š” iptables๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ท ์ฒ˜๋ฆฌ ๊ฒฝ๋กœ์˜ ๋‹ค์–‘ํ•œ ์ฒด์ธ์— ํ›„ํฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์•„๋ž˜ ๋‹ค์ด์–ด๊ทธ๋žจ์€ iptables(๋˜๋Š” netfilter ํ•˜์œ„ ์‹œ์Šคํ…œ)์˜ ํŒจํ‚ท ์ฒ˜๋ฆฌ์™€ ๊ด€๋ จ๋œ ์ฒด์ธ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ํŒจํ‚ท์ด ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๋„์ฐฉํ•˜๋ฉด ๋จผ์ € PREROUTING ์ฒด์ธ์„ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ผ์šฐํŒ… ๊ฒฐ์ •์ด ๋‚ด๋ ค์ง€๊ณ  ์ด์— ๋”ฐ๋ผ ํŒจํ‚ท์€ INPUT(ํ˜ธ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค๋กœ ์ „๋‹ฌ) ๋˜๋Š” FORWARD(ํŒŸ ๋˜๋Š” ๋„คํŠธ์›Œํฌ์˜ ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ์ „๋‹ฌ)๋ฅผ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ํ”„๋กœ์„ธ์Šค์—์„œ ํŒจํ‚ท์€ OUTPUT์„ ๊ฑฐ์นœ ๋‹ค์Œ POSTROUTING ์ฒด์ธ์„ ๊ฑฐ์ณ ์ผ€์ด๋ธ”๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

Pod๋Š” iptables ์ฒ˜๋ฆฌ ์ธก๋ฉด์—์„œ (veth์— ์—ฐ๊ฒฐ๋œ) ์™ธ๋ถ€ ์—”ํ„ฐํ‹ฐ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์š”์•ฝํ•ด๋ณด์ž:

  • ์ „๋‹ฌ๋œ ํŠธ๋ž˜ํ”ฝ(nat, ๋ผ์šฐํŒ… ๋˜๋Š” ํฌ๋“œ์—์„œ/์œผ๋กœ)์€ PREROUTING - FORWARD - POSTROUTING ์ฒด์ธ์„ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค.
  • ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ํŠธ๋ž˜ํ”ฝ์€ PREROUTING - INPUT ์ฒด์ธ์„ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค.
  • ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค์˜ ํŠธ๋ž˜ํ”ฝ์€ OUTPUT - POSTROUTING ์ฒด์ธ์„ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค.

Calico๋ฅผ ์‚ฌ์šฉํ•œ ๋„คํŠธ์›Œํฌ ์ •์ฑ… ์‹œํ–‰ ์˜ต์…˜ ์ดํ•ด

Calico๋Š” ๋ชจ๋“  ์ฒด์ธ์— ์ •์ฑ…์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ •์ฑ… ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  Calico์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์ •์ฑ… ๊ตฌ์„ฑ ์˜ต์…˜์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ต์…˜ ๋ชฉ๋ก์˜ ์ˆซ์ž๋Š” ์œ„ ๋‹ค์ด์–ด๊ทธ๋žจ์˜ ์ˆซ์ž์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

  1. ์›Œํฌ๋กœ๋“œ ์—”๋“œํฌ์ธํŠธ(ํฌ๋“œ) ์ •์ฑ…
  2. ํ˜ธ์ŠคํŠธ ์—”๋“œํฌ์ธํŠธ ์ •์ฑ…
  3. ApplyOnForward ์˜ต์…˜
  4. PreDNAT ์ •์ฑ…
  5. ์ถ”์ ๋˜์ง€ ์•Š๋Š” ์ •์ฑ…

๋จผ์ € ์ •์ฑ…์ด ์›Œํฌ๋กœ๋“œ ์—”๋“œํฌ์ธํŠธ(Kubernetes Pod ๋˜๋Š” OpenStack VM)์— ์ ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณธ ๋‹ค์Œ ํ˜ธ์ŠคํŠธ ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•œ ์ •์ฑ… ์˜ต์…˜์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์›Œํฌ๋กœ๋“œ ์—”๋“œํฌ์ธํŠธ

์›Œํฌ๋กœ๋“œ ์—”๋“œํฌ์ธํŠธ ์ •์ฑ…(1)

์ด๋Š” kubernetes ํฌ๋“œ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. Calico๋Š” Kubernetes NetworkPolicy ์ž‘์—…์„ ์ง€์›ํ•˜์ง€๋งŒ Calico NetworkPolicy ๋ฐ GlobalNetworkPolicy์™€ ๊ฐ™์€ ์ถ”๊ฐ€ ์ •์ฑ…๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Calico๋Š” ๊ฐ Pod(์›Œํฌ๋กœ๋“œ)์— ๋Œ€ํ•œ ์ฒด์ธ์„ ์ƒ์„ฑํ•˜๊ณ  ์›Œํฌ๋กœ๋“œ์— ๋Œ€ํ•œ INPUT ๋ฐ OUTPUT ์ฒด์ธ์„ FORWARD ์ฒด์ธ์˜ ํ•„ํ„ฐ ํ…Œ์ด๋ธ”์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

ํ˜ธ์ŠคํŠธ ์—”๋“œํฌ์ธํŠธ

ํ˜ธ์ŠคํŠธ ์—”๋“œํฌ์ธํŠธ ์ •์ฑ…(2)

CNI(์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค) ์™ธ์—๋„ Calico ์ •์ฑ…์€ ํ˜ธ์ŠคํŠธ ์ž์ฒด๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Calico์—์„œ๋Š” ํ˜ธ์ŠคํŠธ ์ธํ„ฐํŽ˜์ด์Šค์™€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํฌํŠธ ๋ฒˆํ˜ธ์˜ ์กฐํ•ฉ์„ ์ง€์ •ํ•˜์—ฌ ํ˜ธ์ŠคํŠธ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์—”ํ„ฐํ‹ฐ์— ๋Œ€ํ•œ ์ •์ฑ… ์‹œํ–‰์€ INPUT ๋ฐ OUTPUT ์ฒด์ธ์˜ ํ•„ํ„ฐ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด (2) ๋…ธ๋“œ/ํ˜ธ์ŠคํŠธ์˜ ๋กœ์ปฌ ํ”„๋กœ์„ธ์Šค์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ˜ธ์ŠคํŠธ ์—”๋“œํฌ์ธํŠธ์— ์ ์šฉ๋˜๋Š” ์ •์ฑ…์„ ์ƒ์„ฑํ•˜๋ฉด ํฌ๋“œ๋กœ ๋“ค์–ด์˜ค๊ณ  ๋‚˜๊ฐ€๋Š” ํŠธ๋ž˜ํ”ฝ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Calico ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ ๋ฐ Pod์— ๋Œ€ํ•œ ํŠธ๋ž˜ํ”ฝ์„ ์ฐจ๋‹จํ•˜๊ธฐ ์œ„ํ•œ ๋‹จ์ผ ์ธํ„ฐํŽ˜์ด์Šค/๊ตฌ๋ฌธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ด๊ธฐ์ข… ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ์ •์ฑ… ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ํฌ๊ฒŒ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ˜ธ์ŠคํŠธ ์—”๋“œํฌ์ธํŠธ ์ •์ฑ…์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋˜ ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

ApplyOnForward ์ •์ฑ…(3)

ApplyOnForward ์˜ต์…˜์€ ํ˜ธ์ŠคํŠธ๊ฐ€ ์ „๋‹ฌํ•  ํŠธ๋ž˜ํ”ฝ์„ ํฌํ•จํ•˜์—ฌ ํ˜ธ์ŠคํŠธ ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์— ์ •์ฑ…์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก Calico ๊ธ€๋กœ๋ฒŒ ๋„คํŠธ์›Œํฌ ์ •์ฑ…์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋กœ์ปฌ ํฌ๋“œ๋‚˜ ๋„คํŠธ์›Œํฌ์˜ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์ „๋‹ฌ๋˜๋Š” ํŠธ๋ž˜ํ”ฝ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. Calico์—์„œ๋Š” PreDNAT๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ถ”์ ๋˜์ง€ ์•Š๋Š” ์ •์ฑ…์— ๋Œ€ํ•ด ์ด ์„ค์ •์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”. ๋˜ํ•œ ๊ฐ€์ƒ ๋ผ์šฐํ„ฐ๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด NAT๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ApplyOnForward๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ ํŠธ๋ž˜ํ”ฝ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜ธ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค์™€ Pod ๋ชจ๋‘์— ๋™์ผํ•œ ๋„คํŠธ์›Œํฌ ์ •์ฑ…์„ ์ ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ApplyOnForward ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ํ˜ธ์ŠคํŠธ ์—”๋“œํฌ์ธํŠธ์™€ ์›Œํฌ๋กœ๋“œ ์—”๋“œํฌ์ธํŠธ(Pod)์— ๋Œ€ํ•œ ๋ ˆ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. Calico๋Š” ์—”๋“œํฌ์ธํŠธ ์œ ํ˜•(ํ˜ธ์ŠคํŠธ์—”๋“œํฌ์ธํŠธ ๋˜๋Š” ์›Œํฌ๋กœ๋“œ)์— ๊ด€๊ณ„์—†์ด ๋ ˆ์ด๋ธ” ๊ธฐ๋ฐ˜ ์ •์ฑ…์„ ์‹œํ–‰ํ•  ๋งŒํผ ๋˜‘๋˜‘ํ•ฉ๋‹ˆ๋‹ค.

PreDNAT ์ •์ฑ…(4)

Kubernetes์—์„œ ์„œ๋น„์Šค ์—”ํ„ฐํ‹ฐ ํฌํŠธ๋Š” NodePorts ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์„ ํƒ์ ์œผ๋กœ(Calico๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ) ํด๋Ÿฌ์Šคํ„ฐ IP ๋˜๋Š” ์™ธ๋ถ€ IP ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ด‘๊ณ ํ•จ์œผ๋กœ์จ ์™ธ๋ถ€์— ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Kube-proxy๋Š” DNAT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค์— ๋ฐ”์ธ๋”ฉ๋œ ์ˆ˜์‹  ํŠธ๋ž˜ํ”ฝ์˜ ๊ท ํ˜•์„ ํ•ด๋‹น ์„œ๋น„์Šค์˜ Pod๋กœ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด NodePort๋ฅผ ํ†ตํ•ด ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ ์ •์ฑ…์„ ์–ด๋–ป๊ฒŒ ์‹œํ–‰ํ•ฉ๋‹ˆ๊นŒ? ํŠธ๋ž˜ํ”ฝ์ด DNAT(ํ˜ธ์ŠคํŠธ:ํฌํŠธ์™€ ํ•ด๋‹น ์„œ๋น„์Šค ๊ฐ„์˜ ๋งคํ•‘)์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋˜๊ธฐ ์ „์— ์ด๋Ÿฌํ•œ ์ •์ฑ…์ด ์ ์šฉ๋˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด Calico๋Š” "preDNAT: true"๋ผ๋Š” globalNetworkPolicy์— ๋Œ€ํ•œ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

pre-DNAT๊ฐ€ ํ™œ์„ฑํ™”๋˜๋ฉด ์ด๋Ÿฌํ•œ ์ •์ฑ…์€ ๋‹ค์ด์–ด๊ทธ๋žจ์˜ (4)(PREROUTING ์ฒด์ธ์˜ ๋งน๊ธ€ ํ…Œ์ด๋ธ”)์—์„œ DNAT ์ง์ „์— ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ •์ฑ…์˜ ์ ์šฉ์€ ํŠธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ๊ฒฝ๋กœ์—์„œ ํ›จ์”ฌ ๋” ์ผ์ฐ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ๋Š” ์ผ๋ฐ˜์ ์ธ ์ •์ฑ… ์ˆœ์„œ๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ preDNAT ์ •์ฑ…์€ ์ ์šฉ ์ˆœ์„œ๋ฅผ ์กด์ค‘ํ•ฉ๋‹ˆ๋‹ค.

pre-DNAT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์ฑ…์„ ์ƒ์„ฑํ•  ๋•Œ๋Š” ์ฒ˜๋ฆฌํ•˜๋ ค๋Š” ํŠธ๋ž˜ํ”ฝ์— ์ฃผ์˜ํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„์ด ๊ฑฐ๋ถ€๋˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. pre-DNAT ์ •์ฑ…์—์„œ 'ํ—ˆ์šฉ'์œผ๋กœ ํ‘œ์‹œ๋œ ํŠธ๋ž˜ํ”ฝ์€ ๋” ์ด์ƒ ํ˜ธ์ŠคํŠธ์—”๋“œํฌ์ธํŠธ ์ •์ฑ…์— ์˜ํ•ด ํ™•์ธ๋˜์ง€ ์•Š๋Š” ๋ฐ˜๋ฉด, pre-DNAT ์ •์ฑ…์— ์‹คํŒจํ•œ ํŠธ๋ž˜ํ”ฝ์€ ๋‚˜๋จธ์ง€ ์ฒด์ธ์„ ํ†ตํ•ด ๊ณ„์†๋ฉ๋‹ˆ๋‹ค.
Calico๋Š” ์ •์˜์— ๋”ฐ๋ผ ํŠธ๋ž˜ํ”ฝ ๋Œ€์ƒ์ด ์•„์ง ์„ ํƒ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ preDNAT๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ applyOnForward ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•˜๋„๋ก ์˜๋ฌดํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์€ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค๋กœ ์ „๋‹ฌ๋˜๊ฑฐ๋‚˜ ํฌ๋“œ ๋˜๋Š” ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”์ ๋˜์ง€ ์•Š๋Š” ์ •์ฑ… (5)

๋„คํŠธ์›Œํฌ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋™์ž‘์—๋Š” ํฐ ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทน๋‹จ์ ์ธ ๊ฒฝ์šฐ์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹จ๊ธฐ ์—ฐ๊ฒฐ์„ ๋งŽ์ด ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด conntrack(Linux ๋„คํŠธ์›Œํ‚น ์Šคํƒ์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ)์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ Linux์—์„œ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด conntrack์„ ์ˆ˜๋™์œผ๋กœ ๊ตฌ์„ฑ ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ conntrack์„ ์šฐํšŒํ•˜๋„๋ก iptables ๊ทœ์น™์„ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Calico์˜ ์ถ”์ ๋˜์ง€ ์•Š์€ ์ •์ฑ…์€ ์—ฐ๊ฒฐ์„ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์ฒ˜๋ฆฌํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋” ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์ธ ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋Œ€๊ทœ๋ชจ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ memcache๋ฅผ ๋˜๋Š” ์ถ”๊ฐ€ ๋ณดํ˜ธ ์กฐ์น˜๋กœ ๋”” ๋„์Šค.

์ด๊ฒƒ์„ ์ฝ์–ด๋ณด์„ธ์š” ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ (๋˜๋Š” ์šฐ๋ฆฌ์˜ ๋ฒˆ์—ญ) ์ถ”์ ๋˜์ง€ ์•Š์€ ์ •์ฑ…์„ ์‚ฌ์šฉํ•œ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ํฌํ•จํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•˜์„ธ์š”.

Calico globalNetworkPolicy์—์„œ "doNotTrack: true" ์˜ต์…˜์„ ์„ค์ •ํ•˜๋ฉด **์ถ”์ ๋˜์ง€ ์•Š๋Š”** ์ •์ฑ…์ด ๋˜๋ฉฐ Linux ํŒจํ‚ท ์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋งค์šฐ ์ดˆ๊ธฐ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์œ„ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๋ณด๋ฉด ์—ฐ๊ฒฐ ์ถ”์ (conntrack)์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์ถ”์ ๋˜์ง€ ์•Š์€ ์ •์ฑ…์ด ์›์‹œ ํ…Œ์ด๋ธ”์˜ PREROUTING ๋ฐ OUTPUT ์ฒด์ธ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ถ”์ ๋˜์ง€ ์•Š๋Š” ์ •์ฑ…์— ์˜ํ•ด ํŒจํ‚ท์ด ํ—ˆ์šฉ๋˜๋ฉด ํ•ด๋‹น ํŒจํ‚ท์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ์ถ”์ ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋„๋ก ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ ๋œป์€:

  • ์ถ”์ ๋˜์ง€ ์•Š์€ ์ •์ฑ…์€ ํŒจํ‚ท๋ณ„๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ(๋˜๋Š” ํ๋ฆ„)์˜ ๊ฐœ๋…์ด ์—†์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ๋ถ€์กฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • ์š”์ฒญ ๋ฐ ์‘๋‹ต ํŠธ๋ž˜ํ”ฝ์„ ๋ชจ๋‘ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ์ธ๋ฐ”์šด๋“œ ๋ฐ ์•„์›ƒ๋ฐ”์šด๋“œ ๋ชจ๋‘์— ๋Œ€ํ•œ ๊ทœ์น™์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด Calico๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‘๋‹ต ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉ๋œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด conntrack์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ์ถ”์ ๋˜์ง€ ์•Š์€ ์ •์ฑ…์€ Kubernetes ์›Œํฌ๋กœ๋“œ(Pod)์— ๋Œ€ํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ Pod์—์„œ ๋‚˜๊ฐ€๋Š” ์—ฐ๊ฒฐ์„ ์ถ”์ ํ•  ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ์ถ”์ ๋˜์ง€ ์•Š์€ ํŒจํ‚ท์—์„œ๋Š” NAT๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ปค๋„์ด NAT ๋งคํ•‘์„ conntrack์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ).
  • ์ถ”์ ๋˜์ง€ ์•Š๋Š” ์ •์ฑ…์—์„œ "๋ชจ๋‘ ํ—ˆ์šฉ" ๊ทœ์น™์„ ํ†ต๊ณผํ•˜๋ฉด ๋ชจ๋“  ํŒจํ‚ท์ด ์ถ”์ ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฑฐ์˜ ํ•ญ์ƒ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์ถ”์ ๋˜์ง€ ์•Š๋Š” ์ •์ฑ…์—์„œ ํ—ˆ์šฉ๋˜๋Š” ํŒจํ‚ท์„ ๋งค์šฐ ์„ ํƒ์ ์œผ๋กœ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ํŠธ๋ž˜ํ”ฝ์ด ์ผ๋ฐ˜ ์ถ”์  ์ •์ฑ…์„ ํ†ต๊ณผํ•˜๋„๋ก ํ—ˆ์šฉ).
  • ์ถ”์ ๋˜์ง€ ์•Š๋Š” ์ •์ฑ…์€ ํŒจํ‚ท ์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋งจ ์ฒ˜์Œ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” Calico ์ •์ฑ…์„ ์ž‘์„ฑํ•  ๋•Œ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. order:1์˜ ํฌ๋“œ ์ •์ฑ…๊ณผ order:1000์˜ ์ถ”์ ๋˜์ง€ ์•Š๋Š” ์ •์ฑ…์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ถ”์ ๋˜์ง€ ์•Š์Œ ์ •์ฑ…์€ ํฌ๋“œ ์ •์ฑ…๋ณด๋‹ค ๋จผ์ € ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ถ”์ ๋˜์ง€ ์•Š์€ ์ •์ฑ…์€ ์ •์ฑ… ๊ฐ„ ์‹คํ–‰ ์ˆœ์„œ๋งŒ ์กด์ค‘ํ•ฉ๋‹ˆ๋‹ค.

doNotTrack ์ •์ฑ…์˜ ๋ชฉ์  ์ค‘ ํ•˜๋‚˜๋Š” Linux ํŒจํ‚ท ์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋งค์šฐ ์ดˆ๊ธฐ์— ์ •์ฑ…์„ ์‹œํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ Calico๋Š” doNotTrack์„ ์‚ฌ์šฉํ•  ๋•Œ applyOnForward ์˜ต์…˜์„ ์ง€์ •ํ•˜๋„๋ก ์˜๋ฌดํ™”ํ•ฉ๋‹ˆ๋‹ค. ํŒจํ‚ท ์ฒ˜๋ฆฌ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์ฐธ์กฐํ•˜๋ฉด ๋ผ์šฐํŒ… ๊ฒฐ์ • ์ด์ „์— untracked(5) ์ •์ฑ…์ด ์ ์šฉ๋œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”. ํŠธ๋ž˜ํ”ฝ์€ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค๋กœ ์ „๋‹ฌ๋˜๊ฑฐ๋‚˜ ํฌ๋“œ ๋˜๋Š” ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ

Calico์˜ ๋‹ค์–‘ํ•œ ์ •์ฑ… ์˜ต์…˜(ํ˜ธ์ŠคํŠธ ์—”๋“œํฌ์ธํŠธ, ApplyOnForward, preDNAT ๋ฐ Untracked)๊ณผ ์ด๋Ÿฌํ•œ ์˜ต์…˜์ด ํŒจํ‚ท ์ฒ˜๋ฆฌ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ ์–ด๋–ป๊ฒŒ ์ ์šฉ๋˜๋Š”์ง€ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ž‘๋™ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๋ฉด ํšจ๊ณผ์ ์ด๊ณ  ์•ˆ์ „ํ•œ ์ •์ฑ…์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. Calico๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ ˆ์ด๋ธ”(๋…ธ๋“œ ๋ฐ Pod ๊ทธ๋ฃน)์— ์ ์šฉ๋˜๋Š” ๊ธ€๋กœ๋ฒŒ ๋„คํŠธ์›Œํฌ ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ •์ฑ…์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ณด์•ˆ ๋ฐ ๋„คํŠธ์›Œํฌ ์„ค๊ณ„ ์ „๋ฌธ๊ฐ€๋Š” Calico ์ •์ฑ…๊ณผ ํ•จ๊ป˜ ๋‹จ์ผ ์ •์ฑ… ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "๋ชจ๋“  ๊ฒƒ"(์—”๋“œํฌ์ธํŠธ ์œ ํ˜•)์„ ํ•œ ๋ฒˆ์— ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ์˜ ๋ง: ๊ฐ์‚ฌ๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์…˜ ํฌ๋žจํŠผ ะธ ์•Œ๋ ‰์‚ฌ ํด๋ฆฌํƒ€ ๊ทธ๋“ค์˜ ๊ฒ€ํ† ์™€ ๊ท€์ค‘ํ•œ ์ •๋ณด๋ฅผ ์œ„ํ•ด.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€