Skip to main content
Tích hợp Git chạy dịch vụ git-bridge riêng biệt. Người dùng clone và push qua ${OVERLEAF_SITE_URL}/git/<project id>; pod Ayakaleaf Pro chuyển tiếp các yêu cầu đó tới git-bridge, và git-bridge gọi ngược lại vào pod để lấy nội dung và lịch sử dự án. Việc bật tính năng này cũng bật MCP server và là điều kiện bắt buộc cho Đồng bộ hóa GitHub, GitLab, Gitea và Dropbox. Trang này mở rộng bản cài đặt một replica từ Sử dụng Kubernetes. Đối với nhiều replica, xem Mở rộng theo chiều ngang.
1

Triển khai git-bridge

45-git-bridge.yaml
10.96.100.80 phải là một địa chỉ còn trống bên trong service CIDR của cluster (mặc định của kubeadm là 10.96.0.0/12).
2

Trỏ Ayakaleaf Pro tới git-bridge

Thêm vào 30-config.yaml:
30-config.yaml (additions)
3

Clone một dự án

Tạo một token xác thực Git trong Account Settings, sau đó:
Dùng git làm tên người dùng và token làm mật khẩu.

Tại sao manifest có dạng như vậy

  • Một ClusterIP cố định làm GIT_BRIDGE_HOST. nginx bên trong image Ayakaleaf Pro chuyển tiếp /git/ với resolver được đặt thành 127.0.0.11, DNS tích hợp của Docker. Kubernetes không có máy chủ DNS ở đó, nên một tên máy chủ như git-bridge sẽ thất bại với 502 và thông báo “git-bridge could not be resolved” trong /var/log/nginx/error.log. Một địa chỉ IP thì không cần tra cứu.
  • overleaf-internal. git-bridge cần các cổng 3000 (web API) và 3100 (history) của pod Ayakaleaf Pro. Một ClusterIP Service riêng giữ chúng bên trong cluster; thêm chúng vào NodePort Service sẽ công khai chúng trên mọi node.
  • enableServiceLinks: false. Service git-bridge sẽ khiến Kubernetes thêm GIT_BRIDGE_PORT=tcp://10.96.100.80:8000 vào pod; git-bridge đọc GIT_BRIDGE_PORT làm cổng lắng nghe và dừng với lỗi MalformedJsonException ... path $.port.
  • Một replica với volume riêng. git-bridge lưu một git repository cho mỗi dự án đã clone trên đĩa và không được chạy hai bản. Hãy sao lưu volume của nó.

Đã kiểm thử trên Kubernetes

Trên Kubernetes 1.37 với ba replica phía sau HAProxy và git-bridge là sibling của overleaf-0, các bài kiểm thử end-to-end của chúng tôi cho Tích hợp Git đều đạt (19 trường hợp), kể cả khi git-bridge được chuyển sang cổng 8001 để nginx buộc phải dùng GIT_BRIDGE_HOST và GIT_BRIDGE_PORT: token Git trong cài đặt tài khoản, lệnh clone trong trình soạn thảo, clone, push và pull, tệp nhị phân và thư mục, đổi tên và xóa, từ chối các lần push đã lỗi thời, quyền truy cập theo vai trò (biên tập viên được mời và biên tập viên qua liên kết có thể push, người xem và người duyệt chỉ có thể clone, người dùng không có quyền truy cập bị từ chối), từ chối token sai và token đã xóa, các route nội bộ của git-bridge được giữ phía sau nginx, và tài khoản bị tạm ngưng. Bản thân các token xác thực Git (tạo, liệt kê, giới hạn trên mỗi người dùng, xóa, hết hạn, bước kiểm tra mà git-bridge yêu cầu web thực hiện, và token của tài khoản bị tạm ngưng và đã xóa) đều đạt trên một replica (16 trường hợp).

Hỏi & Đáp

Trả lời: Hãy kiểm tra GIT_BRIDGE_HOST: nó phải là địa chỉ IP của Service git-bridge, không phải tên của nó, xem ở trên. kubectl -n overleaf exec deploy/overleaf -- tail /var/log/nginx/error.log cho biết nguyên nhân.
Lần sửa đổi cuối 2 tháng 11, 2026