bin/init --tls, NGINX_* и TLS_* в overleaf.rc) аналога нет; о Toolkit см. TLS-прокси.
Что должен делать прокси
- Пропускать WebSocket (
/socket.io). - Допускать запросы длительностью 10 минут (долгие компиляции) и тела запросов размером 50 МБ (загрузки) или
MAX_UPLOAD_SIZE. - Держать тайм-аут простоя keep-alive в сторону подов ниже 65 секунд — тайм-аута nginx в поде.
- Отправлять
X-Forwarded-ForиX-Forwarded-Proto: https. - При нескольких репликах удерживать пользователя на одной реплике, см. Горизонтальное масштабирование.
ConfigMap
X-Forwarded-Proto: https с доверенного адреса Ayakaleaf Pro считает, что запросы поступают по HTTP, и не устанавливает защищённую cookie сеанса: в результате вход в систему не работает. Задавайте OVERLEAF_SECURE_COOKIE только тогда, когда пользователи действительно открывают сайт по HTTPS; любое значение включает её, в том числе "false".
Пример с HAProxy
Чтобы завершать HTTPS в DaemonSet HAProxy из раздела Горизонтальное масштабирование, поместите сертификат и его ключ в один PEM-файл и в Secret:80-haproxy.yaml:
80-haproxy.yaml (changes)
config-hash, чтобы HAProxy перезапустился, затем задайте ConfigMap, как показано выше, и перезапустите реплики.
Перенаправление сохраняет порт запроса: это подходит для балансировщика нагрузки на портах 80 и 443, но на NodePort оно отправляет http://host:30081 на https://host:30081. Если перед кластером нет балансировщика нагрузки, уберите строку перенаправления и сообщите пользователям адрес https://...:30443.
Проверено на Kubernetes
В Kubernetes 1.37 с тремя репликами и HAProxy, завершающим HTTPS, как описано выше, сOVERLEAF_SITE_URL на https:// и OVERLEAF_SECURE_COOKIE: пользователи активировались по ссылкам https://, входили с cookie сеанса, помеченной как Secure, загружали и компилировали проекты с получением PDF, оставались на своей реплике, открывали WebSocket редактора (wss), а также клонировали и выполняли push через Git по HTTPS. Запросы http:// на NodePort перенаправлялись на https:// с тем же портом, как описано выше.
