k8s에서 ingress/egress에 대한 요약
용어 정리
inbound traffic vs outbound traffic
- inbound traffic: 외부에서 내부로 들어오는 트래픽
- outbound traffic: 내부에서 외부로 나가는 트래픽
ingress vs egress
- ingress: 모든 inbound traffic을 처리
- egress: 모든 outbound traffic을 처리
ingress나 egress가 설정되지 않은 경우, pod은 클러스터 내부 네트워크 상에서의 inbound/outbound traffic을 모두 허용하고 있다. 때문에 network policy를 적용하여 필요한 ip/port에 대한 접속만을 허용한다거나, cidr 혹은 ip 주소를 사용한 대상만을 허용하도록 할 수 있다.
사용 예제
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
spec:
podSelector:
matchLabels:
role: db
policyTypes:
- Ingress
- Egress
ingress:
- from:
- ipBlock:
cidr: 172.17.0.0/16
except:
- 172.17.1.0/24
ports:
- protocol: TCP
port: 6379
egress:
- to:
- ipBlock:
cidr: 10.0.0.0/24
ports:
- protocol: TCP
port: 5978
위 설정에 따르면 ingress와 egress는 아래와 같이 설명될 수 있다.
- ingress: pod의 label이 role=db이며, IP 주소가 172.17.0.0/16에 속하며, 172.17.1.0/24에 속하지 않는 모든 pod tcp 포트 6379에 대한 연결만을 허용한다.
- egress: pod의 label이 role=db이며, IP 주소가 10.0.0.0/24의 tcp 포트 5978에 대한 연결만을 허용한다.