Toolbox

  1. Tier: 基础版,专业版,旗舰版
  2. Offering: 私有化部署

极狐GitLab Toolbox Pod 用于在极狐GitLab 应用程序中执行周期性的维护任务。这些任务包括备份、Sidekiq 维护和 Rake 任务。

配置#

以下配置设置是 Toolbox chart 提供的默认设置:

yaml
1gitlab: 2 ## doc/charts/gitlab/toolbox 3 toolbox: 4 enabled: true 5 replicas: 1 6 backups: 7 cron: 8 enabled: false 9 concurrencyPolicy: Replace 10 failedJobsHistoryLimit: 1 11 schedule: "0 1 * * *" 12 successfulJobsHistoryLimit: 3 13 suspend: false 14 backoffLimit: 6 15 safeToEvict: false 16 restartPolicy: "OnFailure" 17 resources: 18 requests: 19 cpu: 50m 20 memory: 350M 21 persistence: 22 enabled: false 23 accessMode: ReadWriteOnce 24 useGenericEphemeralVolume: false 25 size: 10Gi 26 objectStorage: 27 backend: s3 28 config: {} 29 persistence: 30 enabled: false 31 accessMode: 'ReadWriteOnce' 32 size: '10Gi' 33 resources: 34 requests: 35 cpu: '50m' 36 memory: '350M' 37 securityContext: 38 fsGroup: '1000' 39 runAsUser: '1000' 40 runAsGroup: '1000' 41 containerSecurityContext: 42 runAsUser: '1000' 43 affinity: {}
参数描述默认值
affinityPod 分配的亲和规则{}
annotations添加到 Toolbox Pods 和作业的注释{}
common.labels应用于此 chart 创建的所有对象的补充标签{}
antiAffinityLabels.matchLabels设置反亲和选项的标签
backups.cron.activeDeadlineSeconds备份 CronJob 活动截止秒数(如果为 null,则不应用活动截止)null
backups.cron.ttlSecondsAfterFinished备份 CronJob 作业完成后的存活时间(如果为 null,则不应用存活时间)null
backups.cron.safeToEvict自动缩放安全驱逐注释false
backups.cron.backoffLimit备份 CronJob 退避限制6
backups.cron.concurrencyPolicyKubernetes 作业并发策略Replace
backups.cron.enabled备份 CronJob 启用标志false
backups.cron.extraArgs传递给备份实用程序的参数字符串
backups.cron.failedJobsHistoryLimit历史上失败备份作业的数量1
backups.cron.persistence.accessMode备份 cron 持久化访问模式ReadWriteOnce
backups.cron.persistence.enabled备份 cron 启用持久化标志false
backups.cron.persistence.matchExpressions绑定的标签表达式匹配
backups.cron.persistence.matchLabels绑定的标签值匹配
backups.cron.persistence.useGenericEphemeralVolume使用通用临时卷false
backups.cron.persistence.size备份 cron 持久化卷大小10Gi
backups.cron.persistence.storageClass提供的存储类名称
backups.cron.persistence.subPath备份 cron 持久化卷挂载路径
backups.cron.persistence.volumeName现有持久卷名称
backups.cron.resources.requests.cpu备份 cron 所需的最低 CPU50m
backups.cron.resources.requests.memory备份 cron 所需的最低内存350M
backups.cron.restartPolicy备份 cron 重启策略(NeverOnFailureOnFailure
backups.cron.scheduleCron 样式调度字符串0 1 * * *
backups.cron.startingDeadlineSeconds备份 cron 作业启动截止时间,以秒为单位(如果为 null,则不应用启动截止时间)null
backups.cron.successfulJobsHistoryLimit历史上成功备份作业的数量3
backups.cron.suspend备份 cron 作业暂停false
backups.cron.timeZone备份调度的时区。有关更多信息,请参阅 Kubernetes 文档。如果未指定,则使用集群时区。""
backups.cron.tolerations要添加到备份 cron 作业的容忍度""
backups.cron.nodeSelector备份 cron 作业节点选择""
backups.objectStorage.backend要使用的对象存储提供者(s3gcsazures3
backups.objectStorage.config.gcpProject后端为 gcs 时使用的 GCP 项目""
backups.objectStorage.config.key密钥中包含凭据的密钥""
backups.objectStorage.config.secret对象存储凭据密钥""
common.labels应用于此 chart 创建的所有对象的补充标签{}
deployment.strategy允许配置部署使用的更新策略{ type: Recreate }
enabledToolbox 启用标志true
extra额外 gitlab.yml 配置 的 YAML 块{}
image.pullPolicyToolbox 镜像拉取策略IfNotPresent
image.pullSecretsToolbox 镜像拉取密钥
image.repositoryToolbox 镜像仓库registry.gitlab.com/gitlab-org/build/cng/gitlab-toolbox-ee
image.tagToolbox 镜像标签master
init.image.repositoryToolbox 初始化镜像仓库
init.image.tagToolbox 初始化镜像标签
init.resourcesToolbox 初始化容器资源需求{ requests: { cpu: 50m }}
init.containerSecurityContextinitContainer 特定 securityContext
init.containerSecurityContext.allowPrivilegeEscalationinitContainer 特定:控制进程是否可以获取比父进程更多的权限false
init.containerSecurityContext.runAsUserinitContainer 特定:容器应以其启动的用户 ID1000
init.containerSecurityContext.allowPrivilegeEscalationinitContainer 特定:控制进程是否可以获取比父进程更多的权限false
init.containerSecurityContext.runAsNonRootinitContainer 特定:控制容器是否以非 root 用户运行true
init.containerSecurityContext.capabilities.dropinitContainer 特定:移除容器的 Linux 能力[ "ALL" ]
nodeSelectorToolbox 和备份作业节点选择
persistence.accessModeToolbox 持久化访问模式ReadWriteOnce
persistence.enabledToolbox 启用持久化标志false
persistence.matchExpressions绑定的标签表达式匹配
persistence.matchLabels绑定的标签值匹配
persistence.sizeToolbox 持久化卷大小10Gi
persistence.storageClass提供的存储类名称
persistence.subPathToolbox 持久化卷挂载路径
persistence.volumeName现有持久卷名称
podLabels运行 Toolbox Pods 的标签{}
priorityClassName分配给 pods 的优先级类
replicas运行的 Toolbox Pods 数量1
resources.requestsToolbox 所需的最低资源{ cpu: 50m, memory: 350M
securityContext.fsGroupPod 应以其启动的文件系统组 ID1000
securityContext.runAsUserPod 应以其启动的用户 ID1000
securityContext.runAsGroupPod 应以其启动的组 ID1000
securityContext.fsGroupChangePolicy更改卷的所有权和权限的策略(需要 Kubernetes 1.23)
securityContext.seccompProfile.type使用的 seccomp 配置文件RuntimeDefault
containerSecurityContext覆盖容器的 securityContext
containerSecurityContext.runAsUser允许覆盖容器启动时使用的特定安全上下文1000
containerSecurityContext.allowPrivilegeEscalation控制容器的进程是否可以获取比父进程更多的权限false
containerSecurityContext.runAsNonRoot控制容器是否以非 root 用户运行true
containerSecurityContext.capabilities.drop移除 Gitaly 容器的 Linux 能力[ "ALL" ]
serviceAccount.annotationsServiceAccount 的注释{}
serviceAccount.automountServiceAccountToken指示是否应在 pods 中挂载默认的 ServiceAccount 访问令牌false
serviceAccount.enabled指示是否使用 ServiceAccountfalse
serviceAccount.create指示是否应创建 ServiceAccountfalse
serviceAccount.nameServiceAccount 的名称。如果未设置,则使用完整的 chart 名称
tolerations添加到 Toolbox 的容忍度
extraEnvFrom从其他数据源公开的额外环境变量列表

配置备份#

有关配置备份的信息,请参阅备份和恢复文档。有关备份执行的技术实现的更多信息,请参阅备份和恢复架构文档

持久化配置#

备份和恢复的持久化存储是单独配置的。请在配置极狐GitLab 的备份和恢复操作时查看以下注意事项。

备份使用 backups.cron.persistence.* 属性,恢复使用 persistence.* 属性。有关持久化存储配置的进一步描述将仅使用最终的属性键(例如 .enabled.size),需要添加适当的前缀。

持久化存储默认是禁用的,因此需要将 .enabled 设置为 true 才能对任何显著大小的备份或恢复进行操作。此外,要么需要为 PersistentVolume 指定 .storageClass,以便由 Kubernetes 创建 PersistentVolume,要么需要手动创建 PersistentVolume。如果 .storageClass 指定为 '-',则 PersistentVolume 将使用 Kubernetes 集群中指定的默认存储类创建。

如果手动创建 PersistentVolume,则可以使用 .volumeName 属性或选择器 .matchLables / .matchExpressions 属性来指定卷。

在大多数情况下,默认的 .accessMode 值将为 Toolbox 访问 PersistentVolumes 提供足够的控制。请查阅安装在 Kubernetes 集群中的 CSI 驱动程序的文档,以确保设置正确。

备份注意事项#

备份操作需要一定数量的磁盘空间来存放备份前的各个组件,然后再将其写入备份对象存储。磁盘空间的数量取决于以下因素:

  • 项目的数量以及每个项目下存储的数据量
  • PostgresSQL 数据库的大小(议题、MR 等)
  • 每个对象存储后端的大小

一旦确定了大致大小,就可以设置 backups.cron.persistence.size 属性,以便开始备份。

恢复注意事项#

在备份恢复期间,需要将备份提取到磁盘,然后再将文件替换到运行的实例上。此恢复磁盘空间的大小由 persistence.size 属性控制。请注意,随着极狐GitLab 安装的增长,恢复磁盘空间的大小也需要相应增长。在大多数情况下,恢复磁盘空间的大小应与备份磁盘空间的大小相同。

Toolbox 包含的工具#

Toolbox 容器包含有用的极狐GitLab 工具,如 Rails 控制台、Rake 任务等。这些命令允许检查数据库迁移的状态,执行管理任务的 Rake 任务,交互使用 Rails 控制台:

shell
1# 定位 Toolbox pod 2kubectl get pods -lapp=toolbox 3 4# 在 pod 内启动 shell 5kubectl exec -it <Toolbox pod name> -- bash 6 7# 打开 Rails 控制台 8gitlab-rails console -e production 9 10# 执行 Rake 任务 11gitlab-rake gitlab:env:info

亲和性#

有关更多信息,请参阅 affinity