Kubernetes
[Kubernetes] NetworkPolicy 이해: podSelector와 ingress.from.podSelector의 차이
Dev_Green
2025. 3. 3. 12:08
1. 헷갈렸던 부분
NetworkPolicy의 매니페스트를 보면 다음과 같이 두 개의 podSelector가 등장한다.
처음에는 이 두 개의 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=redis와 access=redis 라벨은 같은 파드에 있을 필요 없음
✔ 서버에는 access=redis가 필요 없고, 클라이언트에는 app=redis가 필요 없음