Closed ByeongHunKim closed 4 weeks ago
netFilter :
Netfilter is a framework that allows to configure packet filtering, create NAT or port translation rules, and manage the traffic flow in the network.
iptables :
Iptables, on the other hand, is a user-space utility program that allows you to configure the IP packet filter rules of the Linux kernel firewall.
@opp-13 @esc-beep
# istio-injection=enabled 상태 이후 proxy container 주입된 상태. 즉 istio-init container가 iptables 규칙 설정 완료
# pod/production-xxxxx 2/2 Running 0 5d15h
NODENAME=$(kubectl get pods production-xxxxx -o jsonpath="{.spec.nodeName}")
echo $NODENAME
# 해당 노드로 ssh 접속
CONTAINER_ID=$(kubectl get pod production-xxxxx -o jsonpath='{.status.containerStatuses[0].containerID}' | cut -d'/' -f3)
echo $CONTAINER_ID
sudo crictl inspect $CONTAINER_ID
sudo nsenter -t $(sudo crictl inspect $CONTAINER_ID | jq -r .info.pid) -n iptables -L -t nat -v
sidecar proxy container
가 15006 포트임https://github.com/istio/cni/blob/master/tools/packaging/common/istio-iptables.sh
Question / 질문 내용
sidecar로 주입된 proxy container가 어떻게 트래픽을 가로채는 지 정확한 동작원리가 궁금합니다
Context / 상황 설명
강의에서 envoy를 소개할 때 질문에 대한 답변은 없었고 그냥 구조만 설명하네요
현재 이해하고 있는 부분
Sidecar 주입 istio-sidecar-injector에 의해 istio-proxy(Envoy) 컨테이너를 sidecar로 주입
iptables 규칙 설정 Pod 생성 시 istio-init이라는 init 컨테이너가 실행되어 iptables 규칙을 설정. 이 규칙들은 Pod로 들어오고 나가는 모든 네트워크 트래픽을 istio-proxy로 리다이렉트 됨
트래픽 가로채기 설정된 iptables 규칙에 의해 Pod로 들어오는 인바운드 트래픽은 15006 포트로, 아웃바운드 트래픽은 15001 포트로 리다이렉트
트래픽 처리 istio-proxy는 가로챈 트래픽을 검사하고 Istio의 라우팅 규칙 등을 적용하여 적절히 처리. 인바운드 트래픽은 애플리케이션 컨테이너로 전달하고, 아웃바운드 트래픽은 대상 서비스로 라우팅
라우팅 규칙을 받아 트래픽이 어떻게 제어되는가(?)
What I've Tried / 시도한 방법 질문에 대한 답을 찾기 위해 시도해본 방법이 있다면 설명해주세요
자료를 찾고 있습니다
Resources / 관련 자료 질문과 관련된 문서, 링크, 코드 등이 있다면 여기에 첨부해주세요
출처: https://jimmysong.io/en/blog/beyond-istio-oss/
Additional context / 추가 사항 기타 추가적인 정보나 생각이 있다면 여기에 작성해주세요