Stars Policy Demo
์ด ์ค์ต์์๋ EKS ํด๋ฌ์คํฐ์ ํ๋ฐํธ์๋, ๋ฐฑ์๋, ํด๋ผ์ด์ธํธ ๋ฐ UI ์๋น์ค๋ฅผ ๋ง๋ค๊ณ ์ด๋ฌํ ์๋น์ค ๊ฐ์ ํต์ ์ ํ์ฉํ๊ฑฐ๋ ์ฐจ๋จํ๋ ๋คํธ์ํฌ ์ ์ฑ ์ ์ ์ํฉ๋๋ค. ์ด ๋ฐ๋ชจ์๋ ๊ฐ ์๋น์ค๊ฐ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์์ ๋ฐ ์ก์ ๊ฒฝ๋ก๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ด๋ฆฌ UI๋ ์์ต๋๋ค.
1. ์ฌ์ ์ค๋นํ๊ธฐ
๋คํธ์ํฌ ์ ์ฑ ์ ๋ง๋ค๊ธฐ ์ ์ ํ์ํ ๋ฆฌ์์ค๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ๊ตฌ์ฑ ํ์ผ์ ๋ํ ์ ํด๋๋ฅผ ๋ง๋ญ๋๋ค.
mkdir ~/environment/calico_resources
cd ~/environment/calico_resources
๋ค์ ๋ช ๋ น์ Cloud9 ํฐ๋ฏธ๋์ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ ํ์ฌ stars ๋ค์์คํ์ด์ค๋ฅผ ์์ฑํฉ๋๋ค.
cd ~/environment/calico_resources
wget https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/namespace.yaml
cat namespace.yaml์ ์คํํ์ฌ ํ์ผ์ ์ดํด ๋ณด๊ฒ ์ต๋๋ค.

stars๋ผ๋ ๋ค์์คํ์ด์ค๋ฅผ ๋ง๋ญ๋๋ค.
kubectl apply -f namespace.yaml
์ดํ ๋จ๊ณ์์ ์ด ๋ค์ ์คํ์ด์ค์ ํ๋ฐํธ ์๋ ๋ฐ ๋ฐฑ์๋ replication controllers์ services๋ฅผ ๋ง๋ญ๋๋ค.
๋ค์ ๋ช ๋ น์ Cloud9 ํฐ๋ฏธ๋์ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ ํฉ๋๋ค.
cd ~/environment/calico_resources
wget https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/management-ui.yaml
wget https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/backend.yaml
wget https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/frontend.yaml
wget https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/client.yaml
cat management-ui.yaml์ ์คํํ์ฌ ํ์ผ์ ์ดํด ๋ด
๋๋ค.

ํด๋น ๋ค์ ์คํ์ด์ค ๋ด์์ ๊ด๋ฆฌ UI ์๋น์ค ๋ฐ ๋ ํ๋ฆฌ์นด ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌ UI ๋ค์ ์คํ์ด์ค๋ฅผ ๋ง๋ญ๋๋ค.
kubectl apply -f management-ui.yaml
cat backend.yaml ๊ณผ cat frontend.yaml์ ์คํํ์ฌ ๋ฐฑ์๋ ์๋น์ค์ ํ๋ฐํธ ์๋ ์๋น์ค๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ถ ๋์๋์ง ํ์ธ ํฉ๋๋ค.
stars ๋ค์ ์คํ์ด์ค ๋ด์์ ํ๋ฐํธ ์๋ ๋ฐ ๋ฐฑ์๋ ๋ ํ๋ฆฌ์นด ์ปจํธ๋กค๋ฌ์ ์๋น์ค๋ฅผ ๋ง๋ญ๋๋ค.
kubectl apply -f backend.yaml
kubectl apply -f frontend.yaml
๋ง์ง๋ง์ผ๋ก cat client.yaml์ ์คํํ์ฌ ํด๋ผ์ด์ธํธ ๋ค์ ์คํ์ด์ค์ ๋ ํ๋ฆฌ์นด ์ปจํธ๋กค๋ฌ์ ๋ํ ํด๋ผ์ด์ธํธ ์๋น์ค๋ฅผ ์ดํด ๋ณด๊ฒ ์ต๋๋ค.

ํด๋ผ์ด์ธํธ ๊ตฌ์ฑ์ ์ ์ฉ ํฉ๋๋ค.
kubectl apply -f client.yaml
์ํ๋ฅผ ํ์ธํ๊ณ ๋ชจ๋ ํ๋๊ฐ ์คํ ์ค ์ํ๊ฐ ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค:
kubectl get pods --all-namespaces
์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.

