Bonny v1.0.0-rc.0 Release Notes

Release Date: 2022-10-29 // over 1 year ago
  • ๐Ÿ”„ Changed

    ๐Ÿ”จ With Version 1.0.0, Bonny got a thorough refactoring. Besides this changelog, you might consider the several guides (e.g. the [migration guide](./guides/migration.mid))

    • 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