용어 정리

inbound traffic vs outbound traffic

  • inbound traffic: 외부에서 내부로 들어오는 트래픽
  • outbound traffic: 내부에서 외부로 나가는 트래픽

ingress vs egress

  • ingress: 모든 inbound traffic을 처리
  • egress: 모든 outbound traffic을 처리

ingress나 egress가 설정되지 않은 경우, pod은 클러스터 내부 네트워크 상에서의 inbound/outbound traffic을 모두 허용하고 있다. 때문에 network policy를 적용하여 필요한 ip/port에 대한 접속만을 허용한다거나, cidr 혹은 ip 주소를 사용한 대상만을 허용하도록 할 수 있다.

사용 예제

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
spec:
  podSelector:
    matchLabels:
      role: db
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - ipBlock:
        cidr: 172.17.0.0/16
        except:
        - 172.17.1.0/24
    ports:
    - protocol: TCP
      port: 6379
  egress:
  - to:
    - ipBlock:
        cidr: 10.0.0.0/24
    ports:
    - protocol: TCP
      port: 5978

위 설정에 따르면 ingress와 egress는 아래와 같이 설명될 수 있다.

  • ingress: pod의 label이 role=db이며, IP 주소가 172.17.0.0/16에 속하며, 172.17.1.0/24에 속하지 않는 모든 pod tcp 포트 6379에 대한 연결만을 허용한다.
  • egress: pod의 label이 role=db이며, IP 주소가 10.0.0.0/24의 tcp 포트 5978에 대한 연결만을 허용한다.

Reference

Kubernetes: Network Policy