์ด ๊ธ์ Kubernetes Best Practice๋ฅผ ์ฝ๊ณ ๊ฐ์ธ์ ์ผ๋ก ์ค์ํ๋ค๊ณ ์๊ฐํ๋ ๋ถ๋ถ๊ณผ ์ ๋ชจ๋ฅด๋ ๋ถ๋ถ์ ๋ํด ๊ณต๋ถํ ๋ด์ฉ์ ์์ฑํ ๊ธ์ ๋๋ค.๋ชจ๋ ๋ด์ฉ์ ์ฑ ์ ํฌํจ๋์ด ์๋ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ์์ผ๋ฉฐ ์์ธํ ๋ด์ฉ์ด ๊ถ๊ธํ์ ๋ถ๋ค์ ์ฑ ์ ๊ตฌ๋งคํด์ ์ฝ๋ ๊ฒ์ ๊ถ์ฅ๋๋ฆฝ๋๋ค.
์ต๊ทผ ์๋น์ค ๋ฉ์์ ๋ํด ์์๋ณด๊ฑฐ๋ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ๊ณ ๊ณต๋ถํ๋ฉด์ ๊ฐ์ฅ ๋ง์ด ๋ค์๋ ์๊ฐ์ ์ด ๋ฐฉ๋ฒ์ด ์ต์ ์ธ๊ฐ? ๋ผ๋ ์๊ฐ์ด์์ต๋๋ค. ์ด์ ๋ํ ๊ถ๊ธ์ฆ์ ํด๊ฒฐํ๋๋ฐ ๋์์ด ๋ ๋งํ ์ฑ ์ ๋ฐ๊ฒฌํด์ ์ฝ์ด๋ณด๊ณ ์ ํฉ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค ๋คํธ์ํฌ ๊ท์น
์ฟ ๋ฒ๋คํฐ์ค ๋ด๋ถ ๋คํธ์ํฌ๋ ์๋นํ ๋ณต์กํ ์ฃผ์ ์ ๋๋ค. ์ด ์ฑ ์์๋ ๋คํธ์ํฌ์ ๋์ ๋ฐฉ์์ ๋ํ ์ ํํ ์ค๋ช ์ ํฌํจ๋์ด ์์ง ์์ง๋ง ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ๋ฉด์ ํ์ํ ์ปดํฌ๋ํธ ๊ฐ์ ํต์ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ค๋ฃจ๊ณ ์์ต๋๋ค.
๋ง์ฝ ์ฟ ๋ฒ๋คํฐ์ค ๋คํธ์ํฌ์ ๋ํด ๋ด์ฉ์ด ๊ถ๊ธํ์ ๋ถ์ ์ปคํผ ๊ณ ๋๋์ ๊ธ์์ ๋ณด๋ค ์์ธํ ๋ด์ฉ์ ํ์ธํ์ค ์ ์์ต๋๋ค.
๋์ผํ Pod์ ์ํด์๋ ์ปจํ ์ด๋ ๊ฐ ํต์
๋์ผํ Pod์ ์ํด์๋ ์ปจํ
์ด๋๋ localhost๋ฅผ ํตํด ์ํธ ํต์ ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ฆ, ๋์ผํ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๊ณ ์๊ณ ์ด๋ก ์ธํด ๊ฐ ์ปจํ
์ด๋๋ ๋ค๋ฅธ ํฌํธ๋ฅผ ์ด์ด๋์ด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๋์์ด ๊ฐ๋ฅํ ์ด์ ๋ Pod์ ๋ด๋ถ์์ ๋์ํ๊ณ ์๋ pause ์ปจํ
์ด๋ ๋๋ฌธ์
๋๋ค. pause ์ปจํ
์ด๋๋ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค๋ฅผ ๋์ผํ Pod์ ์กด์ฌํ๋ ์ปจํ
์ด๋๋ค์๊ฒ ๊ณต์ ํ๊ณ ์ด๋ก ์ธํด ์ปจํ
์ด๋๋ค์ ๋์ผํ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
pause ์ปจํ
์ด๋์ ๋ํ ์์ธํ ์ค๋ช
์ alice_k106๋์ ๊ธ์์ ํ์ธํ์ค ์ ์์ต๋๋ค. ์ดํดํ๊ธฐ ์ฝ๊ฒ ์ค๋ช
๋์ด ์์ผ๋ ์ฝ์ด๋ณด์๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
Pod ๊ฐ์ ํต์
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๋ด์ Pod์ NAT์์ด ํต์ ํ ์ ์์ด์ผ ํฉ๋๋ค. ์ฆ, ๋์ผํ ํด๋ฌ์คํฐ์ ์ํด์๋ Pod์ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ IP ๊ทธ๋๋ก (Node IP๊ฐ ์๋ Pod IP) ๋ค๋ฅธ Pod๊ณผ ํต์ ํ ์ ์์ต๋๋ค.
Service์ Pod ๊ฐ์ ํต์
Kubernetes๋ Pod์ IP๋ ์์์ ์ด๊ธฐ ๋๋ฌธ์ Service๋ฅผ ํตํด ๊ณ ์ ๋ IP ๋ฐ ํฌํธ๋ฅผ ํตํด ์ผ๊ด๋ ์ ๊ทผ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. Service๋ selector๋ฅผ ํตํด ๋งค์นญ๋๋ Endpoint์๊ฒ ํธ๋ํฝ์ ์ ๋ฌํฉ๋๋ค.
์๋น์ค๋ฅผ ๊ตฌํํ๋ ๋ด๋ถ ๊ธฐ์ ์ user-space mode์์ 1.2 ์ดํ๋ถํฐ iptable์ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค. ๋ ๋ฐฉ๋ฒ์ ์ฐจ์ด์ ์ ๋ํด ๊ฐ๋จํ ๋งํ์๋ฉด user-space mode๋ kube-proxy๊ฐ ์ง์ ํ๋ก์ ์ญํ ์ ์ํํ๋ ๊ฒ๊ณผ ๋ค๋ฅด๊ฒ iptable mode๋ kube-proxy๋ netfilter์๊ฒ proxy์ ์ญํ ์ ์์ํ๊ฒ ๋ฉ๋๋ค.
๋คํธ์ํฌ ํ๋ฌ๊ทธ์ธ
Kubernetes๋ ํ๋ฌ๊ทธ์ธ์ด ๊ฐ๋ฅํ ์ํคํ ์ณ๋ฅผ ์ํด ๋คํธ์ํฌ ํ์ค์ ์ ์ํ์์ต๋๋ค. ์ฌ๊ธฐ์๋ 2๊ฐ์ ๋คํธ์ํฌ ํ๋ฌ๊ทธ์ธ์ ๋ํด์ ๋ค๋ฃจ๊ณ ์์ต๋๋ค.
Kubenet
Kubenet์ Kubernetes๊ฐ ์ ๊ณตํ๋ ๋คํธ์ํฌ ํ๋ฌ๊ทธ์ธ์
๋๋ค. kubenet์ cbr0๋ผ๋ ๋ฆฌ๋
์ค ๋ธ๋ฆฟ์ง๋ฅผ ๋ง๋ค๊ณ ๊ฐ ์์ ํธ์คํธ ๋์ด cbr0์ ์ฐ๊ฒฐ๋ Pod์ ๋ํ veth ์์ ๋ง๋ญ๋๋ค. ์์ Pod ๋์๋ CIDR ๋ฒ์ ๋ด์ IP๋ฅผ ํ ๋น๋ฐ๊ฒ ๋ฉ๋๋ค.
(๋ฌธ์ ์ฐธ๊ณ )
์ด ๋ถ๋ถ์ ๋ํด์๋ ํ์ ํด๋ผ์ฐ๋ ํ๋ก๋ฐ์ด๋๋ฅผ ํตํด์๋ง ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ฉํ์๊ณ ์จํ๋ ๋ฏธ์ค ํ๊ฒฝ์์ ์ฌ์ฉํด๋ณธ์ ์ด ์์ด ์์ง ๋ชปํ ๋ถ๋ถ์ด์์ต๋๋ค. ์จํ๋ ๋ฏธ์ค ํ๊ฒฝ์์ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํด์ผํ๋ ๊ฒฝ์ฐ, Pod์ CIDR ๋ฒ์๋ ๋ผ์ฐํ ๊ท์น๊ณผ ๊ฐ์ ๊ฒฌ๊ณ ํ ๋คํธ์ํฌ ๊ด๋ฆฌ๊ฐ ํ์ํ๋ค๊ณ ํฉ๋๋ค.
CNI ํ๋ฌ๊ทธ์ธ
CNI๋ CNI์์ ์ธํฐํ์ด์ค, API ๋์, CRI์์ ์ธํฐํ์ด์ค์ ๊ฐ์ ๊ธฐ๋ฅ์ ์๊ตฌํ๋ ๋ช ์ธ์ ๋๋ค. CNI ํ๋ฌ๊ทธ์ธ์ ๊ฐ๋ฐ ๋ฐ ์ ํํ ๋ ๊ณ ๋ คํด์ผ ํ ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-
๊ตฌ์ถํ ์ธํ๋ผ์ ๋คํธ์ํน ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ํ์ํ ๊ธฐ๋ฅ์ด ์๋์ง ์ดํด๋ด์ผ ํฉ๋๋ค. ex) ๊ณ ๊ฐ์ฉ์ฑ, ๋ฉํฐ ํด๋ผ์ฐ๋ ์ฐ๊ฒฐ etc.
-
๋คํธ์ํฌ ๋ณด์/๊ด๋ฆฌ ๋ฑ์ ์ฌ์ฉ๋๋ ๋๊ตฌ์ CNI ํ๋ฌ๊ทธ์ธ์ด ํธํ๋๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค ์๋น์ค
์์ ๋ง์๋๋ฆฐ ๊ฒ์ฒ๋ผ Pod์ ์์์ ์ธ ํน์ฑ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ Pod์ ์ผ๊ด๋ ๋ฐฉ๋ฒ์ผ๋ก ์ ๊ทผํ๊ธฐ ์ํด Kubernetes๋ Service๋ผ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด ๋ ์๋น์ค์ ํ ๋น๋ IP์ Port๋ฅผ ์ค์ Pod(Endpoint)์ ๋งคํํ๋ ์ญํ ์ kube-proxy๊ฐ ์ํํ๊ฒ ๋ฉ๋๋ค.
์๋น์ค๋ 4๊ฐ์ง์ ๊ธฐ๋ณธ ํ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
ClusterIP
์๋น์ค ํ์ ์ ๋ช ์ํ์ง ์์ ๋ ๊ฐ์ง๊ฒ ๋๋ ๊ธฐ๋ณธ ๊ฐ์ ๋๋ค. ClusterIP๋ ์๋น์ค์ ์ง์ ๋ CIDR ๋ฒ์ ๋ด์์ IP๊ฐ ํ ๋น๋๋ ๋ฐฉ์์ ๋๋ค. ์๋น์ค๋ฅผ ์ ์ธํ๊ฒ ๋๋ฉด ํด๋ฌ์คํฐ ๋ด์์ *my-svc.my-namespace.svc.cluster-domain.example *์ DNS ์ด๋ฆ์ด ์์ฑ๋๊ณ ์ด๋ฅผ ํตํด ๋ค๋ฅธ ์๋น์ค ๋ฐ ์ค๋ธ์ ํธ์ ํต์ ํ ์ ์์ต๋๋ค.
์๋น์ค๋ Selector๋ฅผ ํตํด Endpoint๋ฅผ ๋งคํํ๋๋ฐ ๋ง์ฝ Selector๊ฐ ์ง์ ๋์ง ์์๋ค๋ฉด ํน์ Endpoint์ Port๋ฅผ ์ถ๊ฐํ๋ Endpoint API๋ฅผ ์ฌ์ฉํด ๋ช ์์ ์ผ๋ก ์ ์ํ ์ ์์ต๋๋ค. ํด๋น ๋ฐฉ๋ฒ์ ํ ์คํธ ์์ ์๋ ํด๋ฌ์คํฐ์ ์๋ DB๋ฅผ ์ฌ์ฉํ๊ณ ๋ฐฐํฌ ์ดํ ํด๋ฌ์คํฐ์ ๋ฐฐํฌ๋๋ DB๋ก ์๋น์ค๋ฅผ ๋ณ๊ฒฝํ๋ ์๋๋ฆฌ์ค ๋ฑ์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Nodeport
Nodeport ํ์ ์ ํด๋ฌ์คํฐ์ ๊ฐ ๋ ธ๋์ ๊ณ ์์ค ํฌํธ(30000 ~ 32767)๋ฅผ ๊ฐ ๋ ธ๋์ ์๋น์ค IP์ ํฌํธ์ ํ ๋นํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ํด๋ฌ์คํฐ ์ธ๋ถ์์ ์๋น์ค์ ์ง์ ์ ๊ทผํ๊ธฐ ์ํด์๋ NodeIP:NodePort๋ฅผ ํตํด ์ ๊ทผํ ์ ์์ต๋๋ค.
ExternalName
ํด๋ฌ์คํฐ ์์ค์์์ DNS ์ด๋ฆ์ ์ธ๋ถ DNS ์๋น์ค์ ์ ๋ฌํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์ค์ ๋ก ํ์ ์์๋ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์ ํ์ ์ด๋ผ๊ณ ํ๋ฉฐ ํด๋ผ์ฐ๋ ํ๋ก๋ฐ์ด๋์์ ์ ๊ณตํ๋ ๊ณ ์ DNS๋ฅผ ๊ฐ์ง๋ ์๋ฃจ์ ์ ์ฌ์ฉํ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
LoadBalancer
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๊ณต๊ธ์๊ฐ ์ ๊ณตํ๋ ๋ก๋ ๋ฐธ๋ฐ์ฑ ๋ฉ์ปค๋์ฆ์ ๋ฐฐํฌํ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก LoadBalancer ํ์ ์ ๋๋ค. ํด๋ผ์ฐ๋ ํ๋ก๋ฐ์ด๋๋ฅผ ํตํด ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ฐ ํด๋ผ์ฐ๋์ ์กด์ฌํ๋ ๋ก๋๋ฐธ๋ฐ์ฑ ๊ธฐ๋ฅ์ ํ์ฑํํ๊ธฐ ์ํ ์ด๋ ธํ ์ด์ ์ด ์กด์ฌํ๊ณ , ์ด๋ฅผ ํตํด ๋ก๋ ๋ฐธ๋ฐ์ฑ ์ค์ ์ ํ ์ ์์ต๋๋ค.
Ingress
์์ 4๊ฐ์ง ํ์ ์ฒ๋ผ ์ฟ ๋ฒ๋คํฐ์ค์ ์๋น์ค ํ์ ์ ์๋์ง๋ง ํธ๋ํฝ ๊ด๋ฆฌ๋ฅผ ์ํด Ingress์ ๋ํด ์์๋ ํ์๊ฐ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Kubernetes Service๋ L4 ์์ค์ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค. ํ์ง๋ง ์ดํ๋ฆฌ์ผ์ด์ ์ ์ด์ํ๋ฉฐ ์ด๋ณด๋ค ์ธ๋ฐํ ์ฆ, L7 ์์ค์ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ถ๋ช ์กด์ฌํฉ๋๋ค.
Ingress๋ L7 ์์ค์ ๋ก๋ ๋ฐธ๋ฐ์๋ก ํธ์คํธ ๋ฐ ๋ผ์ฐํ ๊ท์น์ ๊ธฐ๋ฐ์ผ๋ก ํน์ ์๋น์ค์๊ฒ ํธ๋ํฝ์ ์ ๋ฌํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด /login ๊ฒฝ๋ก๋ก ๋ค์ด์ค๋ ํธ๋ํฝ์ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ์ํํ๋ Pod๊ณผ ๋งคํ๋์ด ์๋ Service๋ก, /buy ๊ฒฝ๋ก๋ก ๋ค์ด์ค๋ ํธ๋ํฝ์ ๊ตฌ๋งค ๊ธฐ๋ฅ์ ์ํํ๋ Pod๊ณผ ๋งคํ๋ Service๋ก ํธ๋ํฝ์ ์ ๋ฌํ ์ ์์ต๋๋ค. ๋ํ TLS์ ๊ฐ์ ๋ณด์ ๊ด๋ จ ์ค์ ๋ค๋ Ingress์์ ์งํํ ์ ์์ต๋๋ค.
Ingress๋ ํธ๋ํฝ ๊ท์น์ ์ ์ํ ์ค๋ธ์ ํธ์ด๊ธฐ ๋๋ฌธ์ ์ค์ ํธ๋ํฝ์ ํด๋น ๊ท์น์ ์ ์ฉํ๊ธฐ ์ํด์๋ Ingress Controller๊ฐ ํ์ํฉ๋๋ค. Ingress Controller๋ก๋ NGINX๋ HAProxy์ ๊ฐ์ด ๋ค์ํ ์๋ฃจ์ ์ ์ ํํ ์ ์์ต๋๋ค.
๋คํธ์ํฌ๋ฅผ ์ฝ๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฑ ์์ ์ ์ํ๋ ์๋น์ค ๋ฐ ์ธ๊ทธ๋ ์ค ๊ด๋ จ ๋ชจ๋ฒ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-
ํด๋ฌ์คํฐ ์ธ๋ถ์์ ์ ๊ทผํ๋ ์๋น์ค ์๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋๋ถ๋ถ์ ์๋น์ค๋ ํด๋ฌ์คํฐ ๋ด๋ถ์์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ClusterIP ํ์ ์ ์ฌ์ฉํ๊ณ ์ธ๋ถ ์ ๊ทผ์ด ํ์ํ ์๋น์ค๋ง ๋ ธ์ถํ๋ ๊ฒ์ด ์ด์์ ์ ๋๋ค.
-
์ธ๋ถ์ ๋ ธ์ถํ๋ ์๋น์ค๊ฐ HTTP/HTTPS ๊ธฐ๋ฐ์ด๋ผ๋ฉด Ingress๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. Ingress๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์ดํ๋ฆฌ์ผ์ด์ ์ ํธ๋ํฝ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ฅ์ Ingress์๊ฒ ์์ํ ์ ์๊ณ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ ์ ์์ต๋๋ค.
-
์ธ๊ทธ๋ ์ค ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ ๋ HA๊ฐ ๊ณ ๋ ค๋์๋์ง ํ์ธํ๊ณ ์ฒ๋ฆฌ๋์ ํ์ธํด์ผ ํฉ๋๋ค. ๋ฉํธ๋ฆญ์ ์์งํด ์ธ๊ทธ๋ ์ค ์ปจํธ๋กค๋ฌ๋ฅผ ์ ์ ํ๊ฒ ํ์ฅํ๊ณ ํ์ฅ์ ์ํํ๋ ๋์ ํด๋ผ์ด์ธํธ๊ฐ ์ค๋จ๋์ง ์๋ ์๋๋ฆฌ์ค๋ฅผ ๊ฒ์ฆํด์ผ ํฉ๋๋ค.
๋คํธ์ํฌ ๋ณด์ ์ ์ฑ
์ฟ ๋ฒ๋คํฐ์ค๋ NetworkPolicy API๋ฅผ ํตํด Ingress/Egress ์ ๊ทผ์ ์ ์ดํ ์ ์์ต๋๋ค. Network Policy API์ ๋ช ์ธ์๋ podSelector, ingress, egress, policyType ํ๋๊ฐ ์กด์ฌํ๋ฉฐ podSelector๋ฅผ ํตํด Pod์ ์ ํํ ์ ์์ต๋๋ค. ๋ง์ฝ Pod์ ์ง์ ํ์ง ์์ผ๋ฉด ๋์ผํ ๋ค์์คํ์ด์ค์ ์กด์ฌํ๋ ๋ชจ๋ Pod์ ์ ์ฉ๋ฉ๋๋ค.
์ ํ๋ Pod์ ์ ์๋ Ingress, Egress ๊ท์น์ ํ์ฉ๋๋ Whitelist๋ฅผ ์์ฑํ๊ณ ํด๋น Pod์ ๋ํ ์์ฒญ์ ์ค์ง Whitelist๋ง ํ์ฉ๋ฉ๋๋ค. ๋ง์ฝ Ingress์ Egress๊ฐ ๋ช ์๋์ง ์์์ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ์ธ๋ฐ์ด๋ ํธ๋ํฝ / ์์๋ฐ์ด๋ ํธ๋ํฝ์ด ์ฐจ๋จ๋ฉ๋๋ค.
ํ๋์ ์์๋ก Frontend => Backend => DB Layer๋ก ์ด๋ฃจ์ด์ง ์ดํ๋ฆฌ์ผ์ด์ ์ด ์กด์ฌํ๋ค๊ณ ๊ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค. Frontend ์๋น์ค๋ ๋ชจ๋ ๊ณณ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ผํ๋ฉฐ, Backend๋ ์ค์ง Frontend ์๋น์ค์์๋ง, DB๋ ์ค์ง Backend ์๋น์ค์์๋ง ์ ๊ทผ์ด ํ์ฉ๋์ด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํ NetworkPolicy ์ค์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋จผ์ ๋ชจ๋ ์ธ๋ฐ์ด๋์ ๋ํ ํธ๋ํฝ์ ์ฐจ๋จํ ์ดํ, ๊ฐ ๋ชฉ์ ์ ๋ง๋ ์ธ๋ฐ์ด๋๋ฅผ ํ์ฉํ๊ธฐ ์ํ Ingress๋ฅผ ์ ์ํด์ค ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ชจ๋ ์ธ๋ฐ์ด๋์ ๋ํ ํธ๋ํฝ์ ์ฐจ๋จํ๋ ์ด์ ๋ ์ค์๋ก ๋คํธ์ํฌ ์ ์ฑ ์ ์ญ์ ํ๋๋ผ๋ ์ธ๋ถ๋ก ์๋น์ค๊ฐ ๋ ธ์ถ๋์ง ์๋๋ก ํ๊ธฐ ์ํจ์ ๋๋ค.
apiVersion: networking.k82.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
---
apiVersion: networking.k82.io/v1
kind: NetworkPolicy
metadata:
name: frontend-policy
spec:
podSelector:
matchLabels:
app: "frontend"
policyTypes:
- Ingress
ingress:
- {}
---
apiVersion: networking.k82.io/v1
kind: NetworkPolicy
metadata:
name: backend-policy
spec:
podSelector:
matchLabels:
app: "backend"
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: "frontend"
---
apiVersion: networking.k82.io/v1
kind: NetworkPolicy
metadata:
name: db-policy
spec:
podSelector:
matchLabels:
app: "db"
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: "backend"
์ฑ ์์ ์ ์ํ๋ ๋คํธ์ํฌ ์ ์ฑ ์ ์ค์ ๋ฐ ๊ด๋ฆฌํ ๋ ๋ชจ๋ฒ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-
๊ฐ ๋ค์์คํ์ด์ค์ ๋ชจ๋ ์ธ๋ฐ์ด๋๋ฅผ ์ฐจ๋จํ๋ ๊ธฐ๋ณธ ํธ๋ํฝ์ ์ ์ํ๋ฉด ์ค์๋ก ๋คํธ์ํฌ ์ ์ฑ ์ ์ญ์ ํ๋๋ผ๋ ๋ ธ์ถ์ ๋ง์ ์ ์์ต๋๋ค.
-
์ดํ๋ฆฌ์ผ์ด์ ์ํฌ๋ก๋๋ฅผ ๋์ผํ ๋ค์์คํ์ด์ค์ ๋ฐฐ์นํ์ฌ ๋คํธ์ํฌ ์ ์ฑ ์ ๋จ์ํ๊ฒ ๋ง๋๋ ๊ฒ์ด ๊ด๋ฆฌ์ ์ฉ์ดํฉ๋๋ค.
์๋น์ค ๋ฉ์
ํด๋ฌ์คํฐ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ํธ๋ํฝ์ ๋ํ ๊ด๋ฆฌ์ ๋์ด๋๊ฐ ์ ์ฐจ ์ฆ๊ฐํฉ๋๋ค. ์๋น์ค ๋ฉ์๋ ์ฌ์ด๋์นด ํ๋ก์๋ฅผ ํตํด ์ดํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ์ง๊ณ ์๋ ๋คํธ์ํฌ์ ๊ด๋ จ๋ ๋ณต์ก์ฑ์ ์ ๊ฑฐํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์๋น์ค ๋ฉ์์ ๊ด๋ จ๋ ๋ด์ฉ์ ์๋น์ค ๋ฉ์ ์๋ฆฌ์ฆ์์ ๋ค๋ฃจ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ๋ค๋ฃจ์ง๋ ์๊ฒ ์ง๋ง, ์๋น์ค ๋ฉ์๋ฅผ ๋์ ํ ๋ ๊ณ ๋ คํด์ผ ํ ์ ๋ค์ ๋ํด์ ๊ฐ๋จํ๊ฒ ๋ค๋ฃจ์ด๋ณด๊ณ ์ ํฉ๋๋ค.
์๋ ๋ฉด์ ์ ์งํํ๋ฉด์ ๊ถ๊ธํ๋ ๋ถ๋ถ์ Tracing๋ฅผ ์ด๋ป๊ฒ ์ผ๋ฐํ ์์ผ ์ ์ฉํ ์ ์๋์ง ์์ต๋๋ค. ๋น์ ๋ฉด์ ๊ด๋๊ป์ ํด์ฃผ์ จ๋ ๋๋ต์ ์ด๋ฅผ ์ํด์ Istio์ ๊ฐ์ ์๋น์ค๋ฉ์ ๋์ ์ ๊ณ ๋ คํ๊ณ ์์ง๋ง, ์์ง ์์ ํ ์ฑ์๋ ๊ธฐ์ ์ด ์๋๊ณ ์๋น์ค ๋ฉ์๋ฅผ ๋์ ํจ์ผ๋ก์จ ๊ด๋ฆฌํด์ผํ ๋ ์ด์ด๊ฐ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ์์ง ๊ณ ๋ ค ์ค์ ์๋ค๋ ๋ง์์ด์์ต๋๋ค.
์ฑ ์์๋ ๋์ผํ๊ฒ ์๋น์ค ๋ฉ์๋ ๊ด๋ฆฌ๊ฐ ๋ณต์กํ๊ณ ํ๊ฒฝ์ด ๋ถ์์ ํด์ง ์ ์๋ ํ๋ก์ธ์ค์ด๊ธฐ ๋๋ฌธ์ ์ต์ํ์ง ์๋ค๋ฉด์์ ์ ์ง์์ ๊ณ ๋ คํด์ผ ํ๋ค๋ ์ ์ ์ธ๊ธํ๊ณ ์์ผ๋ฉฐ ๋์ ์ ์ฌ์ด๋ ์ดํํธ์ ๋ํ ์ถฉ๋ถํ ๊ณ ๋ ค๊ฐ ํ์ํ๋ค๋ ์ ์ ์์ง ๋ง์์ผ ํฉ๋๋ค.
'๐ Book Review > ๐ Kubernetes Best Practice' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kubernetes Best Practice] 13. ์ธ๋ถ ์๋น์ค์ ์ฟ ๋ฒ๋คํฐ์ค ํตํฉ (0) | 2021.04.04 |
---|---|
[Kubernetes Best Practice] 10. ํ๋์ ์ปจํ ์ด๋ ๋ณด์ (0) | 2021.03.23 |
[Kubernetes Best Practice] 8. ๋ฆฌ์์ค ๊ด๋ฆฌ (0) | 2021.03.01 |
[Kubernetes Best Practice] 6. ๋ฒ์ , ๋ฆด๋ฆฌ์ค, ๋กค์์ (0) | 2021.03.01 |
[Kubernetes Best Practice] 5. ์ง์์ ํตํฉ, ํ ์คํธ, ๋ฐฐํฌ (0) | 2021.02.25 |
๋๊ธ