Pebble

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.