${OVERLEAF_SITE_URL}/git/<project id>; под Ayakaleaf Pro перенаправляет эти запросы в git-bridge, а git-bridge обращается обратно к поду за содержимым и историей проекта. Её включение также активирует MCP-сервер и необходимо для синхронизации с 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
Добавьте в
30-config.yaml:30-config.yaml (additions)
3
Клонируйте проект
Создайте токен аутентификации Git в Account Settings, затем выполните:Используйте
git в качестве имени пользователя и токен в качестве пароля.Почему манифест выглядит именно так
- Фиксированный ClusterIP в качестве
GIT_BRIDGE_HOST. nginx внутри образа Ayakaleaf Pro перенаправляет/git/с резолвером, указывающим на127.0.0.11— встроенный DNS Docker. В Kubernetes по этому адресу нет DNS-сервера, поэтому имя хоста вродеgit-bridgeприводит к ошибке502и сообщению «git-bridge could not be resolved» в/var/log/nginx/error.log. IP-адресу разрешение имён не требуется. overleaf-internal. git-bridge нужны порты3000(API web) и3100(история) пода Ayakaleaf Pro. Отдельный Service типа ClusterIP оставляет их внутри кластера; добавление их в Service типа NodePort опубликовало бы их на каждом узле.enableServiceLinks: false. Из-за Servicegit-bridgeKubernetes добавил бы в подGIT_BRIDGE_PORT=tcp://10.96.100.80:8000; git-bridge считываетGIT_BRIDGE_PORTкак порт для прослушивания и останавливается сMalformedJsonException ... path $.port.- Одна реплика с собственным томом. git-bridge хранит на диске git-репозиторий для каждого клонированного проекта и не должен запускаться дважды. Делайте резервные копии его тома.
Проверено на Kubernetes
На Kubernetes 1.37 с тремя репликами за HAProxy и git-bridge в паре сoverleaf-0 наши сквозные тесты интеграции с Git проходят (19 сценариев), в том числе с git-bridge, перенесённым на порт 8001, чтобы nginx был вынужден использовать GIT_BRIDGE_HOST и GIT_BRIDGE_PORT: токены Git в настройках учётной записи, команда клонирования в редакторе, clone, push и pull, бинарные файлы и папки, переименования и удаления, отклонение push с устаревшими данными, доступ по ролям (приглашённые редакторы и редакторы по ссылке могут выполнять push, читатели и рецензенты могут только клонировать, пользователи без доступа отклоняются), отклонение неверных и удалённых токенов, внутренние маршруты git-bridge, скрытые за nginx, и заблокированные учётные записи. Сами токены аутентификации Git (создание, вывод списка, ограничение на пользователя, удаление, истечение срока действия, проверка, которую git-bridge запрашивает у web, а также токены заблокированных и удалённых учётных записей) проходят тесты на одной реплике (16 сценариев).
Вопросы и ответы
git clone возвращает 502.
git clone возвращает 502.
Ответ: Проверьте
GIT_BRIDGE_HOST: это должен быть IP-адрес Service git-bridge, а не его имя, см. выше. Причину показывает kubectl -n overleaf exec deploy/overleaf -- tail /var/log/nginx/error.log.
