备份极狐GitLab 安装

极狐GitLab 备份是通过在 chart 中提供的 Toolbox pod 中运行 backup-utility 命令来进行的。还可以通过启用此 chart 的 基于 Cron 的备份 功能来自动化备份。

在第一次运行备份之前,您应该确保 Toolbox 已正确配置,用于访问对象存储

按照以下步骤备份基于 GitLab Helm chart 的安装实例。

创建备份

  1. 通过执行以下命令确保 toolbox pod 正在运行。

    kubectl get pods -lrelease=RELEASE_NAME,app=toolbox
    
  2. 运行备份实用程序。

    kubectl exec <Toolbox pod name> -it -- backup-utility
    
  3. 访问对象存储服务中的 gitlab-backups 存储桶并确保已添加 tarball。 它将以 <timestamp>_<version>_gitlab_backup.tar 格式命名。

  4. 后续恢复需要此 tarball。

基于 Cron 的备份

note 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 副本分开。)

  1. 查找 rails secrets 的对象名称

    kubectl get secrets | grep rails-secret
    
  2. 保存一份 rails secret 的副本

    kubectl get secrets <rails-secret-name> -o jsonpath="{.data['secrets\.yml']}" | base64 --decode > gitlab-secrets.yaml
    
  3. gitlab-secrets.yaml 存储在一个安全的位置,您可能需要它来完全恢复您的备份。

额外信息