Skip to main content
Git 連携では、独立した git-bridge サービスを実行します。ユーザーは ${OVERLEAF_SITE_URL}/git/<project id> を通じてクローンやプッシュを行います。Ayakaleaf Pro Pod がそれらのリクエストを git-bridge に転送し、git-bridge はプロジェクトの内容と履歴を取得するために Pod を呼び出します。これを有効にすると MCP サーバー も有効になり、GitHub、GitLab、Gitea、Dropbox の同期にも必要です。 このページは、Kubernetes の使用 のシングルレプリカ構成のインストールを拡張するものです。複数のレプリカについては、水平スケーリング を参照してください。
1

git-bridge をデプロイする

45-git-bridge.yaml
10.96.100.80 は、クラスターの Service CIDR 内の空いているアドレスである必要があります(kubeadm のデフォルトは 10.96.0.0/12)。
2

Ayakaleaf Pro から git-bridge を参照する

30-config.yaml に追加します。
30-config.yaml (additions)
3

プロジェクトをクローンする

Account Settings で Git 認証トークンを作成し、次を実行します。
ユーザー名には git、パスワードにはトークンを使用します。

マニフェストがこの形になっている理由

  • GIT_BRIDGE_HOST に固定の ClusterIP を使用。Ayakaleaf Pro イメージ内の nginx は、Docker の組み込み DNS である 127.0.0.11 をリゾルバーに設定して /git/ を転送します。Kubernetes ではそこに DNS サーバーが存在しないため、git-bridge のようなホスト名では 502 で失敗し、/var/log/nginx/error.log に “git-bridge could not be resolved” と記録されます。IP アドレスであれば名前解決は不要です。
  • overleaf-internal。git-bridge は Ayakaleaf Pro Pod のポート 3000(web API)と 3100(履歴)を必要とします。別の ClusterIP Service を使うことで、これらのポートをクラスター内に留めます。NodePort Service に追加すると、すべてのノードで公開されてしまいます。
  • enableServiceLinks: false。Service git-bridge があると、Kubernetes は Pod に GIT_BRIDGE_PORT=tcp://10.96.100.80:8000 を追加します。git-bridge は GIT_BRIDGE_PORT を待ち受けポートとして読み込むため、MalformedJsonException ... path $.port で停止してしまいます。
  • 専用のボリュームを持つ 1 つのレプリカ。git-bridge はクローンされたプロジェクトごとに git リポジトリをディスク上に保持し、2 つ同時に実行してはいけません。そのボリュームはバックアップしてください。

Kubernetes でのテスト結果

Kubernetes 1.37 上で、HAProxy の背後に 3 つのレプリカを配置し、git-bridge を overleaf-0 の sibling とした構成で、Git 連携のエンドツーエンドテストに合格しました(19 ケース)。nginx が GIT_BRIDGE_HOST と GIT_BRIDGE_PORT を使用せざるを得ないように git-bridge をポート 8001 に移した状態でも合格しています。対象は、アカウント設定の Git トークン、エディターのクローンコマンド、クローン・プッシュ・プル、バイナリファイルとフォルダー、名前の変更と削除、古い状態からのプッシュの拒否、ロールによるアクセス(招待された編集者とリンク経由の編集者はプッシュ可能、閲覧者とレビュアーはクローンのみ、アクセス権のないユーザーは拒否)、誤ったトークンと削除されたトークンの拒否、nginx の背後に保たれる git-bridge の内部ルート、停止されたアカウントです。Git 認証トークンそのもの(生成、一覧表示、ユーザーあたりの上限、削除、有効期限、git-bridge が web に問い合わせるチェック、停止・削除されたアカウントのトークン)は、レプリカ 1 つで合格しています(16 ケース)。

Q&A

回答:GIT_BRIDGE_HOST を確認してください。上記のとおり、git-bridge Service の名前ではなく IP アドレスである必要があります。kubectl -n overleaf exec deploy/overleaf -- tail /var/log/nginx/error.log で原因を確認できます。
最終更新日 2026年11月2日