ํ์ํ ๋ชจ๋ Docker ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ ํ๋๋ฐ ๋ช ๋ถ ์ ๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
์์ฑํ ๋ฆฌ์์ค๋ฅผ ์์ฝํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
stars๋ผ๋ ๋ค์์คํ์ด์ค
stars ๋ค์ ์คํ์ด์ค ๋ด์ ํ๋ฐํธ์๋ ๋ฐ ๋ฐฑ์๋ replica ๋ฐ service
management-ui๋ผ๋ ๋ค์์คํ์ด์ค
management-ui ๋ค์์คํ์ด์ค์ ๋ธ๋ผ์ฐ์ ์ ํ์๋๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋ํ ๋ฐฐํฌ ๋ฐ ์๋น์ค management-ui
client๋ผ๋ ๋ค์์คํ์ด์ค
client ๋ค์์คํ์ด์ค ๋ด์ client deployment ๋ฐ service
2. ํ๋ ๊ฐ ๊ธฐ๋ณธ ํต์
์ฟ ๋ฒ๋คํฐ์ค์์ ํ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ค ํธ์คํธ์ ์ฐ๊ฒฐ ๋์๋์ง์ ๊ด๊ณ์์ด ๋ค๋ฅธ ํ๋์ ํต์ ํ ์ ์์ต๋๋ค. ๋ชจ๋ ํ๋์๋ ๊ณ ์ ํ IP ์ฃผ์๊ฐ ์์ผ๋ฏ๋ก ํ๋๊ฐ์ ๋งํฌ๋ฅผ ๋ช ์์ ์ผ๋ก ๋ง๋ค ํ์๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ management-ui์ ์ํด ์์ฐ ๋ฉ๋๋ค.

๊ด๋ฆฌ UI๋ฅผ ์ด๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌ UI์ DNS ์ด๋ฆ์ ๊ฒ์ ํ์ญ์์ค:
kubectl get svc -o wide -n management-ui
๊ฒฐ๊ณผ์์ EXTERNAL-IP๋ฅผ ๋ณต์ฌํ๊ณ ๋ธ๋ผ์ฐ์ ์ ๋ถ์ฌ ๋ฃ์ต๋๋ค. EXTERNAL-IP ์ด์๋ โelb.amazonaws.comโ์ผ๋ก ๋๋๋ ๊ฐ์ด ํฌํจ๋ฉ๋๋ค.

์ฌ๊ธฐ์ UI๋ ์๋ก ์ฐ๊ฒฐํ ์ ์๋ ๋ชจ๋ ์๋น์ค์ ๊ธฐ๋ณธ ๋์์ ๋ณด์ฌ ์ค๋๋ค.

3. ๋คํธ์ํฌ ์ ์ฑ
์ ์ฉํ๊ธฐ
ํ๋ก๋์ ์์ค์ ํด๋ฌ์คํฐ์์ ํ๋ ๊ฐ ํต์ ์ ๊ฐ๋ฐฉํ๋ ๊ฒ์ ์์ ํ์ง ์์ต๋๋ค. ์๋น์ค๋ฅผ ์๋ก ๋ถ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ดํด ๋ณด๊ฒ ์ต๋๋ค.
๋ค์ ๋ช ๋ น์ Cloud9 ํฐ๋ฏธ๋์ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ ํ์ญ์์ค.
cd ~/environment/calico_resources
wget https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/apply_network_policies.files/default-deny.yaml
cat default-deny.yaml์ ์คํํ์ฌ ํ์ผ์ ์ดํด ๋ณด๊ฒ ์ต๋๋ค.

๋คํธ์ํฌ ์ ์ฑ ์ ์ดํด ๋ณด๋ฉด, ์ฌ๊ธฐ์์ podSelector์๋ matchLabels๊ฐ ์์ผ๋ฏ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ pod๊ฐ ์ก์ธ์คํ์ง ๋ชปํ๋๋ก ์ฐจ๋จํฉ๋๋ค.
stars ๋ค์์คํ์ด์ค (ํ๋ฐํธ ์๋ ๋ฐ ๋ฐฑ์๋ ์๋น์ค) ๋ฐ client ๋ค์์คํ์ด์ค (ํด๋ผ์ด์ธํธ ์๋น์ค)์ ๋คํธ์ํฌ ์ ์ฑ ์ ์ ์ฉํฉ๋๋ค.
kubectl apply -n stars -f default-deny.yaml
kubectl apply -n client -f default-deny.yaml
๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ก ๊ณ ์น๋ฉด ๊ด๋ฆฌ UI๊ฐ ๋ ธ๋์ ๋๋ฌ ํ ์ ์์ผ๋ฏ๋ก UI์ ์๋ฌด๊ฒ๋ ํ์๋์ง ์์ต๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค์ ๋คํธ์ํฌ ์ ์ฑ ์ ๋ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ํ๋๋ฅผ ์ ํํ๊ณ ํด๋น ํ๋์ ๋๋ฌ ํ ์ ์๋ ํธ๋ํฝ์ ๋ํ ๊ท์น์ ์ ์ ํฉ๋๋ค. ์์ ๋๋ ์ก์ ๋๋ ๋ ๋ค๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ๊ฐ ๊ท์น์ from ๋ฐ ports ์น์ ๋ชจ๋์ ์ผ์นํ๋ ํธ๋ํฝ์ ํ์ฉํฉ๋๋ค.
๋ ๊ฐ์ ์ ๋คํธ์ํฌ ์ ์ฑ ์ ๋ง๋ญ๋๋ค.
๋ค์ ๋ช ๋ น์ Cloud9 ํฐ๋ฏธ๋์ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ ํ์ญ์์ค.
cd ~/environment/calico_resources
wget https://eksworkshop.com/calico/stars_policy_demo/apply_network_policies.files/allow-ui.yaml
wget https://eksworkshop.com/calico/stars_policy_demo/apply_network_policies.files/allow-ui-client.yaml
๋ค์ cat allow-ui.yaml์ ์คํํ์ฌ ํ์ผ ๋ด์ฉ์ ๊ฒ์ฌ ํ ์ ์์ต๋๋ค.

