katafygio
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/kfdumpTo continuously push changes to a remote git repository:
katafygio --git-url https://user:token@github.com/myorg/myrepos.git --local-dir /tmp/kfdumpFiltering out irrelevant objects (esp. ReplicaSets and Pods) with -x or -y
will help to keep resources usage low, and a concise git history. Eg.:
# Filtering out replicasets and pods since they are generated by Deployments
# (already archived), endpoints (managed by Services), secrets (to keep them
# confidential), events and node (irrelevant), and the leader-elector
# configmap that has low value and changes a lot, causing commits churn.
katafygio -e /tmp/kfdump \
-g https://user:token@github.com/myorg/myrepos.git \
-x secret,pod,event,replicaset,node,endpoint \
-y configmap:kube-system/leader-electorYou can also use the docker image.
CLI options
Backup Kubernetes cluster as yaml files in a git repository.
--exclude-kind (-x) and --exclude-object (-y) 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
-x, --exclude-kind strings Ressource kind to exclude. Eg. 'deployment'
-y, --exclude-object strings Object to exclude. Eg. 'configmap:kube-system/kube-dns'
-l, --filter string Label filter. 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:token@github.com/myorg/myrepos.git
export KF_LOCAL_DIR=/tmp/kfdump
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 MacOS, you can use the brew formula:
brew install bpineau/tap/katafygioYou can also deploy with the provided helm chart:
helm install --name kf-backups assets/helm-chart/katafygio/See Also
- Heptio Velero does sophisticated clusters backups, including volumes
- Stash backups volumes
- etcd backup operator