Hubble

개요


(허블 우주망원경을 아이콘으로 사용하고 있다!)

허블은 실리움과 함께 번들격으로 제공되는 관측가능성 플랫폼으로, 실리움에서 이뤄지는 각종 동작, 메트릭 정보에 대해 가시성을 제공한다.
실리움은 eBPF 기반이기에 커널 영역에서 이뤄지는 동작에 대해 전통적인 스택을 이용해 모니터링하는데 여러 불편함이 있다.
이러한 불편함을 해소해주는 툴로 cilium을 만든 isovalent에서는 허블을 함께 개발하고 있다.
허블은 ebpf 영역의 동작에 대해서 깊고 세부적인 가시성을 제공하면서도 오버헤드를 최소화하는 동적인 접근 방식을 허용한다.

허블을 통해 알 수 있는 것

허블은 다음의 질문에 대해 답할 수 있다.

전반적으로 요약하자면, 허블은 트래픽 모니터링에 최적화된 툴이다.
따지자면 Kiali와 비슷한 녀석이라 할 수 있겠다.

구조

허블에는 여러 컴포넌트가 있다.

이때 실리움 에이전트 프로세스 내부에 배치되어 개별 노드에 세팅되는 것을 기본적인 허블이라 부른다.
(그래서 cilium-dbg라는 에이전트 조작 도구로도 확인할 수 있다.)
이 허블이 기본이 되다보니 보통 hubble server, 혹은 hubble embedded라고도 부른다.[1]
허블 서버는 에이전트와 유닉스 도메인 소켓을 기반으로 통신하며 각종 데이터를 가공하고 출력한다.
프로메테우스라고 치면 허블 서버는 익스포터라고 할 수 있겠다.
(참고로 프로메테우스와의 연동을 위해 메트릭 노출이 가능하다)

클러스터 전체 관점에서 모니터링을 할 수 있도록 도와주는 툴은 허블 릴레이(Hubble Relay) 로, 여러 노드에 배치된 허블로부터 데이터를 통합하여 시각화해준다.
사용자 입장에서 그냥 허블이라 한다면 아무래도 이 허블 릴레이를 부르는 것일 테다.

허블에 접근할 때는 같이 배치되는 웹 ui를 쓰거나 아니면 hubble cli를 세팅해서 쓰면 된다.

L7 가시성

L7 프로토콜 관련한 시각화와 세부 정보를 보기 위해서는 사실 조금의 설정이 필요하다.[2]
실리움 에이전트에서 가져오는 트래픽 메타데이터 정보는 끽해야 L4레벨에 한정된다.
그래서 L7의 트래픽 모니터링을 위해서는 L7 관련한 네트워크 정책 리소스(CiliumNetworkPolicy)를 만들어서 트래픽이 엔보이를 거치게 만들어야 한다.

사용

언급했듯, 허블을 실제로 사용할 때는 두 가지 정도의 선택지가 가능하다.
웹 화면으로 시각화하는 hubble-ui는 보통 헬름으로 허블을 세팅할 시 같이 배포된다.
허블 cli 명령어를 사용하는 방법은 당연히 cli를 직접 설치해주어야 한다.
간단하게는 이 정도만 하더라도 허블을 이용할 수 있다.[3]

helm upgrade cilium cilium/cilium --version 1.17.6 \
   --namespace kube-system \
   --reuse-values \
   --set hubble.relay.enabled=true \
   --set hubble.ui.enabled=true

조금 더 커스텀하면 이렇게도 할 수 있는데, 필수는 아니다.

helm upgrade cilium cilium/cilium --namespace kube-system --reuse-values \
--set hubble.enabled=true \
--set hubble.relay.enabled=true \
--set hubble.ui.enabled=true \
--set hubble.ui.service.type=NodePort \ # ui
--set hubble.ui.service.nodePort=31234 \ # ui
--set hubble.export.static.enabled=true \
--set hubble.export.static.filePath=/var/run/cilium/hubble/events.log \
--set prometheus.enabled=true \ # prom
--set operator.prometheus.enabled=true \ # prom
--set hubble.metrics.enabled="{dns,drop,tcp,flow,port-distribution,icmp,httpV2:exemplars=true;labelsContext=source_ip\,source_namespace\,source_workload\,destination_ip\,destination_namespace\,destination_workload\,traffic_direction}" \ # prom
--set hubble.tls.auto.enabled=true \
--set hubble.tls.auto.method=helm  \
--set hubble.tls.auto.certValidityDuration=1095 

web ui를 접근하기 위해 포트포워딩을 하는 것도 가능하나, 먼저 노드포트로 접근 가능하게 경로를 뚫어 접근하는 것도 방법이다.
여기에 프로메테우스 형태로 메트릭을 전달할 수 있도록 추가적인 세팅을 넣어주었다.

hubble ui

네임스페이스를 기준으로 모니터링을 진행할 수 있다.
image.png
어디까지나 키알리처럼 실시간 트래픽을 기준으로 한다.

hubble cli

하위 문서

이름 is-folder index noteType created
설치 요구사항 false 1 knowledge 2025-07-06
Hubble false 2 knowledge 2025-07-06
Cilium false 3 knowledge 2025-06-15
ebpf 동작 가이드 false 3 knowledge 2025-07-06
0주차 검증 false 4 knowledge 2025-07-06

관련 문서

EXPLAIN - 파생 문서

이름0related생성 일자

Dataview: No results to show for table query.

기타 문서

Z0-연관 knowledge, Z1-트러블슈팅 Z2-디자인,설계, Z3-임시, Z5-프로젝트,아카이브, Z8,9-미분류,미완
이름0코드타입생성 일자

Dataview: No results to show for table query.

참고


  1. https://docs.cilium.io/en/latest/internals/hubble/ ↩︎

  2. https://docs.cilium.io/en/latest/observability/visibility/ ↩︎

  3. https://docs.cilium.io/en/stable/observability/hubble/setup/ ↩︎