gitlab-sync モジュール)で動作します。Git 連携が必要です。OAuth アプリケーションの作成方法と各設定の意味は GitLab 同期を参照してください。このページでは、それを 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 による証明書を使用している場合は、
/var/lib/overleaf/certs にマウントされる Secret overleaf-certs に CA を追加し(証明書とその他のファイルを参照)、ConfigMap で NODE_EXTRA_CA_CERTS: /var/lib/overleaf/certs/ca.pem を設定します。4
適用、再起動、確認
000 の場合はアクセスできていません。複数のレプリカ
共有のGITLAB_TOKEN_CIPHER_PASSWORD 以外に追加の設定は不要です。同期は Redis 内のロック(他の Git 同期と共有)を取得するため、2 つのレプリカが同じプロジェクトを同時に同期することはありません。ユーザーの GitLab トークンの更新も Redis のロックを取得するため、2 つのレプリカが同時にトークンを更新することはありません。
Kubernetes でのテスト
GITLAB_SYNC_URL に置いたセルフマネージド GitLab のモック(overleaf-certs の NODE_EXTRA_CA_CERTS を通じて信頼)に対して、Kubernetes 1.37 上でレプリカ 1 つ、Git 連携を有効にした状態で、GitLab 同期のエンドツーエンドテスト(40 ケース)に合格しています。対象は、アカウントの連携と連携解除、期限切れ間近のアクセストークンの更新と失効したトークン、新しいプライベートプロジェクトまたはグループプロジェクトへのエクスポート、リポジトリのインポート、プルとプッシュ、マージ、コンフリクト、削除されたブランチと強制プッシュされたブランチ、バイナリファイル、名前変更と削除、そしてオーナー、編集者、閲覧者がそれぞれ実行できる操作です。
