본문으로 건너뛰기

ADR-021 — NetworkPolicy 전면 default-deny

항목
StatusProposed (2026-05-25 — #518 design step)
Related Epic#518, #505 Phase 12
Related ADRADR-022 (mTLS Linkerd)

한 줄 결정: gend / gend-dmz / jupyter / data 4 namespace 분할 + 각 namespace 에 default-deny NetworkPolicy + 명시적 allow list. Calico CNI (AKS) 호환.

결정

  1. Namespace 분할:
    • gend: gend-api / gend-ui / dagster / kafka / trino / pg
    • gend-dmz: gend-relay / oauth2-proxy / ingress
    • jupyter: hub / user-* pods
    • data: opensearch / weaviate / vault / minio
  2. default-deny: 각 namespace 의 첫 NetworkPolicy 가 모든 ingress / egress 차단.
  3. allow rule: explicit namespaceSelector + podSelector + port 단위.
  4. 메모리: feedback_networkpolicy_hairpin — hostAliases + podSelector + ipBlock OR fallback 패턴 적용.
  5. 회귀 가드: scripts/lint_networkpolicy_default_deny.py 신설 — 모든 namespace 에 deny 정책 존재 검증.

비목표

  • Egress to internet 별도 (별도 Egress gateway 패턴 검토).
  • DNS 정책 (kube-dns 만 allow) 은 본 ADR 에 포함.