音AI平臺(tái)架構(gòu)實(shí)戰(zhàn))
如何用Helm部署Dograh到Kubernetes高可用語(yǔ)音AI平臺(tái)架構(gòu)實(shí)戰(zhàn)【免費(fèi)下載鏈接】dograhOpen source voice AI platform. Self-hosted alternative to Vapi and Retell. On Prem, BYOK across Speech to Speech or LLM/STT/TTS, with a visual workflow builder, MCP native and telephony support.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/do/dograhDograh 是一個(gè)開(kāi)源的語(yǔ)音 AI 平臺(tái)也是 Vapi 和 Retell 的自托管替代品。它內(nèi)置可視化工作流構(gòu)建器、MCP 原生支持和電話Telephony集成支持 Speech-to-Speech 或 LLM/STT/TTS 等多種推理模式并允許 BYOK自帶模型密鑰。本文手把手帶你用 Helm 把 Dograh 部署到 Kubernetes講清楚每一層工作負(fù)載的設(shè)計(jì)取舍幫你搭出一套高可用的生產(chǎn)級(jí)語(yǔ)音 AI 平臺(tái)。為什么用 Helm 部署 Dograh Dograh 的后端不是一個(gè)簡(jiǎn)單的一個(gè)容器跑世界而是被刻意拆分成了多個(gè)職責(zé)單一的 Kubernetes 工作負(fù)載工作負(fù)載默認(rèn)副本更新策略說(shuō)明dograh-web2可 HPARollingUpdateFastAPI WebSocket 信令層長(zhǎng)連接優(yōu)雅排水dograh-arq-worker1可 HPARollingUpdate無(wú)狀態(tài)后臺(tái)任務(wù)dograh-ari-manager固定 1Recreate電話Asterisk單例dograh-campaign-orchestrator固定 1Recreate外呼營(yíng)銷單例內(nèi)存鎖去重dograh-ui2可 HPARollingUpdateNext.js SSR 前端dograh-coturn1RecreateWebRTC TURN 媒體中繼L4 LoadBalancer這套拆分正是 Helm 部署的最大價(jià)值所在HTTP 層可以水平擴(kuò)容狀態(tài)層自動(dòng)托管單例層防誤擴(kuò)。官方 Chart 位于 deploy/helm/dograh/完整設(shè)計(jì)文檔見(jiàn) deploy/helm/dograh/README.md。部署前看懂三種模式開(kāi)關(guān)Dograh 的 values.yaml 設(shè)計(jì)得非??酥坪诵木褪侨Mmode枚舉決定了你自己管多少基礎(chǔ)設(shè)施開(kāi)關(guān)可選值適合場(chǎng)景database.modeinternal/external內(nèi)置 pgvector Postgres 或接 RDS 等托管庫(kù)redis.modeinternal/external內(nèi)置 Redis 或接 ElastiCache 等storage.modeinternalMinio/externalMinio/s3內(nèi)置 MinIO / 外部 MinIO / AWS S3exposure.modegatewayApi/ingress生產(chǎn)推薦 Gateway API通用集群用 Ingress 開(kāi)箱即用簡(jiǎn)單說(shuō)單節(jié)點(diǎn)實(shí)驗(yàn)用全internal生產(chǎn)集群用全external S3。內(nèi)置的 Postgres/Redis/MinIO 是 Chart 內(nèi)的官方鏡像清單無(wú)需helm dependency拉取子圖裝完即可用。一鍵安裝步驟 前提Kubernetes 集群 ≥ 1.28見(jiàn) Chart.yaml已安裝 Helm。1. 克隆倉(cāng)庫(kù)并進(jìn)入 Chart 目錄git clone https://gitcode.com/GitHub_Trending/do/dograh cd dograh/deploy/helm/dograh2. 執(zhí)行安裝命令helm install dograh . \ --set secrets.ossJwtSecret$(openssl rand -hex 32) \ --set secrets.turnSecret$(openssl rand -hex 32)兩個(gè)密鑰是必選項(xiàng)JWT 簽名密鑰用于認(rèn)證TURN 密鑰用于 WebRTC 中繼認(rèn)證。安裝完成后helm會(huì)輸出 NOTES.txt 中的指引包括如何查詢 Gateway 地址、coturn LoadBalancer 地址以及數(shù)據(jù)庫(kù)遷移 Job 的日志查看方式Alembic 遷移以 post-install / pre-upgrade 鉤子自動(dòng)執(zhí)行無(wú)需手動(dòng)跑遷移。3. 完成 coturn 回調(diào)關(guān)鍵一步coturn 需要在 ICE 候選中宣告自己的公網(wǎng) IP但 LoadBalancer 地址往往裝完才有存在雞生蛋問(wèn)題。拿到地址后補(bǔ)一次升級(jí)即可helm upgrade dograh . --reuse-values \ --set coturn.externalIpLB地址 \ --set config.turnHostLB地址這一步的完整說(shuō)明見(jiàn) NOTES.txt。在單節(jié)點(diǎn)/內(nèi)網(wǎng)測(cè)試中若不需要中繼也可以直接coturn.enabledfalse跳過(guò)。4 份官方拓?fù)涫纠磮?chǎng)景選型 Chart 自帶四份 values 示例覆蓋了絕大多數(shù)部署形態(tài)單節(jié)點(diǎn)k3s / minikube / 單機(jī) VM全內(nèi)置依賴 Ingress縮小的資源配額見(jiàn) values-single-node.yaml生產(chǎn)托管集群EKS/GKE/AKS 托管數(shù)據(jù)庫(kù)外部 Postgres Redis S3 Gateway API見(jiàn) values-managed.yamlAWS EKS 專屬ALB NLB IRSA 免密訪問(wèn) S3coturn 固定 49 個(gè)中繼端口以適配 NLB 默認(rèn)監(jiān)聽(tīng)配額見(jiàn) values-aws.yamlk3s 生產(chǎn)精簡(jiǎn)版純托管 AI、Web-only 通話場(chǎng)景下關(guān)閉 ari-manager / campaign-orchestrator / coturn三層 HPA 1→5 彈性伸縮見(jiàn) values-k3s-prod.yaml以 k3s 精簡(jiǎn)版為例只跑網(wǎng)頁(yè)通話場(chǎng)景時(shí)關(guān)閉用不到的單例能省下可觀資源ariManager: { enabled: false } # 不用 Asterisk SIP campaignOrchestrator: { enabled: false } # 不做定時(shí)外呼 coturn: { enabled: false }高可用設(shè)計(jì)詳解為什么這樣拆 ??這是 Dograh Helm Chart 最值得學(xué)習(xí)的地方四個(gè)決策直接決定生產(chǎn)可用性① 長(zhǎng)通話不被滾動(dòng)更新打斷。web 層持有長(zhǎng)生命周期的 WebSocket 信令連接Pod 直接重啟會(huì)掐斷所有進(jìn)行中的通話。Chart 設(shè)置了terminationGracePeriodSeconds: 126021 分鐘覆蓋最長(zhǎng) 20 分鐘通話并掛載 preStop 鉤子運(yùn)行排水腳本 scripts/drain_web.sh先等網(wǎng)關(guān)停止派新連接再輪詢活躍通話數(shù)歸零才放行 SIGTERM。詳見(jiàn) values.yaml。② 單例絕不擴(kuò)容。ari-manager 與 campaign-orchestrator 依賴內(nèi)存中的鎖/去重狀態(tài)副本數(shù)被硬編碼為 1Chart 刻意不暴露replicaCount參數(shù)——防止運(yùn)維誤執(zhí)行kubectl scale悄悄破壞狀態(tài)。③ PDB 保底副本。web 和 ui 默認(rèn)啟用 PodDisruptionBudgetminAvailable: 1節(jié)點(diǎn)維護(hù)時(shí)至少留一個(gè)實(shí)例在線。④ HPA 默認(rèn)關(guān)閉KEDA 預(yù)留。對(duì) WebSocket 密集型服務(wù)CPU 是糟糕的擴(kuò)縮信號(hào)因此 web-hpa.yaml 等模板雖已就緒但autoscaling.*全部默認(rèn)enabled: falseChart 同時(shí)預(yù)留了 KEDA ScaledObjectweb-keda-scaledobject.yaml可按活躍連接數(shù)這類業(yè)務(wù)指標(biāo)伸縮比 CPU 精準(zhǔn)得多。部署后驗(yàn)證你的語(yǔ)音 AI 平臺(tái) ?Pod 全部 Running 后訪問(wèn) Ingress/Gateway 分配的域名用管理員賬號(hào)登錄你會(huì)看到 Dograh 的可視化工作流構(gòu)建器——這是平臺(tái)的核心能力無(wú)需寫代碼即可拖拽編排語(yǔ)音 Agent創(chuàng)建一條簡(jiǎn)單的工作流、點(diǎn)擊 Call 發(fā)起測(cè)試通話后可以在 Agent Runs 里看到完整的對(duì)話歷史與工具調(diào)用軌跡用來(lái)驗(yàn)證 STT/LLM/TTS 鏈路是否打通如果你走 BYOK 路線自帶 OpenAI、ElevenLabs 等密鑰在開(kāi)發(fā)者面板創(chuàng)建 Service Key 即可讓平臺(tái)代為調(diào)用托管模型服務(wù) 模型配置支持三種模式Dograh 托管、BYOK 自帶密鑰、Speech-to-Speech 端到端模型詳見(jiàn) docs/configurations/llm.mdx。部署驗(yàn)證與常見(jiàn)排查 先渲染再安裝。Chart 官方驗(yàn)證流程是先用模板渲染確認(rèn)關(guān)鍵配置再上線helm lint . helm template test-release . /tmp/render-default.yaml渲染后抽查兩點(diǎn)ari-manager 與 campaign-orchestrator 是否replicas: 1Recreateweb Deployment 是否有 1260 秒的寬限期和 preStop 排水鉤子。常見(jiàn)排查手段數(shù)據(jù)庫(kù)遷移卡住kubectl logs job/release-migrate查看 Alembic 日志TURN 中繼不通確認(rèn)coturn.externalIp和config.turnHost已回填 LoadBalancer 真實(shí)地址安裝后終端告警ossJwtSecret仍是默認(rèn)值按提示重新--set一個(gè)隨機(jī)值只讀依賴Chart 狀態(tài)層Postgres/Redis/MinIO務(wù)必配置持久化存儲(chǔ)類生產(chǎn)強(qiáng)烈建議切換外部托管實(shí)例寫在最后用 Helm 部署 Dograh 到 Kubernetes你拿到的不只是一個(gè)能跑的語(yǔ)音 AI 平臺(tái)而是一套為長(zhǎng)通話場(chǎng)景專門設(shè)計(jì)的高可用架構(gòu)HTTP 層可彈性、通話層會(huì)排水、單例層防誤擴(kuò)、媒體層有 TURN 兜底。從單節(jié)點(diǎn)values-single-node.yaml起步到 EKS 上啟用 Gateway API S3 KEDA同一份 Chart 可以平滑覆蓋你從開(kāi)發(fā)到生產(chǎn)的全部階段 【免費(fèi)下載鏈接】dograhOpen source voice AI platform. Self-hosted alternative to Vapi and Retell. On Prem, BYOK across Speech to Speech or LLM/STT/TTS, with a visual workflow builder, MCP native and telephony support.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/do/dograh創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考