Skip to content

fix: Take a controller's owner from its namespace - #907

Merged
vvoytovych merged 1 commit into
mainfrom
fix/controller-health-namespace-owner
Nov 12, 2026
Merged

vvoytovych merged 1 commit into
mainfrom
fix/controller-health-namespace-owner

Conversation

@vvoytovych

Copy link
Copy Markdown
Contributor

Controller health alerts take their owning team only from the platform's deployment owner map, so a controller missing from that map alerts with no owner and lands in the catch-all channel, which several controllers did in both environments over the last two weeks.

This change falls back to the platform's namespace owner map, the next step of the platform's ownership standard.

A controller that both maps name keeps its deployment's owner and alerts once, and one that neither names still alerts, without an owner.

Changes

Change Effect
The three controller health alerts take the owner from the namespace map when the deployment map has none
The runbook's owner paragraph says where an alert's owner comes from
New rule test cases cover the namespace owner, a deployment both maps name, and one neither names

Test plan

  • The rule tests cover all three outcomes, and each fails on the previous rule shape
  • Routed through both environments' live alert trees, every owner this gives reaches its team's channel
  • After the release reaches production, a controller health alert firing without an owner today moves to its team's channel
  • For a week after the release, no controller health alert whose namespace the owner map names reaches the catch-all channel in either environment

A controller-health alert took its service only from the deployment owner
map. A controller whose deployment the map does not name fired with no
service, so it reached no team and fell to the catch-all channel: 17
controllers in 14 days, among them the cell controller manager, galactic,
karmada and Flux. The platform resolves an owner by deployment, then by
namespace; the rule stopped after the first step.

Key changes:
- Each alert joins namespace:datum_service:info on cluster and namespace
  when the deployment map does not name its deployment
- A deployment both maps name keeps its deployment's owner and fires once;
  one that neither names still fires, without an owner
- Fixtures for both, and for the floor warning; the test copy follows the
  shipped rules
- The runbook says where the owner comes from
@vvoytovych vvoytovych self-assigned this Nov 12, 2026
@vvoytovych
vvoytovych requested a review from ecv November 12, 2026 11:02
@vvoytovych
vvoytovych marked this pull request as ready for review November 12, 2026 11:04
@vvoytovych
vvoytovych requested a review from a team as a code owner November 12, 2026 11:04

@ecv ecv left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve.

Controller health alerts for a deployment missing from the deployment owner map now take their team from the namespace owner map, so they reach a team channel instead of the catch-all.

  • namespace:datum_service:info is topk by (cluster, namespace) (1, ...) in both infra estates, so the on (cluster, namespace) group_left join is many-to-one and cannot error on duplicates.
  • The three branches are disjoint: the deployment owner wins, then the namespace owner, then no owner. A controller fires once.
  • The expression edit resets the state of any of the three alerts firing at the release that carries it. Those alerts go pending again for their for of 15m or 10m.

@vvoytovych
vvoytovych merged commit 8c196cb into main Nov 12, 2026
10 checks passed
@vvoytovych
vvoytovych deleted the fix/controller-health-namespace-owner branch November 12, 2026 11:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants