Giter Site home page Giter Site logo

aakashchan / katafygio Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bpineau/katafygio

0.0 1.0 0.0 369 KB

Dump, or continuously backup Kubernetes objets as yaml files in git

License: MIT License

Makefile 1.44% Go 95.64% Dockerfile 0.58% HTML 2.35%

katafygio's Introduction

katafygio

Build Status Coverage Status Go Report Card

katafygio discovers Kubernetes objects (deployments, services, ...), and continuously save them as yaml files in a git repository. This provides real time, continuous backups, and keeps detailled changes history.

Usage

To dump the cluster content once and exit:

katafygio --no-git --dump-only --local-dir /tmp/clusterdump/

To create a local git repository and continuously save the cluster content:

katafygio --local-dir /tmp/clusterdump/

To continuously push changes to a remote git repository:

katafygio --git-url https://user:[email protected]/myorg/myrepos.git --local-dir /tmp/clusterdump/

Filtering out irrelevant objects (esp. ReplicaSets and Pods) with -w, -x, -y and -z is useful to keep a concise git history.

# Filtering out objects having an owner reference (eg. managed pods or replicasets,
# from Deployments, Daemonsets etc that we already archive), secrets (confidential),
# events and nodes (irrelevant), helm secrets/configmap releases, and a configmap
# named "leader-elector" that has low value and is causing commits churn:

katafygio \
  --local-dir /tmp/clusterdump/ \
  --git-url https://user:[email protected]/myorg/myrepos.git \
  --exclude-having-owner-ref \
  --exclude-kind secrets,events,nodes,endpoints \
  --exclude-object configmap:kube-system/leader-elector \
  --filter 'owner!=helm'

You can also use the docker image.

CLI options

Backup Kubernetes cluster as yaml files in a git repository.
--exclude-kind (-x), --exclude-object (-y) and --exclude-namespaces (-z)
may be specified several times, or once with several comma separated values.

Usage:
  katafygio [flags]
  katafygio [command]

Available Commands:
  help        Help about any command
  version     Print the version number

Flags:
  -s, --api-server string            Kubernetes api-server url
  -c, --config string                Configuration file (default "/etc/katafygio/katafygio.yaml")
  -q, --context string               Kubernetes configuration context
  -d, --dry-run                      Dry-run mode: don't store anything
  -m, --dump-only                    Dump mode: dump everything once and exit
  -w, --exclude-having-owner-ref     Exclude all objects having an Owner Reference
  -x, --exclude-kind strings         Ressource kind to exclude. Eg. 'deployment'
  -z, --exclude-namespaces strings   Namespaces to exclude. Eg. 'temp.*' as regexes. This collects all namespaces and then filters them. Don't use it with the namespace flag.
  -y, --exclude-object strings       Object to exclude. Eg. 'configmap:kube-system/kube-dns'
  -l, --filter string                Label selector. Select only objects matching the label
  -t, --git-timeout duration         Git operations timeout (default 5m0s)
  -g, --git-url string               Git repository URL
  -p, --healthcheck-port int         Port for answering healthchecks on /health url
  -h, --help                         help for katafygio
  -k, --kube-config string           Kubernetes configuration path
  -e, --local-dir string             Where to dump yaml files (default "./kubernetes-backup")
  -v, --log-level string             Log level (default "info")
  -o, --log-output string            Log output (default "stderr")
  -r, --log-server string            Log server (if using syslog)
  -a, --namespace string             Only dump objects from this namespace
  -n, --no-git                       Don't version with git
  -i, --resync-interval int          Full resync interval in seconds (0 to disable) (default 900)

Configuration file and env variables

All settings can be passed by command line options, or environment variable, or in a yaml configuration file The environment are the same as command line options, in uppercase, prefixed by "KF_", and with underscore instead of dashs. ie.:

export KF_GIT_URL=https://user:[email protected]/myorg/myrepos.git
export KF_LOCAL_DIR=/tmp/clusterdump
export KF_LOG_LEVEL=info
export KF_EXCLUDE_KIND="pod ep rs clusterrole"

# non-prefixed KUBECONFIG works the same as for kubectl
export KUBECONFIG=/tmp/kconfig

Installation

You can find pre-built binaries in the releases page, ready to run on your desktop or in a Kubernetes cluster.

We also provide a docker image on docker hub and on quay.io.

On MacOS, you can use the brew formula:

brew install bpineau/tap/katafygio

You can also deploy with the provided helm chart and/or repository:

helm repo add katafygio https://bpineau.github.io/katafygio
helm repo update

helm install kube-backups katafygio/katafygio

See Also

katafygio's People

Contributors

bpineau avatar dragonn avatar erouan50 avatar jawher avatar

Watchers

 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.