备份极狐GitLab 安装
极狐GitLab 备份是通过在 chart 中提供的 Toolbox pod 中运行 backup-utility
命令来进行的。还可以通过启用此 chart 的 基于 Cron 的备份 功能来自动化备份。
在第一次运行备份之前,您应该确保 Toolbox 已正确配置,用于访问对象存储
按照以下步骤备份基于 GitLab Helm chart 的安装实例。
创建备份
-
通过执行以下命令确保 toolbox pod 正在运行。
kubectl get pods -lrelease=RELEASE_NAME,app=toolbox
-
运行备份实用程序。
kubectl exec <Toolbox pod name> -it -- backup-utility
-
访问对象存储服务中的
gitlab-backups
存储桶并确保已添加 tarball。 它将以<timestamp>_<version>_gitlab_backup.tar
格式命名。 -
后续恢复需要此 tarball。
基于 Cron 的备份
Helm Chart 创建的 Kubernetes CronJob 在 jobTemplate 上设置了
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
注释。 某些 Kubernetes 环境(例如 GKE Autopilot)不允许设置此注解,并且不会为备份创建 Job Pod。您可以通过将 gitlab.toolbox.backups.cron.safeToEvict
参数设置为 true
来更改此注释,允许创建作业,但存在被驱逐和损坏备份的风险。可以在此 chart 中启用基于 Cron 的备份,并按照 Kubernetes 计划 定义的定期间隔发生。
您需要设置以下参数:
-
gitlab.toolbox.backups.cron.enabled
:设置为 true 以启用基于 cron 的备份 -
gitlab.toolbox.backups.cron.schedule
:根据 Kubernetes 调度文档设置 -
gitlab.toolbox.backups.cron.extraArgs
:可以选择为 backup-utility 设置额外的参数(如--skip db
)
备份实用程序额外参数
备份实用程序可以采用一些额外的参数:
kubectl exec <Toolbox pod name> -it -- backup-utility --help
备份 secrets
您还应该保存一份 rails secrets 的副本。(作为安全预防措施,这些不包括在备份中。我们建议将包含数据库的完整备份与 secret 副本分开。)
-
查找 rails secrets 的对象名称
kubectl get secrets | grep rails-secret
-
保存一份 rails secret 的副本
kubectl get secrets <rails-secret-name> -o jsonpath="{.data['secrets\.yml']}" | base64 --decode > gitlab-secrets.yaml
-
将
gitlab-secrets.yaml
存储在一个安全的位置,您可能需要它来完全恢复您的备份。