${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 na127.0.0.11, czyli wbudowany DNS Dockera. W Kubernetes pod tym adresem nie ma serwera DNS, więc nazwa hosta taka jakgit-bridgekończy się błędem502i 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ów3000(API web) i3100(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. Servicegit-bridgesprawiłby, że Kubernetes dodałby do podaGIT_BRIDGE_PORT=tcp://10.96.100.80:8000; git-bridge odczytujeGIT_BRIDGE_PORTjako swój port nasłuchiwania i zatrzymuje się zMalformedJsonException ... 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
git clone zwraca 502.
git clone zwraca 502.
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ę.
