
Component Operator Runtime
Build Kubernetes Component Operators
Reconcile Generic Components
// Component is the central interface that component operators have to implement.
type Component interface {
client.Object
// Return a read-only accessor to the component's spec.
GetSpec() types.Unstructurable
// Return a read-write (usually a pointer) accessor to the component's status,
GetStatus() *Status
}
// Reconciler provides the implementation of controller-runtime's Reconciler interface,
// for a given Component type T.
type Reconciler[T Component] struct {
// ...
}
// Reconcile the given component by applying its dependent resources to the target cluster.
func (r *Reconciler[T]) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
// ...
}Generate Manifests
// Resource generator interface.
type Generator interface {
// Generate manifests of the dependent resources.
Generate(ctx context.Context, namespace string, name string,
parameters types.Unstructurable) ([]client.Object, error)
}
// Create a new HelmGenerator.
func NewHelmGenerator(fsys fs.FS, chartPath string) (*HelmGenerator, error) {
// ...
}
// Create a new KustomizeGenerator.
func NewKustomizeGenerator(fsys fs.FS, kustomizationPath string,
options KustomizeGeneratorOptions) (*KustomizeGenerator, error) {
// ...
}Apply and Delete Dependents
// The low-level Reconciler manages specified objects in the given target cluster.
type Reconciler struct {
// ...
}
// Apply given object manifests to the target cluster and maintain inventory.
func (r *Reconciler) Apply(ctx context.Context, inventory *[]*InventoryItem, objects []client.Object,
namespace string, ownerId string, componentDigest string) (bool, error) {
// ...
}
// Delete objects stored in the inventory from the target cluster and maintain inventory.
func (r *Reconciler) Delete(ctx context.Context, inventory *[]*InventoryItem,
ownerId string) (bool, error) {
// ...
}
// Check if the object set defined by inventory is ready for deletion.
func (r *Reconciler) IsDeletionAllowed(ctx context.Context, inventory *[]*InventoryItem,
ownerId string) (bool, string, error) {
// ...
}Getting Started
Bootstrap your first component operator in minutes, using the scaffolder or kubebuilder.
Concepts
Understand components, reconcilers, generators, and how the framework fits together.
Tools
Discover the scaffolder and other tooling that speeds up operator development.
Tutorials and Examples
Follow hands-on tutorials and browse practical examples to see the framework in action.