Skip to main content
In this guide you’ll learn how to enable and use Hubble (the observability component of Cilium) to inspect L3/L4 flows and, when L7 rules are present, HTTP request/response details inside a Kubernetes cluster. This walkthrough assumes you already have a three-node cluster with Cilium installed via Helm using default values.

1. Confirm cluster nodes

Run:
Example output:

2. Enable Hubble Relay and Hubble UI via Helm values

Hubble is bundled with Cilium, but Relay and UI are commonly disabled. To enable them, add the fields below to your Helm values.yaml. See Helm chart values docs for details: https://helm.sh/docs/topics/charts_values/
After updating Helm values you must upgrade the release and restart the operator/agents so the new components are started and configuration is picked up.
Upgrade and restart:

3. Verify Hubble components are running

List pods and services in the kube-system namespace:
Example (relevant lines):
Example:
You can also check status with the Cilium CLI:
Example (abridged):
A Visual Studio Code window with the Explorer open on the left and an integrated terminal on the right displaying Cilium cluster status (ClusterMesh: disabled), pod/container counts and image versions. The sidebar shows several YAML files and a remote SSH session indicator.

4. Deploy sample applications (generate traffic)

In this demo we use four simple services: ecom-auth, ecom-inventory, ecom-products, and ecom-user. From the hubble/ sample folder:
Example apply output:
Verify deployments and services:
Example outputs:
Generate traffic by exec’ing into the auth pod and curling the user service:
Example response:

5. Install the Hubble CLI and connect to Hubble Relay

Install the Hubble CLI locally (pick the correct architecture). Example Linux script:
Set up a port-forward from your workstation to Hubble Relay so the local Hubble CLI can reach Relay:
Expected output:
(If you have the Cilium CLI installed you can also use cilium hubble port-forward.)

6. Observe flows with the Hubble CLI

The primary command is hubble observe. It supports powerful filters to narrow flows: To observe all flows related to the user pod (both directions) and follow new flows:
Sample flow output (abridged):
To show only HTTP L7 flows to the user pod:

7. Using Hubble to validate network policies (CiliumNetworkPolicy)

Example: allow only ecom-auth to contact ecom-user on port 3000, and restrict to HTTP GET at L7. Create user-policy.yaml:
Apply the policy:
Example output:
Test connectivity:
  • From the allowed pod (ecom-auth):
  • From a denied pod (ecom-products):
Hubble will include policy verdicts in the flow logs:
Note: policy-verdict indicates whether traffic was allowed or denied and at which layer (L3/L4 vs. L7).
To capture and display L7 (HTTP) details in Hubble, include L7 rules (e.g., rules.http) in your CiliumNetworkPolicy. When an L7 rule is present, Hubble can report HTTP requests and responses alongside verdicts.
With the HTTP GET-only policy, Hubble can show HTTP-level details:
If a disallowed L7 method (e.g., POST) is attempted, the application may receive a 403 and Hubble will report the HTTP request/response and the policy-denied status:

8. Hubble UI (visualize flows and service graphs)

Cilium includes a Hubble UI for visualizing service graphs, flows, and flow details. Start the UI helper:
This command typically sets up a port-forward and prints a local URL you can open in your browser. The UI shows an interactive service graph, a flows table, and detailed per-flow information such as timestamps, verdicts, TCP flags, and HTTP payload metadata.
A Hubble UI screenshot showing a Kubernetes service graph for the "default" namespace with nodes labeled ecom-auth, ecom-products, ecom-inventory, ecom-user and an external "world" node connected by traffic arrows. A flows table is visible at the bottom and a right-side panel displays flow details (timestamp, verdict, TCP flags, etc.).

Quick reference — useful commands

Summary

  • Hubble (with Relay and UI) provides cluster-wide visibility into L3/L4 flows, and L7 HTTP details when policies include L7 rules.
  • Use hubble observe and its filters (--pod, --from-pod, --protocol, -f) to stream and inspect flows in real time.
  • Combine CiliumNetworkPolicy L7 rules with Hubble to validate application-layer access and troubleshoot policy-related denials.
  • The Hubble UI complements the CLI with a visual service graph and interactive flow inspection.

Watch Video

Practice Lab