This example demonstrates the usage of the daemonset primitive within the operator component framework. It shows how
to manage a Kubernetes DaemonSet as a component of a larger application, utilizing features like:
Base Construction: Initializing a DaemonSet with basic metadata and spec.
Feature Mutations: Applying version-gated or conditional changes (sidecars, env vars, annotations) using the
Mutator.
Suspension: Demonstrating the delete-on-suspend behavior unique to DaemonSets.
Data Extraction: Harvesting information from the reconciled resource.
Directory Structure
app/: Defines the mock ExampleApp CRD and the controller that uses the component framework.
features/: Contains modular feature definitions:
mutations.go: sidecar injection, env vars, and version-based image updates.
resources/: Contains the central NewDaemonSetResource factory that assembles all features using the
daemonset.Builder.
main.go: A standalone entry point that demonstrates a single reconciliation loop using a fake client.
Running the Example
You can run this example directly using go run:
go run examples/daemonset-primitive/main.go
This will:
Initialize a fake Kubernetes client.
Create an ExampleApp owner object.
Reconcile the ExampleApp components through multiple spec changes.