bin/init --tls, NGINX_* et TLS_* dans overleaf.rc) n’a pas d’équivalent ; voir Proxy TLS pour le Toolkit.
Ce que le proxy doit faire
- Transmettre les WebSockets (
/socket.io). - Autoriser des requêtes de 10 minutes (compilations longues) et des corps de requête de 50 Mo (téléversements), ou
MAX_UPLOAD_SIZE. - Maintenir son délai d’inactivité keep-alive vers les pods en dessous de 65 secondes, le délai du nginx du pod.
- Envoyer
X-Forwarded-ForetX-Forwarded-Proto: https. - Avec plusieurs répliques, maintenir un utilisateur sur une seule réplique, voir Mise à l’échelle horizontale.
ConfigMap
X-Forwarded-Proto: https provenant d’une adresse de confiance, Ayakaleaf Pro considère que les requêtes arrivent en HTTP et ne définit pas son cookie de session sécurisé : les connexions échouent alors. Ne définissez OVERLEAF_SECURE_COOKIE que si les utilisateurs accèdent réellement au site en HTTPS ; n’importe quelle valeur l’active, y compris "false".
Exemple avec HAProxy
Pour terminer HTTPS dans le DaemonSet HAProxy de Mise à l’échelle horizontale, placez le certificat et sa clé dans un même fichier PEM et dans un Secret :80-haproxy.yaml :
80-haproxy.yaml (changes)
config-hash pour que HAProxy redémarre, puis configurez le ConfigMap comme ci-dessus et redémarrez les répliques.
La redirection conserve le port de la requête : elle convient à un équilibreur de charge sur les ports 80 et 443, mais sur les NodePorts elle redirige http://host:30081 vers https://host:30081. Sans équilibreur de charge en amont, omettez la ligne de redirection et communiquez aux utilisateurs l’adresse https://...:30443.
Testé sur Kubernetes
Sur Kubernetes 1.37 avec trois répliques et HAProxy terminant HTTPS comme ci-dessus, avecOVERLEAF_SITE_URL en https:// et OVERLEAF_SECURE_COOKIE : les utilisateurs se sont activés via des liens https://, se sont connectés avec un cookie de session marqué Secure, ont téléversé et compilé des projets en récupérant le PDF, sont restés sur leur réplique, ont ouvert le WebSocket de l’éditeur (wss), et ont cloné et poussé avec Git en HTTPS. Les requêtes http:// sur le NodePort ont été redirigées vers https:// avec le même port, comme décrit ci-dessus.
