본문 바로가기
INFRA/DevOps

[K8S] NetworkPolicy

by BTC_민물공원 2023. 8. 1.

베하~! BTC_녹차공원 팀의 민물공원 입니다.

이번주는 NetworkPolicy에 대해 알아보겠습니다!

 

NetworkPolicy


NetworkPolicy는 쿠버네티스에서 제공하는 일종의 방화벽 정책으로 Pod가 서로 통신할 때 방화벽 설정을 할 수 있어요.
Pod에 대해 인바운드(Inbound traffic), 아웃바운드(Outbound traffic)에 대해 설정을 해줄 수 있답니다 !!

Network Policy 에는 Inbound 에 해당하는 ingress 설정과 Outbound에 해당하는 Egress 설정이 있어요.

Inbound 는 외부에서 특정 Pod의 내부로 들어오는 트래픽에 대한 방화벽 설정으로 어떤 트래픽에 Pod로 들어올것인지 설정하는 부분이랍니다.
Outbound 는 특정 Pod에서 밖으로 나가는 트래픽에 대한 방화벽 설정으로 어떠한 트래픽이 Pod로 부터 나갈것인지 설정할수 있어요!

 

 

NetworkPolicy 실습


이번 실습도 Killercoda 에서 따라해보아요.

https://killercoda.com/

 

Killercoda Interactive Environments

Learn DevOps Linux Kubernetes CKS CKA CKAD Git Cassandra etc | Katacoda compatible

killercoda.com

 

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

댓글