What Radar Shows
Policy / ClusterPolicy Detail View:- Enforcement badge: what the policy does at admission, not just what
validationFailureActionreads. Enforce in red, Audit in yellow, and Background only (or Inactive, when background scanning is off too) in orange for a policy that declares Enforce but is kept out of the admission webhook byspec.admission: false - Configuration: admission and background scanning, webhook timeout, failure policy, schema validation
- Rule type summary (validate/mutate/generate/verifyImages counts)
- Individual rules with type badges and match/exclude indicators
- Auto-generated rules list
- Visual result bar chart (pass/fail/warn/error/skip proportions)
- Scope and source information
- Individual results with status badges, severity levels, policy/rule names
- Expandable details: message, category, source, affected resources
- Problem detection (AlertBanner for failures or errors)
The per-policy resource view
A resource page answers “which policies does this break”. The policy page answers the other direction: which resources does this policy cover, and what happens to them, grouped by rule. Keep these semantics in mind when reading the results:- Report producers share the same fields. Trivy and Falco can write their own identifiers into
results[].policy; Radar labels those results by producer instead of presenting them as Kyverno policy outcomes. - Status wording follows the rule type. For example, a mutating rule’s
failmeans the mutation was not applied, while a generate rule’spassmeans the resource was generated. - Enforcement follows declared operations. A CREATE-only policy rejects new resources, not updates to existing ones. A resource already failing that rule is grandfathered until it is recreated.
status.lastRefreshTime and records failure as nothing at all - no message, no condition, no reason. So the page reports “has refreshed” versus “has never refreshed” (with the entry’s age turning the second into a diagnosis) and says outright that Kyverno records no reason, rather than inventing one.
The count of queued work appears on the policy itself, above its configuration. The section is silent when a policy has nothing queued, so it stays out of the way for policies that only validate.
UpdateRequest is where a generation or mutate-existing operation that silently stopped is diagnosed: the policy may report Ready while the target never appears, with a request sitting in Pending as the remaining evidence. Radar handles both Kyverno request shapes and links each request to the trigger resources it records.
EphemeralReport holds a background scan’s findings before they are folded into a PolicyReport. Kyverno deletes these reports quickly after processing, so an empty list normally means the work completed rather than that reporting is unavailable.
Supported CRDs
PolicyReport findings are policy posture, not live operational failure, so they are not part of the
/api/issues stream. They surface per-resource: the PolicyReport detail view (above) and the resourceContext policy rollup on a resource fetched via get_resource. (The cluster audit - /api/audit + MCP get_cluster_audit - is radar’s own static best-practice scanner and does not include PolicyReport results.)
Limitations:
- Queued work (
UpdateRequest) is only shown for policies that generate or mutate existing resources, and only while it is in flight - Kyverno deletes these seconds after the work completes, so an empty section is the normal resting state rather than evidence that nothing ran. - Coverage counts describe the whole cluster within what the caller is authorized to read; per-rule subject lists are capped by the server and additionally follow the namespace view filter. The screen states which number it is showing, but the two are not interchangeable.
- Radar authorizes the
wgpolicyk8s.ioandopenreports.ioreport families separately at each subject scope. A grant to readpolicyreportsdoes not implyclusterpolicyreports, while a namespace-restricted caller can still see findings for namespaces they may read. Findings from an unreadable family are withheld from both lists and counts, and the number withheld is reported.