リソース構成をKubernetesにバックアップする

kubernetesクラスターの管理者は、名前空間からリソース構成を保存して別のクラスターに転送するか、不安定なテストサイトのバックアップを作成するというタスクに直面します。ターミナルで流暢に書かれたkubectlユーティリティを備えたワンライナースクリプトは、このタスクを問題なく処理しますが、毎回次のスクリプトの書き込みに数分を費やすのにうんざりしている場合はどうでしょうか。これがkube-dumpユーティリティの登場です。実際、これはクラスターリソースをダンプするという1つのことしかできないユーティリティです。





1つの名前空間のすべてのリソースを保存するためのユーティリティの例

yaml .





:





  • , .





  • , .





  • , .





  • kubernetes CronJob.





  • .





  • git .





  • .





.env .





kubectl , jq yq. , --help.





:





./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

CronJob git . .





, 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のサポート。





また、ご意見・ご感想をお寄せいただき、誠にありがとうございます。





リンク

  • Github





  • DockerHub





  • GitHubページ








All Articles