베하~! BTC_녹차공원 팀의 민물공원 입니다.
이번주는 NetworkPolicy에 대해 알아보겠습니다!
NetworkPolicy
NetworkPolicy는 쿠버네티스에서 제공하는 일종의 방화벽 정책으로 Pod가 서로 통신할 때 방화벽 설정을 할 수 있어요.
Pod에 대해 인바운드(Inbound traffic), 아웃바운드(Outbound traffic)에 대해 설정을 해줄 수 있답니다 !!
Network Policy 에는 Inbound 에 해당하는 ingress 설정과 Outbound에 해당하는 Egress 설정이 있어요.
Inbound 는 외부에서 특정 Pod의 내부로 들어오는 트래픽에 대한 방화벽 설정으로 어떤 트래픽에 Pod로 들어올것인지 설정하는 부분이랍니다.
Outbound 는 특정 Pod에서 밖으로 나가는 트래픽에 대한 방화벽 설정으로 어떠한 트래픽이 Pod로 부터 나갈것인지 설정할수 있어요!
NetworkPolicy 실습
이번 실습도 Killercoda 에서 따라해보아요.
Busan 이라는 네임스페이스에 존재하는 Pod-2에서 Seoul 이라는 네임스페이스에 존재하는 Pod-1에 9000번 포트로만 연결할수 있도록 Network 정책을 설정해보는 실습을 해보아요 !
먼저 Busan과 Seoul의 네임스페이스를 생성할거예요
kubectl create namespace busan
kubectl create namespace seoul
그 다음 Pod-2와 Pod-1을 생성할거예요
kubectl run pod-2 --image=nginx -n busan
kubectl run pod-1 --image=nginx -n seoul
Busan 네임스페이스에 app=Busan-app 이라고 설정을 해 보아요
kubectl label namespaces busan app=busan-app
kubectl get namespaces --show-labels
networkpolicy의 yaml 파일을 작성한 후 설정해보아요.
vi networkpolicy.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-port-rom-namespace
namespace: seoul
spec:
podSelector: {}
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
app: busan-app
ports:
- protocol: TCP
port: 9000
kubectl create -f networkpolicy.yaml
현재 networkpolicy 정책 적용이 잘 되었는지 상태를 확인해보아요
kubectl get networkpolicy.networking.k8s.io/allow-port-rom-namespace -n seoul
Pod-1의 IP를 확인해 봅니다.
kubectl get pod -n seoul -o wide
Pod-2에 접속한 후 Pod-1로 연결해보아요.
kubectl -n busan exec pod-2 -it -- sh
curl 192.168.1.4
curl 은 80번 포트로 연결하기 때문에 접속이 안됨을 확인할 수 있었어요. 하지만!
Pod-1에서 접속한 후 Pod-2로의 curl 접속은 된답니다.
이렇게 오늘은 쿠버네티스의 NetworkPolicy 에 대해 알아보았는데요.
다음번에는 더 흥미로운 주제로 찾아뵙겠습니다.
이상 BTC_녹차공원 팀이였습니다!
베빠~!
'INFRA > DevOps' 카테고리의 다른 글
[DevOps] CI/CD 개념 및 도구 설명 (0) | 2023.08.18 |
---|---|
[K8S] Service (0) | 2023.08.01 |
[K8S] Node Upgrade (0) | 2023.07.20 |
[K8S] Node Schedule (0) | 2023.07.06 |
[K8S] role & rolebinding (0) | 2023.06.18 |
댓글