Skip to content

v1.0.0-rc.0

Pre-release
Pre-release

Choose a tag to compare

@mruoss mruoss released this 29 Oct 14:14
· 407 commits to master since this release
bc26912

With Version 1.0.0, Bonny got a thorough refactoring. You might consider reading the several guides (e.g. the migration guide)

  • Bonny.Operator was introduced as an entry point to the watching and handling
    of processes. Your controllers are not more added to the supervision tree by
    bonny. Instead you must create an operator and add that to your application's
    supervision tree.
  • The Pluggable (think Plug)
    library is used with Bonny.Axn as token to process ADDED, MODIFIED,
    DELETED and reconciliation events by Pluggable pipelines.
  • Bonny.ControllerV2 was introduced as a successor to Bonny.Controller. It leverages
    Pluggable.StepBuilder (think Plug.Builder) to build a pluggable pipeline.
  • Bonny.Event and Bonny.EventRecorder were introducd for Kubernetes
    event creation (#156, #5)

Why this refactoring?

  • Allows for better CRD and API version definitions
  • With a Pluggable architecture, controllers are much easier to test (Think of Plug.Conn tests)
  • The Pluggable architecture makes your processing pipelines composable and simpler to customize/extend
  • Manifest generation and event processing were decoupled
  • Internally, the amount of macros was reduced which makes Bonny easier to maintain

Added

  • Bonny.Pluggable.SkipObservedGenerations - halts the pipelines for a defined list of actions if the observed generation equals the resource's generation.
  • Bonny.Pluggable.ApplyDescendants - applies all the descendants added to the %Bonny.Axn{} struct.
  • Bonny.Pluggable.ApplyStatus - applies the status of the given %Bonny.Axn{} struct to the status subresource.
  • Bonny.Pluggable.Logger- logs an action event and when status, descendants and events are applied to the cluster. If desired, it makes sense to be placed as first step in your operator pipeline but can also be added to a controller pipeline.
  • Bonny.Resource.add_owner_reference/3 used to add the owner reference to resources created by the controller. (#147)
  • An integration test suite was added that runs tests against a "real" kubernetes cluster on the CI pipeline (#146, #84)
  • Mix task for initializing a new operator mix bonny.init (#160, #67)

Deprecated

  • Bonny.Controller was deprecated in favor of the new design with
    Bonny.Operator and Bonny.ControllerV2