github-sync) каждого пода Ayakaleaf Pro. Для неё требуется интеграция с Git. Как создать OAuth-приложение и что делает каждая настройка, описано на странице Синхронизация с GitHub; эта страница переносит всё это в Kubernetes.
Настройка
1
ConfigMap
30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" и StatefulSet git-bridge из раздела Интеграция с Git должны быть уже настроены: без них настройки учётной записи и редактор скрывают синхронизацию с GitHub.2
Secret
GITHUB_TOKEN_CIPHER_PASSWORD шифрует токены доступа GitHub пользователей в MongoDB. Все реплики должны использовать одно и то же значение, а его последующее изменение заставит каждого пользователя заново привязать GitHub.3
Частный CA (необязательно)
Если ваш GitHub использует сертификат, выданный вашим собственным центром сертификации (CA), добавьте сертификат CA в Secret
overleaf-certs, смонтированный в /var/lib/overleaf/certs (см. Сертификаты и другие файлы), и задайте NODE_EXTRA_CA_CERTS: /var/lib/overleaf/certs/ca.pem в ConfigMap.4
Применение, перезапуск и проверка
000 означает, что он недоступен.Несколько реплик
Ничего дополнительного, кроме общегоGITHUB_TOKEN_CIPHER_PASSWORD, не требуется. Синхронизация берёт блокировку в Redis, общую с другими Git-синхронизациями, поэтому две реплики никогда не синхронизируют один и тот же проект одновременно.
Проверено на Kubernetes
На макете github.com и его REST и GraphQL API (доверие черезNODE_EXTRA_CA_CERTS из overleaf-certs), в Kubernetes 1.37 с одной репликой и включённой интеграцией с Git наши сквозные тесты синхронизации с GitHub проходят (31 сценарий): привязка и отвязка учётной записи, отозванные токены, экспорт проекта в новый приватный репозиторий или репозиторий организации, импорт репозитория (в том числе превышающего лимит загрузки), pull и push, слияния, конфликты и ручные слияния, удалённые ветки и ветки после force push, бинарные файлы, переименования и удаления, потеря права на push, а также то, что могут делать владельцы, редакторы и читатели.
