Skip to main content
Integracja z Git uruchamia osobną usługę git-bridge. Użytkownicy klonują i wypychają zmiany przez ${OVERLEAF_SITE_URL}/git/<project id>; pod Ayakaleaf Pro przekazuje te żądania do git-bridge, a git-bridge odwołuje się z powrotem do poda po zawartość i historię projektu. Jej włączenie uaktywnia także serwer MCP i jest wymagane przez synchronizację z GitHub, GitLab, Gitea i Dropbox. Ta strona rozszerza instalację z jedną repliką opisaną w Korzystanie z Kubernetes. Informacje o kilku replikach znajdziesz w Skalowanie poziome.
1

Wdróż git-bridge

45-git-bridge.yaml
10.96.100.80 musi być wolnym adresem w obrębie CIDR usług Twojego klastra (domyślnie w kubeadm jest to 10.96.0.0/12).
2

Skieruj na nią Ayakaleaf Pro

Dodaj do 30-config.yaml:
30-config.yaml (additions)
3

Sklonuj projekt

Utwórz token uwierzytelniania Git w Account Settings, a następnie:
Użyj git jako nazwy użytkownika i tokenu jako hasła.

Dlaczego manifest wygląda w ten sposób

  • Stały ClusterIP jako GIT_BRIDGE_HOST. nginx w obrazie Ayakaleaf Pro przekazuje /git/ z resolverem ustawionym na 127.0.0.11, czyli wbudowany DNS Dockera. W Kubernetes pod tym adresem nie ma serwera DNS, więc nazwa hosta taka jak git-bridge kończy się błędem 502 i komunikatem „git-bridge could not be resolved” w /var/log/nginx/error.log. Adres IP nie wymaga rozwiązywania nazwy.
  • overleaf-internal. git-bridge potrzebuje portów 3000 (API web) i 3100 (historia) poda Ayakaleaf Pro. Osobny Service typu ClusterIP utrzymuje je wewnątrz klastra; dodanie ich do Service typu NodePort opublikowałoby je na każdym węźle.
  • enableServiceLinks: false. Service git-bridge sprawiłby, że Kubernetes dodałby do poda GIT_BRIDGE_PORT=tcp://10.96.100.80:8000; git-bridge odczytuje GIT_BRIDGE_PORT jako swój port nasłuchiwania i zatrzymuje się z MalformedJsonException ... path $.port.
  • Jedna replika z własnym wolumenem. git-bridge przechowuje na dysku repozytorium git dla każdego sklonowanego projektu i nie może działać w dwóch instancjach. Twórz kopie zapasowe jego wolumenu.

Przetestowano na Kubernetes

Na Kubernetes 1.37 z trzema replikami za HAProxy i git-bridge jako rodzeństwem (sibling) overleaf-0 nasze testy end-to-end dla integracji z Git przechodzą pomyślnie (19 przypadków), także przy git-bridge przeniesionym na port 8001, tak aby nginx musiał używać GIT_BRIDGE_HOST i GIT_BRIDGE_PORT: tokeny Git w ustawieniach konta, polecenie klonowania w edytorze, clone, push i pull, pliki binarne i foldery, zmiany nazw i usunięcia, odrzucanie nieaktualnych pushy, dostęp według roli (zaproszeni edytorzy i edytorzy przez link mogą wypychać, osoby przeglądające i recenzenci mogą tylko klonować, użytkownicy bez dostępu są odrzucani), odrzucanie błędnych i usuniętych tokenów, wewnętrzne trasy git-bridge ukryte za nginx oraz zawieszone konta. Same tokeny uwierzytelniania Git (generowanie, wyświetlanie listy, limit na użytkownika, usuwanie, wygasanie, sprawdzenie, o które git-bridge prosi web, oraz tokeny zawieszonych i usuniętych kont) przechodzą testy na jednej replice (16 przypadków).

Pytania i odpowiedzi

Odpowiedź: Sprawdź GIT_BRIDGE_HOST: musi to być adres IP usługi Service git-bridge, a nie jej nazwa, zobacz powyżej. kubectl -n overleaf exec deploy/overleaf -- tail /var/log/nginx/error.log pokazuje przyczynę.
Ostatnia modyfikacja 2 listopada 2026