IK.AM


Dev > CaaS > Kubernetes > TAP

TAP GUIをスケールアウトする際のworkaround

Created on Tue Dec 20 2022 • Last Updated on Tue Dec 20 2022N/A Views

🏷️ Kubernetes | TAP GUI | Tanzu | TAP | ytt

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
Found a mistake? Update the entry.