${OVERLEAF_SITE_URL}/git/<project id> 進行 clone 與 push;Ayakaleaf Pro pod 會將這些請求轉送至 git-bridge,而 git-bridge 會回呼 pod 以取得專案內容與歷史記錄。啟用此功能也會同時啟用 MCP Server,且 GitHub、GitLab、Gitea 與 Dropbox 同步都需要此功能。
本頁延伸自使用 Kubernetes 中的單一副本安裝。若有多個副本,請參閱水平擴展。
1
部署 git-bridge
45-git-bridge.yaml
10.96.100.80 必須是您叢集服務 CIDR 內的可用位址(kubeadm 的預設值為 10.96.0.0/12)。2
讓 Ayakaleaf Pro 指向 git-bridge
加入
30-config.yaml:30-config.yaml (additions)
3
Clone 專案
在 Account Settings 中建立 Git 驗證權杖,然後執行:以
git 作為使用者名稱,並以該權杖作為密碼。為何資訊清單是這樣寫的
- 以固定 ClusterIP 作為
GIT_BRIDGE_HOST。Ayakaleaf Pro 映像檔內的 nginx 轉送/git/時,所使用的解析器設為127.0.0.11,也就是 Docker 內建的 DNS。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。Servicegit-bridge會讓 Kubernetes 在 pod 中加入GIT_BRIDGE_PORT=tcp://10.96.100.80:8000;git-bridge 會將GIT_BRIDGE_PORT讀取為其監聽連接埠,並以MalformedJsonException ... path $.port停止。- 單一副本搭配專屬磁碟區。git-bridge 會在磁碟上為每個已 clone 的專案保留一個 git 儲存庫,且不得同時執行兩個。請備份其磁碟區。
在 Kubernetes 上的測試
在 Kubernetes 1.37 上,以三個副本置於 HAProxy 之後,並讓 git-bridge 作為overleaf-0 的相鄰服務,我們針對 Git 整合的端對端測試全數通過(19 個案例),將 git-bridge 移至連接埠 8001、使 nginx 必須使用 GIT_BRIDGE_HOST 與 GIT_BRIDGE_PORT 時亦同:帳號設定中的 Git 權杖、編輯器中的 clone 指令、clone、push 與 pull、二進位檔案與資料夾、重新命名與刪除、拒絕過時的 push、依角色的存取權(受邀的編輯者與透過連結加入的編輯者可以 push,檢視者與審閱者只能 clone,沒有存取權的使用者會被拒絕)、拒絕錯誤與已刪除的權杖、git-bridge 的內部路由保持在 nginx 後方,以及已停權的帳號。Git 驗證權杖本身(產生、列出、每位使用者的數量上限、刪除、到期、git-bridge 向 web 請求的檢查,以及已停權與已刪除帳號的權杖)在一個副本上通過測試(16 個案例)。
問與答
git clone 回傳 502。
git clone 回傳 502。
回答:請檢查
GIT_BRIDGE_HOST:它必須是 git-bridge Service 的 IP 位址,而不是其名稱,請參閱上文。kubectl -n overleaf exec deploy/overleaf -- tail /var/log/nginx/error.log 會顯示原因。
