설명
NetworkPolicy 리소스를 만들어도 이를 집행하는 네트워크 구성 요소가 없으면 기대한 트래픽 제한이 적용되지 않습니다. 민감한 워크로드나 테넌트 사이의 격리에는 정책과 실제 집행 기능이 모두 필요합니다.
Flannel은 기본적으로 네트워크 연결을 제공하며, 정책 컨트롤러나 Calico 같은 별도 구성 요소와 함께 정책 집행을 제공할 수도 있습니다. 플러그인 이름만으로 결론 내리지 말고 설치된 구성과 동작을 확인하세요.
잠재적 영향
격리가 적용되지 않으면 내부 서비스가 의도보다 넓은 범위에서 접근 가능해지고, 침해된 워크로드의 내부 이동을 제한하기 어려워질 수 있습니다. 네임스페이스를 나누는 것만으로 네트워크 통신이 차단되지는 않습니다.
해결 방법
- 배포한 네트워크 플러그인과 정책 컨트롤러가 필요한 NetworkPolicy 기능을 실제 지원하고 활성화했는지 확인하세요.
- 지원되는 설치 절차로 정책 집행을 구성하고 필요한 인그레스·이그레스만 허용하세요. DNS 등 필수 통신도 고려하세요.
- 변경 전 연결 영향과 복구 방법을 준비하고, 허용한 통신은 성공하며 미승인 통신은 차단되는지 실제 파드에서 검증하세요.
예시
ConfigMap에 담긴 플러그인 선택의 개념적 발췌입니다. 전체 CNI 구성이나 설치·이전 절차가 아니며 ConfigMap의 이름·라벨·type만 바꿔서는 네트워크를 이전할 수 없습니다.
변경 전
yaml
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-flannel-cfg
namespace: kube-system
labels:
app: flannel
data:
cni-conf.json: |
{
"name": "cbr0",
"plugins": [
{
"type": "flannel"
}
]
}
Flannel 연결 설정을 보여 줍니다. 별도 정책 집행 구성 요소가 있는지 확인해야 하며, 이 발췌만으로 실제 격리 상태를 판단할 수는 없습니다.
변경 후
yaml
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-flannel-cfg
namespace: kube-system
labels:
app: calico
data:
cni-conf.json: |
{
"name": "cbr0",
"plugins": [
{
"type": "calico"
}
]
}
Calico를 선택하는 개념적 예시입니다. 지원되는 설치와 필요한 구성, NetworkPolicy를 적용한 뒤 실제 트래픽 차단을 검증해야 합니다.