gitlab-sync 模块)中。它需要 Git 集成。请在 GitLab 同步 中创建 OAuth 应用并了解各项设置的作用;本页介绍如何在 Kubernetes 中进行配置。
配置
1
ConfigMap
30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" 以及 Git 集成 中的 git-bridge StatefulSet:否则账户设置和编辑器中将隐藏 GitLab 同步。2
Secret
GITLAB_TOKEN_CIPHER_PASSWORD 用于加密存储在 MongoDB 中的用户 GitLab 访问令牌和刷新令牌。所有副本必须使用相同的值,之后更改它会导致所有用户都需要重新关联 GitLab。3
私有 CA(可选)
如果你的 GitLab 使用由你自己的 CA 签发的证书,请将该 CA 添加到挂载于
/var/lib/overleaf/certs 的 Secret overleaf-certs 中(参见证书和其他文件),并在 ConfigMap 中设置 NODE_EXTRA_CA_CERTS: /var/lib/overleaf/certs/ca.pem。4
应用、重启并检查
000 表示无法访问。多个副本
除共享的GITLAB_TOKEN_CIPHER_PASSWORD 外,无需其他额外配置。同步时会在 Redis 中获取一个锁(与其他 Git 同步共享),因此两个副本永远不会同时同步同一个项目。刷新用户的 GitLab 令牌时同样会获取一个 Redis 锁,因此两个副本不会同时刷新它。
在 Kubernetes 上的测试
我们针对位于GITLAB_SYNC_URL 的自托管 GitLab 模拟服务(通过来自 overleaf-certs 的 NODE_EXTRA_CA_CERTS 信任),在 Kubernetes 1.37 上以单副本并启用 Git 集成的方式运行了 GitLab 同步的端到端测试,全部通过(40 个用例):关联和取消关联账户、刷新即将过期的访问令牌以及已撤销的令牌、导出到新的私有项目或群组项目、导入仓库、拉取和推送、合并、冲突、已删除和被强制推送的分支、二进制文件、重命名和删除,以及所有者、编辑者和查看者各自可以执行的操作。
