Valkey Serverless External Routing¶
概念概覽
Serverless vs 非 Serverless 連線設定差異¶
核心知識¶
Serverless vs 非 Serverless 連線設定差異¶
| 項目 | Serverless (qa-test) | 非 Serverless |
|---|---|---|
| 連線地址 | AWS Serverless hostname 直連 | Virtual Service 代理 service.pocket-store.make-wish.club:16380 |
| TLS | 必須啟用 | 啟用 |
| SSL Host | 填入 Serverless hostname 本身 | 填 AWS master endpoint(與連線地址不同) |
| Port | 6379 | 16380(外部代理 port) |
SSL Host 留空陷阱:Serverless 模式若 SSL Host 留空,TLS SNI 驗證會失敗,錯誤不明顯。
Serverless Valkey 外部連線三組件架構¶
外部客戶端
↓ port 16381
IstioGateway ← helm upgrade(手動,無 Pipeline)
↓
VirtualService ← UpdateVirtualService Pipeline 動態生成
↓
AWS Serverless endpoint
三組件必須同時到位:
1. IstioGateway:開放 port 16381
2. VirtualService:路由規則(Python 腳本從 baseInfo_Def.py 的 ConnectInfos 動態生成)
3. baseInfo_Def.py:OutClusterPort != 0 才觸發路由生成
VirtualService 動態生成機制¶
genVirtualServiceRecord.py 讀取 baseInfo_Def.py 的 ConnectInfos,只有 OutClusterPort != 0 的條目才會產生對應 TCP 路由。修改 baseInfo_Def.py 後需重跑 UpdateVirtualService(runMode=upgrade)才生效,不需手動編輯 VirtualService yaml。
經驗教訓¶
-
Serverless Valkey 無固定 IP,連線工具必須使用 hostname 並啟用 TLS
-
非 Serverless 走 Virtual Service 時,SSL Host 與連線 Host 不同是刻意設計(TLS 透通)
-
新增外部路由後必須重跑 UpdateVirtualService pipeline,Python 腳本才會重生成 tcpValues
常見陷阱¶
-
SSL Host 留空在 Serverless 模式下造成 TLS SNI 驗證失敗,錯誤訊息不直接
-
只修改 IstioGateway 而忘記重跑 UpdateVirtualService,VirtualService 路由不會自動更新
最佳實踐¶
-
新增 Serverless Valkey 連線後,按順序驗證:baseInfo_Def.py → UpdateVirtualService → IstioGateway dry-run → 實際部署
-
連線工具設定文件中明確標注 Serverless vs 非 Serverless 的 SSL Host 填法差異
相關概念¶
來源 Sessions¶
| 日期 | Session | 貢獻摘要 |
|---|---|---|
| 2026-04-08 | 4704b57e-d74e-48ab-811d-8bf398552c49 | 完整記錄 Serverless vs 非 Serverless Valkey 外部連線架構差異,以及三組件聯動(IstioGateway + VirtualService + baseInfo_Def.py)的設定邏輯 |