This directory contains placeholder files that Konflux populates with image references during the build process. These files are used as "nudge files" to trigger rebuilds of dependent components when base images are updated.
The Konflux nudge system coordinates component rebuilds when dependencies change. The terminology can be confusing, so here's the actual flow:
- Component A builds → produces new image with new SHA
- Konflux raises a PR → updates Component A's
.txtfile with the new SHA - PR merges → the
.txtfile change triggers builds of components that havebuild.appstudio.openshift.io/build-nudge-fileswatching that file
The annotation build.appstudio.openshift.io/build-nudge-files means:
"When these files change (via PR merge), trigger a rebuild of THIS component"
The bpfman-operator manages multiple components that must work together:
- bpfman: The Rust eBPF daemon
- bpfman-agent: The Go-based Kubernetes agent
- bpfman-operator: The operator that orchestrates them
These components need version synchronisation. The operator deploys the agent and daemon using image references stored in a ConfigMap. When one component updates, related components must rebuild to maintain compatibility.
bpfman.txt- The bpfman daemon (Rust component) image referencebpfman-agent.txt- The bpfman-agent (Go component) image referencebpfman-operator.txt- The bpfman-operator (Go component) image referencebpfman-operator-bundle.txt- The operator bundle image reference
bpfman-agent (triggered by: bpfman.txt)
- Not a build dependency! The agent is built from source code, not from the bpfman image
- Why it's triggered by bpfman.txt: Version synchronisation - when the Rust daemon updates, the Go agent rebuilds to ensure they remain compatible
- Result: The ConfigMap gets a matched set of daemon + agent versions
bpfman-operator (triggered by: nothing "")
- Built from source: Only rebuilds on code changes
- Why no nudges: The operator is the base component that deploys the others; it doesn't need to rebuild when other images change
- Doesn't embed other images: The operator reads the ConfigMap at runtime to get daemon/agent image references - it doesn't need them at build time
operator-bundle (triggered by: bpfman-operator.txt, bpfman-agent.txt, bpfman.txt)
- Purpose: Packages the operator with a ConfigMap containing image references
- The ConfigMap is critical: It tells the operator which daemon and agent images to deploy at runtime
- Why it's triggered by all three images:
- When operator changes → bundle rebuilds to update ClusterServiceVersion (CSV)
- When agent changes → bundle rebuilds to update ConfigMap
- When daemon changes → bundle rebuilds to update ConfigMap
- Transformations:
update-bundle.pyupdates ClusterServiceVersion (CSV) with operator imageupdate-configmap.pyupdates ConfigMap with agent and daemon images
- Confirmed by Makefile: The
bundletarget shows exactly this:# Sets the operator image itself $(KUSTOMIZE) edit set image quay.io/bpfman/bpfman-operator=${BPFMAN_OPERATOR_IMG} # Updates ConfigMap with daemon and agent images $(SED) -e 's@bpfman\.image=.*@bpfman.image=$(BPFMAN_IMG)@' \ -e 's@bpfman\.agent\.image=.*@bpfman.agent.image=$(BPFMAN_AGENT_IMG)@'
operator-catalog (triggered by: bpfman-operator-bundle.txt, bpfman-operator.txt)
- Purpose: Creates an OLM catalog index for the operator
- Why it's triggered by these files:
- When bundle changes → catalog rebuilds to include new bundle
- When operator changes → catalog rebuilds to update operator reference
- Transformations:
update-catalog.shupdates index.yaml with both references
Let's trace what happens when the Rust daemon (bpfman) gets updated:
-
bpfman daemon rebuilt (e.g., feature of fix)
- Konflux builds new daemon image → SHA: abc123
- Konflux raises PR to update
bpfman.txtwith new SHA - PR merges
-
File change triggers rebuilds:
bpfman.txtchanged → triggers bpfman-agent rebuild (version sync)bpfman.txtchanged → triggers bundle rebuild (ConfigMap update)
-
bpfman-agent rebuilds
- Built from source (Go code)
- Produces new image → SHA: def456
- Konflux raises PR to update
bpfman-agent.txt - PR merges
-
More rebuilds triggered:
bpfman-agent.txtchanged → triggers bundle rebuild again
-
Bundle rebuilds (may have already started from step 2)
- Runs
update-configmap.pywith new daemon and agent SHAs - ConfigMap now has matched daemon + agent versions
- Produces new bundle → SHA: ghi789
- Konflux updates
bpfman-operator-bundle.txt
- Runs
-
Catalog rebuilds
bpfman-operator-bundle.txtchanged → triggers catalog rebuild- Catalog includes new bundle with updated ConfigMap
End result: The operator can now deploy matched versions of the daemon and agent that are guaranteed to be compatible.