Giter Site home page Giter Site logo

schoolguy / k8up Goto Github PK

View Code? Open in Web Editor NEW

This project forked from k8up-io/k8up

0.0 0.0 0.0 50.76 MB

Kubernetes and OpenShift Backup Operator

Home Page: https://k8up.io/

License: Apache License 2.0

Shell 9.28% Go 86.83% Makefile 3.26% Dockerfile 0.13% Mustache 0.50%

k8up's Introduction

Build Go version Version GitHub downloads License CII Best Practices OpenSSF Scorecard Artifact Hub

K8up logo

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.

K8up is production ready. It is used in production deployments since 2019.

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:

  • A running Kubernetes cluster (minishift, minikube, k3s, ... you name it)
  • kubectl
  • Go development environment
  • Your favorite IDE (with a Go plugin)
  • Docker
  • 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:

  • The operator module is the part that runs constantly within K8s and contains the various reconciliation loops.
  • The restic module is our interface to the 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.
/
- api           Go Types for the Custom Resource Definitions (CRDs) [o]
- cmd           CLI definition and entrypoints
- common        Code that is not specific to either
- config        Various configuration files for the Operator SDK [o]
- controllers   The reconciliation loops of the operator module [o]
- docs          Out ASCIIdoc code as published on https://k8up.io
- e2e           The Bats-based End-To-End tests
- envtest       Infrastructure code for the integration tests
- operator      Code that is otherwise related to the _operator module_,
                but not part of the recommended Operator SDK structure.
- restic        Code that makes up the _restic module_.

[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 generate

Install 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:

  1. as a container image (see quickstart)
  2. using make run-operator (provide your own kubeconfig)
  3. using make kind-run (uses KIND to install a cluster in docker and provides its own kubeconfig in testbin/)
  4. using a configuration of your favorite IDE

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 clean

Example configurations

There are a number of example configurations in config/samples. Apply them using kubectl apply -f config/samples/somesample.yaml

Community

Read more about our community in the documentation.

Chat with us

The K8up project is present in the CNCF Slack Workspace in the #k8up channel.

Monthly community meeting

We host a monthly community meeting. For more information, head over to the community documentation.

Code of Conduct

Our code of conduct can be read at k8up.io.

k8up's People

Contributors

ccremer avatar kidswiss avatar cimnine avatar renovate-bot avatar tobru avatar akosma avatar renovate[bot] avatar poyaz avatar bastjan avatar psy-q avatar susana-garcia avatar mweibel avatar wejdross avatar srueg avatar chloesoe avatar zugao avatar corvus-ch avatar dns2utf8 avatar mhutter avatar glrf avatar thebiglee avatar anothertobi avatar stogas avatar l0wl3vel avatar jessebot avatar megian avatar bittner avatar jcgkitten avatar modulartaco avatar huettner94 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.