Toolbox
- Tier: 基础版,专业版,旗舰版
- Offering: 私有化部署
极狐GitLab Toolbox Pod 用于在极狐GitLab 应用程序中执行周期性的维护任务。这些任务包括备份、Sidekiq 维护和 Rake 任务。
配置
以下配置设置是 Toolbox chart 提供的默认设置:
yaml1gitlab: 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: {}
参数 | 描述 | 默认值 |
---|---|---|
affinity | Pod 分配的亲和规则 | {} |
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.concurrencyPolicy | Kubernetes 作业并发策略 | 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 所需的最低 CPU | 50m |
backups.cron.resources.requests.memory | 备份 cron 所需的最低内存 | 350M |
backups.cron.restartPolicy | 备份 cron 重启策略(Never 或 OnFailure) | OnFailure |
backups.cron.schedule | Cron 样式调度字符串 | 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 | 要使用的对象存储提供者(s3,gcs 或 azure) | s3 |
backups.objectStorage.config.gcpProject | 后端为 gcs 时使用的 GCP 项目 | "" |
backups.objectStorage.config.key | 密钥中包含凭据的密钥 | "" |
backups.objectStorage.config.secret | 对象存储凭据密钥 | "" |
common.labels | 应用于此 chart 创建的所有对象的补充标签 | {} |
deployment.strategy | 允许配置部署使用的更新策略 | { type: Recreate } |
enabled | Toolbox 启用标志 | true |
extra | 额外 gitlab.yml 配置 的 YAML 块 | {} |
image.pullPolicy | Toolbox 镜像拉取策略 | IfNotPresent |
image.pullSecrets | Toolbox 镜像拉取密钥 | |
image.repository | Toolbox 镜像仓库 | registry.gitlab.com/gitlab-org/build/cng/gitlab-toolbox-ee |
image.tag | Toolbox 镜像标签 | master |
init.image.repository | Toolbox 初始化镜像仓库 | |
init.image.tag | Toolbox 初始化镜像标签 | |
init.resources | Toolbox 初始化容器资源需求 | { requests: { cpu: 50m }} |
init.containerSecurityContext | initContainer 特定 securityContext | |
init.containerSecurityContext.allowPrivilegeEscalation | initContainer 特定:控制进程是否可以获取比父进程更多的权限 | false |
init.containerSecurityContext.runAsUser | initContainer 特定:容器应以其启动的用户 ID | 1000 |
init.containerSecurityContext.allowPrivilegeEscalation | initContainer 特定:控制进程是否可以获取比父进程更多的权限 | false |
init.containerSecurityContext.runAsNonRoot | initContainer 特定:控制容器是否以非 root 用户运行 | true |
init.containerSecurityContext.capabilities.drop | initContainer 特定:移除容器的 Linux 能力 | [ "ALL" ] |
nodeSelector | Toolbox 和备份作业节点选择 | |
persistence.accessMode | Toolbox 持久化访问模式 | ReadWriteOnce |
persistence.enabled | Toolbox 启用持久化标志 | false |
persistence.matchExpressions | 绑定的标签表达式匹配 | |
persistence.matchLabels | 绑定的标签值匹配 | |
persistence.size | Toolbox 持久化卷大小 | 10Gi |
persistence.storageClass | 提供的存储类名称 | |
persistence.subPath | Toolbox 持久化卷挂载路径 | |
persistence.volumeName | 现有持久卷名称 | |
podLabels | 运行 Toolbox Pods 的标签 | {} |
priorityClassName | 分配给 pods 的优先级类。 | |
replicas | 运行的 Toolbox Pods 数量 | 1 |
resources.requests | Toolbox 所需的最低资源 | { cpu: 50m, memory: 350M |
securityContext.fsGroup | Pod 应以其启动的文件系统组 ID | 1000 |
securityContext.runAsUser | Pod 应以其启动的用户 ID | 1000 |
securityContext.runAsGroup | Pod 应以其启动的组 ID | 1000 |
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.annotations | ServiceAccount 的注释 | {} |
serviceAccount.automountServiceAccountToken | 指示是否应在 pods 中挂载默认的 ServiceAccount 访问令牌 | false |
serviceAccount.enabled | 指示是否使用 ServiceAccount | false |
serviceAccount.create | 指示是否应创建 ServiceAccount | false |
serviceAccount.name | ServiceAccount 的名称。如果未设置,则使用完整的 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 控制台:
shell1# 定位 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。