# bonny v1.5.0 - Table of Contents Bonny: Kubernetes Operator Development Framework. Extend Kubernetes with Elixir ## Pages - [README](readme.md) - [Changelog](changelog.md) - [Controllers](controllers.md) - [CRD Versions](crd_versions.md) - [Testing](testing.md) - [The Operator](the_operator.md) - Guides - [Contributing](contributing.md) - [Migrations](migrations.md) - [Bonny Mix Tasks](mix_tasks.md) ## Modules - [Bonny](Bonny.md): Extend the Kubernetes API and implement CustomResourceDefinitions lifecycles in Elixir. - [Bonny.API.CRD](Bonny.API.CRD.md): A Custom Resource Definition. - [Bonny.API.ResourceEndpoint](Bonny.API.ResourceEndpoint.md): Defines the API Endpoint for a Kubernetes resource. - [Bonny.API.Version](Bonny.API.Version.md): Describes an API version of a custom resource. - [Bonny.Axn](Bonny.Axn.md): Describes a resource action event. - [Bonny.Axn.Test](Bonny.Axn.Test.md): Conveniences for testing Axn steps. - [Bonny.CRD](Bonny.CRD.md): Represents the `spec` portion of a Kubernetes [CustomResourceDefinition](https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/) manifest. - [Bonny.Config](Bonny.Config.md): Operator configuration interface - [Bonny.Controller](Bonny.Controller.md): `Bonny.Controller` defines controller behaviours and generates boilerplate for generating Kubernetes manifests. - [Bonny.ControllerV2](Bonny.ControllerV2.md): Controllers handle action events observed by a resource watch query. Controllers must be registered at the operator together with the resource watch query. The operator will then delegate events observed by that query for processing to this controller - [Bonny.Event](Bonny.Event.md): Represents a kubernetes event. Documentation: https://kubernetes.io/docs/reference/kubernetes-api/cluster-resources/event-v1/ - [Bonny.EventRecorder](Bonny.EventRecorder.md): Records kubernetes events regarding objects controlled by this operator. - [Bonny.Mix.Operator](Bonny.Mix.Operator.md): Encapsulates Kubernetes resource manifests for an operator - [Bonny.Naming](Bonny.Naming.md): Naming functions - [Bonny.Operator](Bonny.Operator.md): Defines a Bonny operator. - [Bonny.Operator.LeaderElector](Bonny.Operator.LeaderElector.md): The leader uses a [Kubernetes Lease](https://kubernetes.io/docs/concepts/architecture/leases/) to make sure the operator only runs on one single replica (the leader) at the same time. - [Bonny.PeriodicTask](Bonny.PeriodicTask.md): Register periodically run tasks. Use for running tasks as a part of reconciling a CRD with a lifetime, duration, or interval field. - [Bonny.Pluggable.AddManagedByLabelToDescendants](Bonny.Pluggable.AddManagedByLabelToDescendants.md): Adds the `app.kubernetes.io/managed-by` label to all descendants registered within the pipeline. - [Bonny.Pluggable.AddMissingGVK](Bonny.Pluggable.AddMissingGVK.md): The Kubernetes API sometimes doesn't set the fields `apiVersion` and `kind` on items of a list operation. E.g. if you use `K8s.Client` to get a list of deployments, the deployments won't contains those two fields. This is being discussed on https://github.com/kubernetes/kubernetes/issues/3030. - [Bonny.Pluggable.ApplyDescendants](Bonny.Pluggable.ApplyDescendants.md): Applies all the descendants added to the `%Bonny.Axn{}` struct. - [Bonny.Pluggable.ApplyStatus](Bonny.Pluggable.ApplyStatus.md): Applies the status of the given `%Bonny.Axn{}` struct to the status subresource. - [Bonny.Pluggable.Finalizer](Bonny.Pluggable.Finalizer.md): Declare a finalizer and its implementation. - [Bonny.Pluggable.Logger](Bonny.Pluggable.Logger.md): A pluggable step for logging basic action event information in the format - [Bonny.Pluggable.SkipObservedGenerations](Bonny.Pluggable.SkipObservedGenerations.md): Halts the pipelines for a defined list of actions if the observed generation equals the resource's generation. It also sets the observed generation value before applying the resource status to the cluster. - [Bonny.Resource](Bonny.Resource.md): Helper functions for dealing with kubernetes resources. - [Bonny.Server.AsyncStreamRunner](Bonny.Server.AsyncStreamRunner.md): Runs the given stream in a separate process. Prepare your stream and add this Runner to your supervision tree in order to control it (e.g. restart after the stream ends). - [Bonny.Server.Reconciler](Bonny.Server.Reconciler.md): Creates a stream that, when run, streams a list of resources and calls `reconcile/1` on the given controller for each resource in the stream in parallel. - [Bonny.Server.Scheduler](Bonny.Server.Scheduler.md): Kubernetes custom scheduler interface. Built on top of `Reconciler`. - [Bonny.Server.Scheduler.Binding](Bonny.Server.Scheduler.Binding.md): Kubernetes [binding](#placeholder) interface. - [Bonny.Server.Watcher](Bonny.Server.Watcher.md): Creates the stream for watching resources in kubernetes and prepares its processing. - [Bonny.Sys.Event](Bonny.Sys.Event.md): Telemetry event definitions for this library - [Bonny.Sys.Logger](Bonny.Sys.Logger.md): Attaches telemetry events to the Elixir Logger - [Bonny.Sys.Telemetry](Bonny.Sys.Telemetry.md): Telemetry event definitions for this library - [DeploymentEventLogController](DeploymentEventLogController.md): This is a goofy config, but it makes this work in dev w/o having to POST an Example CRD. - [Mix.Bonny](Mix.Bonny.md): Mix task helpers - [TestScheduler](TestScheduler.md) - Exceptions - [Bonny.Axn.DescendantsAlreadyAppliedError](Bonny.Axn.DescendantsAlreadyAppliedError.md): Error raised when trying to register a descendant or apply the descendants when already applied. - [Bonny.Axn.EventsAlreadyEmittedError](Bonny.Axn.EventsAlreadyEmittedError.md): Error raised when trying to register an event or emit evnts when already emitted. - [Bonny.Axn.StatusAlreadyAppliedError](Bonny.Axn.StatusAlreadyAppliedError.md): Error raised when trying to update or apply an already applied status ## Mix Tasks - [mix bonny.gen.controller](Mix.Tasks.Bonny.Gen.Controller.md): Generates a new CRD controller - [mix bonny.gen.dockerfile](Mix.Tasks.Bonny.Gen.Dockerfile.md): Generates a Dockerfile for this operator - [mix bonny.gen.manifest](Mix.Tasks.Bonny.Gen.Manifest.md): Generates the Kubernetes YAML manifest for this operator - [mix bonny.init](Mix.Tasks.Bonny.Init.md): Initialized an operator wiht bonny.