Skip to main content

Overview

GET /cluster/environment exposes the same coarse environment aggregates the telemetry check-in reports — CNI, IP family, provider, distribution, and node OS — derived from per-node facts each controller reports at startup. The UI and the AI assistant use it to align policy generation with the cluster: a CiliumNetworkPolicy is only applicable where Cilium runs, so the Policy Builder badges the Cilium option and the assistant annotates its output when the detected CNI is something else. Every value is a fixed enum. "unknown" means “no signal” — the CNI does not annotate nodes (kindnet), no controller has reported yet, or the controller predates fact reporting — and consumers treat it as “behave exactly as before”. Mixed-CNI clusters resolve to the most common per-node value. policy_enforcement is reported separately from cni because the two answer different questions. Knowing which CNI is installed does not tell you whether a NetworkPolicy will take effect: AWS VPC CNI supports NetworkPolicy only when explicitly enabled and ships with it off, and with it off the CNI accepts the object and silently ignores it, so kubectl apply succeeds and nothing is restricted. Cilium and Calico can also be installed with policy disabled, and flannel never enforces. Unlike the other fields, policy_enforcement is NOT a most-common vote. A cluster where some nodes enforce and others do not reports mixed, because a policy applied there is live on part of the fleet and inert on the rest, and a majority vote would hide that. A single node that cannot answer downgrades the whole cluster to unknown rather than letting the already-upgraded nodes speak for it.

GET /cluster/environment

Requires the read scope when broker auth is on. Always returns 200 — database trouble degrades to all-unknown, never an error.