Pebble is a lightweight, API-driven process supervisor. In the charm SDK, it is used through Ops (ops.pebble.Client
) to give workload containers something akin to an init
system that will allow the charm container to interact with them.
See more: GitHub | Pebble
Pebble is the recommended way to create Kubernetes charms using the sidecar pattern.
Pebble notices
See also: How to use custom notices from the workload container
In Pebble, a notice is an aggregated event to record when custom events happen in the workload container or in Pebble itself.
See more: GitHub | Pebble > Notices
Pebble notices are supported in Juju starting with version 3.4. Juju polls each workload container’s Pebble server for new notices, and fires an event to the charm when a notice first occurs as well as each time it repeats.
Each notice has a type and key, the combination of which uniquely identifies it. A notice’s count of occurrences is incremented every time a notice with that type and key combination occurs.
Currently, the only notice type is “custom”. These are custom notices recorded by a user of Pebble; in future, other notice types may be recorded by Pebble itself. When a custom notice occurs, Juju fires a PebbleCustomNoticeEvent
event whose workload
attribute is set to the relevant container.
Custom notices allow the workload to wake up the charm when something interesting happens with the workload, for example, when a PostgreSQL backup process finishes, or some kind of alert occurs.