Notable changes:
-
Added a new I/O module
rbdaio
which uses the asynchronous API oflibrbd
. Performance results in relation torbd
have been mixed but performance should be at least 10-20% higher on restore. In one case performance has been increased tenfold. -
Almost all Bash helper scripts have been rewritten in Python. The new scripts are calling Benji via the command line just like before. This is intentional to minimize the interdependence between Benji and these helpers. The scripts are examples only and not part of the API. There still is one example Bash script at
scripts/ceph.sh
to show how to interact with Benji via Bash. The helpers have additional dependencies which can be installed withpip install benji[helpers]
. -
The Prometheus metrics exported by
benji-k8s
have changed:- Backup metrics now longer include the
auxiliary_data
label. - Command metrics now longer include the
arguments
label. The arguments have been folded into thecommand
label.
- Backup metrics now longer include the
-
benji-k8s
: The included scripts have been replaced by Python scripts and are using the new helper modules. They should be calling compatible. -
benji-k8s
: All calls tokubectl
have been replaced with direct API requests. The official Python client for Kubernetes is used.kubectl
is still included in the image. -
Helm chart: Volumes and volume mounts are now configurable via
values.yaml
. This is mostly for getting the Ceph credentials into the container but could also be used to mount file-based storage. -
Helm chart: The PostgreSQL chart dependency was updated from 2.7.6 to 4.2.2. This is the last chart which uses PostgreSQL 10 and requires no upgrade of the database data structures.
-
benji-k8s
and Helm chart: The image was simplified to only include the Kubernetes specific scripts andkubectl
. Instead of running backups or other jobs viacrond
inside the container, the Helm chart now generates separateCronJob
s inside of Kubernetes. This is in preparation of the move to custom resources and an operator. -
An experimental and as of yet unfinished REST API has been added. The environment variable
BENJI_EXPERIMENTAL
has to be set to1
to enable the newrest-api
subcommand. The API currently only services one request at a time, which limits its usefulness. The REST API has additional dependencies, they can be installed withpip install benji[rest-api]
.