Skip to content

intent reconciler: resource name collisions across namespaces (MetalLB pools, Calico IPPools) #260

@MaxRink

Description

@MaxRink

Problem

The intent reconciler derives MetalLB IPAddressPool names from Inbound.Name only, and Calico IPPool names from Outbound.Name only. This means identically-named Inbound/Outbound resources in different namespaces will collide on the same pool name since MetalLB/Calico pools are cluster-scoped.

Additionally, Destination label matching is cluster-wide — a Destination in namespace A could unintentionally match pods in namespace B.

Impact

HIGH — Namespace collision can cause incorrect IP assignment or routing in multi-tenant clusters.

Affected Files

  • controllers/intent/intent_controller.go — pool name derivation logic
  • controllers/platform/metallb_controller.go — IPAddressPool creation
  • controllers/platform/coil_controller.go — Calico IPPool creation

Suggested Fix

Include namespace in derived resource names: {namespace}-{name} for MetalLB pools and Calico IPPools. For Destinations, add namespace-aware label selectors.

Found During

Review Round 3 of PR #249. Pre-existing design issue in intent-based-crds feature.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions