Network Policies

Yu Sang Min·2025년 6월 21일

CKA

목록 보기
60/110
post-thumbnail

🌐 Kubernetes Network Policies

Pod 간 트래픽을 제어하는 강력한 보안 기능


📌 1. 기본 네트워크 흐름 이해

  • Ingress: 외부에서 들어오는 트래픽

  • Egress: 내부에서 나가는 트래픽

  • 예:

    • 웹서버 → API 서버 → DB
    • 포트: 80 (웹), 5000 (API), 3306 (DB)

📌 2. Kubernetes 기본 네트워킹

  • 모든 Pod는 기본적으로 서로 통신 가능
  • 추가 설정 없이도 IP, Pod 이름, 서비스 이름으로 통신
  • 기본 상태는 "All Allow" 정책

🛡️ 3. NetworkPolicy란?

특정 Pod 간의 트래픽 허용/차단 규칙을 설정하는 객체

  • 네임스페이스 기반 리소스
  • Pod에 적용
  • Pod 선택자는 labels로 지정
  • 지원 유형: Ingress, Egress, 혹은 둘 다

🧪 예시 시나리오

웹서버가 DB에 직접 접근하지 못하도록 차단하고,
API 서버만 DB에 접근 가능하게 설정


✍️ 4. NetworkPolicy 정의 예시

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: db-policy
spec:
  podSelector:
    matchLabels:
      app: db
  policyTypes:
    - Ingress
  ingress:
    - from:
        - podSelector:
            matchLabels:
              app: api
      ports:
        - protocol: TCP
          port: 3306

🔑 설명:

  • podSelector: 어떤 Pod에 이 정책을 적용할 것인지 (app=db)
  • from: 어떤 Pod가 접근 가능한지 (app=api)
  • ports: 허용할 포트 (3306)
  • policyTypes: Ingress만 격리

⚠️ 주의 사항

  • policyTypesIngress, Egress 명시하지 않으면 격리되지 않음

  • NetworkPolicy는 네트워크 플러그인이 지원해야 적용됨

    • ✅ 지원: Calico, Cilium, WeaveNet, Kube-router 등
    • ❌ 미지원: Flannel
  • 미지원 플러그인에서는 생성은 되지만 정책이 적용되지 않음


✅ 핵심 요약

항목설명
기본 상태모든 Pod 간 통신 허용
격리 방식policyTypes로 명시 (Ingress / Egress)
적용 대상Label로 Pod 선택
정책 미지원시생성 가능하나 적용되지 않음
목적불필요하거나 위험한 Pod 간 통신 차단
profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 댓글