Part 5: Network Policy
개요
Kubernetes NetworkPolicy 기본
표준 NetworkPolicy 구조
# 기본 Kubernetes NetworkPolicy 예시
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-frontend-to-backend
namespace: production
spec:
# 정책이 적용될 Pod 선택
podSelector:
matchLabels:
app: backend
tier: api
# 정책 유형 (Ingress, Egress, 또는 둘 다)
policyTypes:
- Ingress
- Egress
# Ingress 규칙 (들어오는 트래픽)
ingress:
# 규칙 1: frontend에서 8080 포트로 접근 허용
- from:
- podSelector:
matchLabels:
app: frontend
- namespaceSelector:
matchLabels:
env: production
ports:
- protocol: TCP
port: 8080
# 규칙 2: monitoring 네임스페이스에서 메트릭 수집 허용
- from:
- namespaceSelector:
matchLabels:
name: monitoring
ports:
- protocol: TCP
port: 9090
# Egress 규칙 (나가는 트래픽)
egress:
# DNS 허용
- to:
- namespaceSelector: {}
podSelector:
matchLabels:
k8s-app: kube-dns
ports:
- protocol: UDP
port: 53
# 데이터베이스 접근 허용
- to:
- podSelector:
matchLabels:
app: database
ports:
- protocol: TCP
port: 5432Kubernetes NetworkPolicy의 한계
한계
설명
Calico 해결책
Calico NetworkPolicy
기본 구조
셀렉터 문법
Action 유형
프로토콜 및 포트 지정
Source/Destination 지정
GlobalNetworkPolicy
Default Deny 정책
DNS 허용 정책
외부 Egress 차단
Kubernetes API 서버 접근 제어
NetworkSet / GlobalNetworkSet
NetworkSet (네임스페이스 범위)
GlobalNetworkSet (클러스터 전역)
Tier 기반 정책

Tier 정의
Tier 평가 흐름
Tier 정책 예시
Tier + RBAC 통합
FQDN 기반 Egress 정책
L7 (HTTP) 정책
HostEndpoint 보호
HostEndpoint 정의
HostEndpoint 정책
DoNotTrack / PreDNAT 정책
DoNotTrack 정책
PreDNAT 정책
정책 디버깅
calicoctl을 통한 정책 확인
정책 추적
iptables 규칙 확인 (iptables 모드)
Felix 로그 분석
일반적인 정책 패턴
1. 마이크로서비스 패턴
2. 멀티 테넌트 격리
3. Zero Trust with Default Deny
4. Egress 제어 (특정 외부 서비스만 허용)
5. 공유 서비스 허용 (네임스페이스 격리 + 공유 서비스)
정책 성능 최적화
정책 수와 성능
정책 수
Felix 처리 시간
권장 사항
최적화 전략
참고 자료
마지막 업데이트