TAP 1.3からTAP GUIのスケールアウトがサポートされました。tap-values.yaml
に次のようにreplicasを設定できます。
tap_gui:
deployment:
replicas: 3
しかし、セッションはインスタンス間で共有されないため、 TAP GUIの認証を有効にしている場合、スケールアウトするとリクエストがラウンドロビンされ、 ログインが成功しても、ログインしていないインスタンスにルーティングされ、認証エラーが表示されることがあります。
TAP GUIがこの問題をfixするまでは、Contourの Session Affinity を利用して、同じログインユーザーが同じインスタンスにルーティングされるようにする必要があります。
TAP GUIのHTTPProxyに対してSession Affityを有効にするために次のoverlayを作成します。
cat EOF > tap-gui-session-affinity.yaml
#@ load("@ytt:overlay", "overlay")
#@overlay/match by=overlay.subset({"kind":"HTTPProxy","metadata":{"name":"tap-gui"}})
---
spec:
routes:
#@overlay/match by=overlay.subset({"services": [{"name": "server"}]})
- services: []
#@overlay/match missing_ok=True
loadBalancerPolicy:
strategy: Cookie
EOF
overlayをSecretに登録します
kubectl -n tap-install create secret generic tap-gui-session-affinity \
-o yaml \
--dry-run=client \
--from-file=tap-gui-session-affinity.yaml\
| kubectl apply -f-
作成したoverlayのSecret名をtap-values.yamlのpackage_overlaysへ次のように設定します
package_overlays:
# ...
- name: tap-gui
secrets:
- name: tap-gui-session-affinity
# ...
packageinstallを更新します
tanzu package installed update -n tap-install tap -f tap-values.yaml