bin/init --tls、overleaf.rc の NGINX_* と TLS_*)に相当するものはありません。Toolkit については TLS プロキシを参照してください。
プロキシに必要な要件
- WebSocket(
/socket.io)を通過させること。 - 10 分間のリクエスト(長時間のコンパイル)と 50 MB(または
MAX_UPLOAD_SIZE)のリクエストボディ(アップロード)を許可すること。 - Pod に対するアイドル時の keep-alive タイムアウトを、Pod 内の nginx のタイムアウトである 65 秒未満にすること。
X-Forwarded-ForとX-Forwarded-Proto: httpsを送信すること。- 複数のレプリカを使う場合は、ユーザーを 1 つのレプリカにとどめること。水平スケーリングを参照してください。
ConfigMap
X-Forwarded-Proto: https が送られない場合、Ayakaleaf Pro はリクエストが HTTP で届いたと判断し、セキュアなセッション Cookie を設定しません。その結果、ログインに失敗します。OVERLEAF_SECURE_COOKIE は、ユーザーが実際に HTTPS でサイトにアクセスする場合にのみ設定してください。値に関係なく("false" でも)有効になります。
HAProxy の例
水平スケーリングの HAProxy DaemonSet で HTTPS を終端するには、証明書とその鍵を 1 つの PEM ファイルにまとめ、Secret に格納します。80-haproxy.yaml を変更します。
80-haproxy.yaml (changes)
config-hash を更新し、上記のとおり ConfigMap を設定してレプリカを再起動します。
リダイレクトはリクエストのポートを維持します。ポート 80 と 443 のロードバランサーには適していますが、NodePort では http://host:30081 を https://host:30081 に送ってしまいます。前段にロードバランサーがない場合は、リダイレクトの行を省き、ユーザーには https://...:30443 のアドレスを案内してください。
Kubernetes でのテスト
Kubernetes 1.37 上でレプリカ 3 つ、上記のように HAProxy で HTTPS を終端し、OVERLEAF_SITE_URL を https:// に、OVERLEAF_SECURE_COOKIE を設定した状態でテストしました。ユーザーは https:// のリンクからアカウントを有効化し、Secure 属性付きのセッション Cookie でログインし、プロジェクトをアップロードしてコンパイルして PDF を取得し、同じレプリカにとどまり、エディターの WebSocket(wss)を開き、HTTPS 経由で Git のクローンとプッシュを行えました。NodePort での http:// リクエストは、上記のとおり同じポートの https:// にリダイレクトされました。
