Kubernetes and OpenShift Backup Operator
K8up Backup Operator
K8up is a Kubernetes backup operator based on Restic that will handle PVC and application backups on a Kubernetes or OpenShift cluster.
Just create a schedule
and a credentials
object in the namespace you’d like to backup.
It’s that easy. K8up takes care of the rest. It also provides a Prometheus endpoint for monitoring.
Documentation
The documentation is written in AsciiDoc and published with Antora to k8up.io.
It's source is available in the docs/
directory.
Run make docs-preview
to build the docs and preview changes.
Contributing
K8up is written using Kubebuilder.
You'll need:
make
sed
(or gsed
for MacOS)To run the end-to-end test (e.g. make e2e-test
), you additionally need:
helm
(version 3)jq
yq
node
and npm
bash
(installed, doesn't have to be your default shell)base64
find
These are the most common make targets: build
, test
, docker-build
, run
, kind-run
.
Run make help
to get an overview over the relevant targets and their intentions.
You can find the project roadmap at k8up.io.
We use Snyk to test the code regularly for vulnerabilities and other security issues.
If you find any security issue, please follow our Vulnerability Reporting process.
Code Structure
K8s consists of two main modules:
restic
binary and is invoked whenever a Backup
or Restore
(or similar) custom resource is instantiated.
If it's job (like doing a backup or a restore) is done, the process ends./
[o]: this is part of the recommended Operator SDK structure Generate Kubernetes code
If you make changes to the CRD structs you'll need to run code generation. This can be done with make:
make generateInstall CRDs
CRDs can be either installed on the cluster by running make install
or using kubectl apply -f config/crd/apiextensions.k8s.io/v1
.
Currently there's an issue using make install
related to how the CRDs are specified.
Therefore settle to the second approach for now.
Run the operator
You can run the operator in different ways:
make run-operator
(provide your own kubeconfig)make kind-run
(uses KIND to install a cluster in docker and provides its own kubeconfig in testbin/
)Best is if you have minio installed somewhere to be able to setup the needed env values. It needs to be reachable from within your dev cluster.
Run E2E tests
You need node
and npm
to run the tests, as it runs with DETIK.
To run e2e tests, execute:
make e2e-test
To test just a specific e2e test, run:
make e2e-test -e BATS_FILES=test-02-deployment.bats
To remove the local KIND cluster and other e2e resources, run:
make e2e-clean
To cleanup all created artifacts, there's always:
make cleanExample configurations
There are a number of example configurations in config/samples
.
Apply them using kubectl apply -f config/samples/somesample.yaml
Code of Conduct
Our code of conduct can be read at k8up.io.
Twice a month we will interview people behind open source businesses. We will talk about how they are building a business on top of open source projects.
We'll never share your email with anyone else.