Skip to content

Resolve every variant image through one override set - #5251

Open
caseydavenport wants to merge 2 commits into
tigera:masterfrom
caseydavenport:casey-image-overrides
Open

Resolve every variant image through one override set#5251
caseydavenport wants to merge 2 commits into
tigera:masterfrom
caseydavenport:casey-image-overrides

Conversation

@caseydavenport

@caseydavenport caseydavenport commented Aug 25, 2026

Copy link
Copy Markdown
Member

Description

The operator held four separate sets of variant image overrides, one per extension that happened to need them, each with its own accessor. That works only for components whose controller has an extension carrying a set, and the combined calico image is wanted by components across several that do not: clusterconnection, apiserver, whisker, goldmane.

Adding a fifth, sixth and seventh set is the wrong direction, and it has a quiet failure mode: miss one registration and an Enterprise install silently runs the Calico image for that component.

The variant cannot change without restarting the process, so the mapping from component name to image is a property of whole operator process:

  • one set now, hanging off the extensions the operator was built with
  • each Enterprise package registers into it rather than owning one
  • controllers read it from their options
  • four constructors and four interface methods become one

The second commit uses it. Enterprise registers a key for the combined image, and every component that runs one of its binaries resolves through the override set: typha, csi, guardian, apiserver, webhooks, whisker, goldmane, node, kube-controllers, es-kube-controllers.

The CSR init image is the one caller left that branches on the variant itself. The core certificate manager has no way to reach the override set and 27 call sites would have to opt in, so that one is its own change.

No behavior change: the same keys resolve to the same images. The Enterprise render tests and the mainline FVs now build the extensions they were skipping, since the variant field alone no longer selects an image.

Related: CORE-13461

None

Four extensions each built their own set, so a component whose controller
had no set of its own could not resolve an image at all.
Every component that runs a binary out of the combined image reads that image
from the variant's override set.
@caseydavenport caseydavenport changed the title Hold the variant's image overrides once for the whole operator Resolve every variant image through one override set Aug 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants