operator-toolkit provides framework and tools to help implement kubernetes operators.
MIT License
operator-toolkit provides framework and tools to help implement kubernetes operators.
controller
package provides tools to implement certain controller patterns.
controller/composite
package contains interface and types to implement thecontroller/sync
package contains interface and types to implement synccontroller/external-object-sync
package uses the sync pattern as the basecontroller/metadata-sync
package uses the sync pattern as the base and addscontroller/external
package provides tools for building externaloperator
package provides tools to implement the core business logic of an
operator that interacts with the world. An Operand
is a unit of work. An
Operator
can have one or more Operand
s. The relationship between the
Operand
s is modelled using a Directed Asyclic Graph (DAG). The Operator
can
be configured to define how the Operand
s are executed.
declarative
package provides tools to create and transform the kubernetes
manifests in a declarative way. It uses kustomize tools to read, organize and
transform the manifests with the desired configuration. This helps avoid
writing Go structs for all the kubernetes objects and write generic reusable
transforms.
rbac/client
package provides a controller-runtime generic client
implementation capable of recording the actions performed using the client on
the objects and generate RBAC permissions as Role and ClusterRole.
telemetry/export
package provides opentelemetry exporters that can be used to
enable telemetry in an operator.
webhook/cert
package provides a local certificate manager that can provision
self signed certificate for webhook server, backed by k8s secret for
persistence, and refresh certificate when they expire automatically.
webhook/admission
package provides a consistent way of building admission
controllers for k8s native and custom resources with function chaining
support.
The above packages can be used together or independently of each other.
example/
contains an example of using all the packages together in a
kubebuilder based operator.