Kubernetes

[Kubernetes] NetworkPolicy 이해: podSelector와 ingress.from.podSelector의 차이

Dev_Green 2025. 3. 3. 12:08

1. 헷갈렸던 부분

NetworkPolicy의 매니페스트를 보면 다음과 같이 두 개의 podSelector가 등장한다.

NetworkPolicy Manifest

처음에는 이 두 개의 podSelector가 같은 역할을 한다고 생각했다.

그래서 “app=redis” 라벨을 가진 파드 중에서 "access=redis" 라벨도 가진 파드만 허용하는 게 아닐까?” 라고 오해했다.

2.정확한 동작 원리

(1) podSelector.matchLabels → 보호할 대상

podSelector:
  matchLabels:
    app: redis
  • 이 NetworkPolicy가 적용될 파드를 선택하는 부분
  • 즉, 이 정책이 적용되는 파드는 app=redis 라벨을 가진 파드뿐
  • 이 정책이 적용된 파드는 기본적으로 모든 Ingress 트래픽이 차단됨 (화이트리스트 방식)

(2) ingress.from.podSelector.matchLabels → 접근을 허용할 대상

ingress:
  - from:
      - podSelector:
          matchLabels:
            access: redis
  • (중요)💫🌟✨♦️이 정책이 적용된 파드(=app=redis 파드)에 접근을 허용할 파드를 선택💫🌟✨♦️
  • 즉, access=redis 라벨을 가진 파드만 app=redis 파드로 접근 가능

3. 최종적으로 이해한 핵심 개념

서버(app=redis)는 보호할 대상 → NetworkPolicy 정책이 적용됨

클라이언트(access=redis)는 요청을 보내는 쪽 → NetworkPolicy 정책이 적용된 파드에 접근을 허용해야 하는 대상

app=redisaccess=redis 라벨은 같은 파드에 있을 필요 없음

서버에는 access=redis가 필요 없고, 클라이언트에는 app=redis가 필요 없음