bin/init --tls, NGINX_* e TLS_* em overleaf.rc) não tem equivalente; veja Proxy TLS para o Toolkit.
O que o proxy precisa fazer
- Repassar WebSockets (
/socket.io). - Permitir requisições de 10 minutos (compilações longas) e corpos de requisição de 50 MB (uploads), ou
MAX_UPLOAD_SIZE. - Manter seu tempo limite de keep-alive ocioso em relação aos pods abaixo de 65 segundos, o tempo limite do nginx no pod.
- Enviar
X-Forwarded-ForeX-Forwarded-Proto: https. - Com várias réplicas, manter um usuário em uma única réplica, veja Escalonamento horizontal.
ConfigMap
X-Forwarded-Proto: https vindo de um endereço confiável, o Ayakaleaf Pro entende que as requisições chegam por HTTP e não define seu cookie de sessão seguro: os logins então falham. Defina OVERLEAF_SECURE_COOKIE apenas quando os usuários realmente acessarem o site por HTTPS; qualquer valor o ativa, inclusive "false".
Exemplo com HAProxy
Para terminar o HTTPS no DaemonSet do HAProxy de Escalonamento horizontal, coloque o certificado e sua chave em um único arquivo PEM e em um Secret:80-haproxy.yaml:
80-haproxy.yaml (changes)
config-hash para que o HAProxy reinicie e, em seguida, defina o ConfigMap como acima e reinicie as réplicas.
O redirecionamento mantém a porta da requisição: ele é adequado para um balanceador de carga nas portas 80 e 443, mas nas NodePorts ele envia http://host:30081 para https://host:30081. Sem um balanceador de carga à frente, omita a linha de redirecionamento e forneça aos usuários o endereço https://...:30443.
Testado no Kubernetes
No Kubernetes 1.37 com três réplicas e o HAProxy terminando o HTTPS como acima, comOVERLEAF_SITE_URL em https:// e OVERLEAF_SECURE_COOKIE: os usuários foram ativados por meio de links https://, fizeram login com um cookie de sessão marcado como Secure, enviaram e compilaram projetos com o PDF obtido, permaneceram em sua réplica, abriram o WebSocket do editor (wss) e clonaram e fizeram push com o Git por HTTPS. As requisições http:// na NodePort foram redirecionadas para https:// com a mesma porta, conforme descrito acima.
