kubernetesクラスターの管理者は、名前空間からリソース構成を保存して別のクラスターに転送するか、不安定なテストサイトのバックアップを作成するというタスクに直面します。ターミナルで流暢に書かれたkubectlユーティリティを備えたワンライナースクリプトは、このタスクを問題なく処理しますが、毎回次のスクリプトの書き込みに数分を費やすのにうんざりしている場合はどうでしょうか。これがkube-dumpユーティリティの登場です。実際、これはクラスターリソースをダンプするという1つのことしかできないユーティリティです。
yaml .
:
, .
, .
, .
kubernetes CronJob.
.
git .
.
.env .
:
./kube-dump dump
dev prod /dump, kubectl.
docker pull woozymasta/kube-dump:latest
docker run --tty --interactive --rm \
--volume $HOME/.kube:/.kube \
--volume $HOME/dump:/dump \
woozymasta/kube-dump:latest \
dump-namespaces -n dev,prod -d /dump --kube-config /.kube/config
CronJob
, ServiceAccount view. view, , .
CronJob ServiceAccount ClusterRoleBinding view:
kubectl create ns kube-dump kubectl -n kube-dump apply -f \ https://raw.githubusercontent.com/WoozyMasta/kube-dump/master/deploy/cluster-role-view.yaml
GitLab OAuth , :\
kubectl -n kube-dump create secret generic kube-dump \
--from-literal=GIT_REMOTE_URL=https://oauth2:$TOKEN@corp-gitlab.com/devops/cluster-bkp.git
インストールする前に、ニーズに合わせて環境変数を構成します。この例では、デフォルトで、devおよびprod名前空間をコピーするモードが設定され、その後、my-clusterブランチで変更をコミットし、リモートリポジトリに送信します。
タスクの起動頻度を指定するCronJobを設定します。
spec:
schedule: "0 1 * * *"
または、サンプルをそのままインストールしてから編集します。
kubectl -n kube-dump apply -f \ https://github.com/WoozyMasta/kube-dump/blob/master/deploy/cronjob-git-token.yaml kubectl -n kube-dump edit cronjobs.batch kube-dump
さらなる開発の計画
s3互換ストレージへのダンプの送信を実装します。
電子メールとWebhookを介して通知を送信する。
機密データを暗号化するためのGit-crypt;
Bash / Zshオートコンプリート;
OpenShiftのサポート。
また、ご意見・ご感想をお寄せいただき、誠にありがとうございます。