github-sync モジュール)で動作します。Git 連携が必要です。OAuth アプリケーションの作成方法と各設定の意味は GitHub 同期を参照してください。このページでは、それを Kubernetes に適用する方法を説明します。
設定
1
ConfigMap
30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" と、Git 連携の git-bridge StatefulSet が用意されている必要があります。これらがない場合、アカウント設定とエディターに GitHub 同期は表示されません。2
Secret
GITHUB_TOKEN_CIPHER_PASSWORD は、MongoDB 内のユーザーの GitHub アクセストークンを暗号化します。すべてのレプリカで同じ値を使用する必要があり、後から変更すると、すべてのユーザーが GitHub を再度連携する必要があります。3
プライベート CA(任意)
GitHub が独自の CA による証明書を使用している場合は、
/var/lib/overleaf/certs にマウントされる Secret overleaf-certs に CA を追加し(証明書とその他のファイルを参照)、ConfigMap で NODE_EXTRA_CA_CERTS: /var/lib/overleaf/certs/ca.pem を設定します。4
適用、再起動、確認
000 の場合はアクセスできていません。複数のレプリカ
共有のGITHUB_TOKEN_CIPHER_PASSWORD 以外に追加の設定は不要です。同期は Redis 内のロック(他の Git 同期と共有)を取得するため、2 つのレプリカが同じプロジェクトを同時に同期することはありません。
Kubernetes でのテスト
github.com とその REST および GraphQL API のモック(overleaf-certs の NODE_EXTRA_CA_CERTS を通じて信頼)に対して、Kubernetes 1.37 上でレプリカ 1 つ、Git 連携を有効にした状態で、GitHub 同期のエンドツーエンドテスト(31 ケース)に合格しています。対象は、アカウントの連携と連携解除、失効したトークン、新しいプライベートリポジトリまたは組織リポジトリへのプロジェクトのエクスポート、リポジトリのインポート(アップロード上限を超える場合も含む)、プルとプッシュ、マージ、コンフリクトと手動マージ、削除されたブランチと強制プッシュされたブランチ、バイナリファイル、名前変更と削除、プッシュ権限の喪失、そしてオーナー、編集者、閲覧者がそれぞれ実行できる操作です。