cat allow-ui-client.yaml์ ์คํํ์ฌ ํ์ผ ๋ด์ฉ์ ๊ฒ์ฌ ํ ์ ์์ต๋๋ค.

ํด๋น ํ์ฉ ์ ์ฑ ์ ์ ์ฉํ๊ณ ๊ด๋ฆฌ UI๋ฅผ ํ์ธํฉ๋๋ค.
kubectl apply -f allow-ui.yaml
kubectl apply -f allow-ui-client.yaml
๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ก ๊ณ ์น๋ฉด ๊ด๋ฆฌ UI๊ฐ ๋ชจ๋ ์๋น์ค์ ๋๋ฌ ํ ์ ์์ง๋ง ์๋ก ํต์ ํ ์ ์์์ ์ ์ ์์ต๋๋ค.

4. ๋ฐฉํฅ์ฑ ํธ๋ํฝ ํ์ฉํ๊ธฐ
ํด๋ผ์ด์ธํธ์์ ํ๋ฐํธ ์๋ ๋ฐ ๋ฐฑ์๋๋ก์ ๋ฐฉํฅ์ฑ ํธ๋ํฝ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ดํด ๋ณด๊ฒ ์ต๋๋ค.
๋ค์ ๋ช ๋ น์ Cloud9 ํฐ๋ฏธ๋์ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ ํ์ญ์์ค.
cd ~/environment/calico_resources
wget https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/directional_traffic.files/backend-policy.yaml
wget https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/directional_traffic.files/frontend-policy.yaml
์ด ๋ฐฑ์๋ ์ ์ฑ
์ cat backend-policy.yaml๋ก ์ดํด ๋ณด๊ฒ ์ต๋๋ค.

yaml ํ์ผ์ <EDIT: ~~~>์ ํธ์งํ์ฌ ํ๋ฐํธ ์๋์ ๋ฐฑ์๋ ํต์ ์ด ๊ฐ๋ฅํ๋๋ก ํฉ๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค ๋ฌธ์์์ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
ingress:
- from:
- podSelector:
matchLabels:
role: frontendcat frontend-policy.yaml๋ก ํ๋ฐํธ ์๋ ์ ์ฑ
์ ์ดํด ๋ณด๊ฒ ์ต๋๋ค. ํ๋ฐํธ ์๋์ ํด๋ผ์ด์ธํธ๊ฐ ํต์ ์ด ๊ฐ๋ฅํ๋๋ก ํธ์งํฉ๋๋ค.

ingress:
- from:
- namespaceSelector:
matchLabels:
role: client์์ ํ ํ์ฉ ์ ์ฑ ์ ์ ์ฉํ๊ณ ๊ด๋ฆฌ UI๋ฅผ ํ์ธํฉ๋๋ค.
kubectl apply -f backend-policy.yaml
kubectl apply -f frontend-policy.yaml

๊ฒฐ๋ก
๋ฐฑ์๋ ์ ์ฑ ์ ์ดํด ๋ณด๋ฉด Spec์๋ ๋ผ๋ฒจ์ด role:backend์ธ ๋ชจ๋ ํ๋๋ฅผ ์ ํํ๊ณ ๋ผ๋ฒจ์ด role:frontend์ด๊ณ TCP ํฌํธ 6379์ ์๋ ๋ชจ๋ ํ๋์์ ์์ ์ ํ์ฉํ๋ podSelector๊ฐ ์์ต๋๋ค. ํน์ ํฌํธ ๋ฒํธ์์ ํ ๋ฐฉํฅ์ผ๋ก ํธ๋ํฝ์ด ํ์ฉ ๋ฉ๋๋ค.

ํ๋ฐํธ ์๋ ์ ์ฑ ์ TCP ํฌํธ 80์์ role:client ๋ผ๋ฒจ์ด ์๋ ๋ค์ ์คํ์ด์ค์์ ์์ ์ ํ์ฉ ํ๋ค๋ ์ ์ ์ ์ธํ๊ณ ์ ์ฌ ํฉ๋๋ค.

Last updated
Was this helpful?