사용 목적?
- Kubernetes NetworkPolicy API 를 사용하여 포드가 서로 통신하는 방식을 제어하는 네트워크 정책을 선언
- NetworkPolicy를 사용하여 통신에 대한 제한을 정의 할수 있음
- Kubernetes 서버는 버전 v1.8 이상
- NetworkPolicy를 지원하는 여러 네트워크 공급자
- Antrea
- Calico
- Cilium
- Kube-router
- Romana
- Weave Net
Nginx를 사용한 예제
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/nginx 10.100.0.16 <none> 80/TCP 33s
NAME READY STATUS RESTARTS AGE
pod/nginx-701339712-e0qfq 1/1 Running 0 35
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: access-nginx
spec:
podSelector:
matchLabels:
app: nginx
ingress:
- from:
- podSelector:
matchLabels:
access: "true"
- nginx의 pod의 label에 access: true가 있는경우
- 타임아웃 발생하여 접근 가능
kubectl run busybox --rm -ti --labels="access=true" --image=busybox -- /bin/sh
wget --spider --timeout=1 nginx
Connecting to nginx (10.100.0.16:80)
remote file exists
- nginx의 pod의 label에 access label이 없는 경우
- 타임아웃 발생하여 접근 안됨
wget --spider --timeout=1 nginx
Connecting to nginx (10.100.0.16:80)
wget: download timed out