CLI로 네트워크 흐름 살펴보기
CLI로 네트워크 흐름 살펴보기 (Inspecting Network Flows with the CLI)
이 가이드는 Hubble CLI를 사용해 네트워크 흐름을 살펴보고 네트워크 레벨에서 무슨 일이 일어나고 있는지 가시성을 얻는 방법을 안내해요. 정책이 허용한 요청과 거부한 요청이 각각 어떻게 보이는지 확인할 수 있습니다.
본문
막히는 부분이 있다면 Cilium Slack에 질문을 올리는 게 가장 좋은 방법이에요. 전 세계에 Cilium 기여자들이 있기 때문에 도움을 줄 사람이 거의 항상 있답니다.
Note
이 가이드는 Demo App을 기반으로 한 예제를 사용해요. 직접 실행해 보고 싶다면 먼저 Demo App을 배포하세요. 자세한 내용은 Identity-Aware 및 HTTP-Aware 정책 적용 문서를 참고하세요.
사전 준비 사항 (Pre-Requisites)
- Cilium이 Kubernetes 클러스터에 올바르게 설치되어 있을 것.
- Hubble이 활성화되어 있을 것.
- Hubble CLI가 설치되어 있을 것.
- Hubble API에 접근 가능할 것.
확실하지 않다면 cilium status를 실행해서 Cilium과 Hubble이 실행 중인지 확인하고, 그다음 hubble status를 실행해 Hubble API와 통신할 수 있는지 확인하세요.
Hubble Relay로 클러스터 네트워크 트래픽 살펴보기
트래픽을 만들어 보기 위해 몇 가지 요청을 보내 봅시다. 이 첫 요청은 정책에 의해 허용되는 요청이에요.
kubectl exec tiefighter -- curl -s -XPOST deathstar.default.svc.cluster.local/v1/request-landing
Ship landed
이 다음 요청은 정책에 의해 거부되는 HTTP 엔드포인트에 접근해요.
kubectl exec tiefighter -- curl -s -XPUT deathstar.default.svc.cluster.local/v1/exhaust-port
Access denied
마지막으로 이 요청은 xwing 파드에 정책이 요구하는 org=empire 레이블이 없기 때문에 멈춰 버려요. curl 요청을 종료하려면 Control-C를 누르거나 타임아웃을 기다리세요.
kubectl exec xwing -- curl -s -XPOST deathstar.default.svc.cluster.local/v1/request-landing
command terminated with exit code 28
이제 CLI로 이 트래픽을 살펴봅시다. 아래 명령은 deathstar 파드로 가는 애플리케이션 레이어(L7, HTTP) 트래픽을 모두 필터링해요:
hubble observe --pod deathstar --protocol http
May 4 13:23:40.501: default/tiefighter:42690 -> default/deathstar-c74d84667-cx5kp:80 http-request FORWARDED (HTTP/1.1 POST http://deathstar.default.svc.cluster.local/v1/request-landing)
May 4 13:23:40.502: default/tiefighter:42690 <- default/deathstar-c74d84667-cx5kp:80 http-response FORWARDED (HTTP/1.1 200 0ms (POST http://deathstar.default.svc.cluster.local/v1/request-landing))
May 4 13:23:43.791: default/tiefighter:42742 -> default/deathstar-c74d84667-cx5kp:80 http-request DROPPED (HTTP/1.1 PUT http://deathstar.default.svc.cluster.local/v1/exhaust-port)
다음 명령은 deathstar 파드로 가는 트래픽 중 드랍된 것만 보여줘요:
hubble observe --pod deathstar --verdict DROPPED
May 4 13:23:43.791: default/tiefighter:42742 -> default/deathstar-c74d84667-cx5kp:80 http-request DROPPED (HTTP/1.1 PUT http://deathstar.default.svc.cluster.local/v1/exhaust-port)
May 4 13:23:47.852: default/xwing:42818 <> default/deathstar-c74d84667-cx5kp:80 Policy denied DROPPED (TCP Flags: SYN)
May 4 13:23:47.852: default/xwing:42818 <> default/deathstar-c74d84667-cx5kp:80 Policy denied DROPPED (TCP Flags: SYN)
May 4 13:23:48.854: default/xwing:42818 <> default/deathstar-c74d84667-cx5kp:80 Policy denied DROPPED (TCP Flags: SYN)
트래픽을 더 자세히 살펴보고 싶다면 자유롭게 해 보세요. observe 명령에 대한 도움말은 hubble help observe로 확인할 수 있어요.
암호화된 트래픽 필터링
흐름이 암호화되었는지(WireGuard 또는 IPsec) 여부에 따라 필터링할 수 있어요.
암호화된 흐름만 보려면:
$ hubble observe --encrypted
암호화되지 않은 흐름만 보려면:
$ hubble observe --unencrypted
응답(Reply) 트래픽 필터링
흐름이 응답 패킷(서버→클라이언트 방향)인지 여부에 따라 필터링할 수 있어요.
응답 흐름만 보려면:
$ hubble observe --reply
비응답 흐름만 보려면:
$ hubble observe --not-reply