kubernetes集成是hermes agent生产部署的关键路径,需依次完成集群就绪验证、helm chart部署、声明式资源创建、反向代理配置及分布式日志与状态同步。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您计划将Hermes Agent纳入生产级容器编排体系,Kubernetes集成是实现弹性伸缩、服务发现与自动恢复的关键路径。以下是基于当前稳定版本的K8s集成实操步骤:
一、验证集群就绪状态
在部署前需确认Kubernetes集群满足最低运行约束,避免因环境不兼容导致核心组件持续重启或通信中断。
1、执行命令检查 Kubernetes 版本:kubectl version --short,确认 Server 版本 ≥ v1.21。
2、检查节点资源可用性:kubectl describe nodes | grep -A 5 "Allocatable:",确保至少一个工作节点提供 ≥ 2GB 可用内存及 2 核 CPU。
3、验证权限范围:kubectl auth can-i create pods -n default,返回 yes 表示具备基础资源创建权限;若需部署至独立命名空间,须拥有 admin 或 cluster-admin 角色绑定。
二、选择部署方式并准备清单
官方未发布正式 Helm 仓库,但社区维护的 chart 提供参数化配置能力,可规避手动编辑多份 YAML 文件带来的维护风险。
1、添加社区 Helm 仓库:helm repo add hermes https://github.com/GitHub_Trending/he/hermes-agent/tree/main/charts。
2、更新本地索引:helm repo update。
3、拉取并解压 chart 至本地:helm pull hermes/hermes-agent --untar,进入生成的 hermes-agent/ 目录。
4、修改 values.yaml 配置项:gateway.enabled: true,model.provider: kimi,memory.storage: persistentVolumeClaim。
三、执行声明式部署
通过预置脚本统一创建命名空间、ConfigMap、Secret、Deployment 与 Service 资源,确保各组件间网络策略与存储挂载关系准确生效。
1、克隆官方项目仓库:git clone https://gitcode.com/GitHub_Trending/he/hermes-agent,随后进入项目目录:cd hermes-agent。
2、运行部署脚本:./setup-hermes.sh --k8s-monitor,该脚本将自动创建命名空间 hermes-agent 并部署全部必需资源。
3、验证 Pod 运行状态:kubectl get pods -n hermes-agent,确认所有 Pod 处于 Running 状态且 READY 列为对应副本数(如 3/3)。
四、配置反向代理负载均衡
当不采用 Kubernetes 原生 Service 暴露方式时,可通过 Nginx 或 Traefik 实现外部请求分发,并启用健康检查机制保障单点故障不影响整体服务可用性。
1、为每个 Hermes Agent 实例分配唯一标识:修改 cli-config.yaml 中 instance_id 字段为 node-a、node-b、node-c。
2、在 Nginx 配置中定义 upstream 块:upstream hermes_backend { server 192.168.1.10:8080; server 192.168.1.11:8080; health_check interval=5 uri=/healthz; }。
3、启动代理服务并重载配置:nginx -t && nginx -s reload,确认代理层可正常转发请求至任一健康节点。
五、启用分布式日志与状态同步
解决集群环境下日志割裂与会话状态丢失问题,需引入集中式日志采集与外部持久化存储,支撑可观测性与上下文连续性。
1、部署 Loki + Promtail 日志栈:kubectl apply -f kubernetes/loki-stack.yaml。
2、修改 Hermes Agent 的 log_config.yaml:output: loki; endpoint: http://loki:3100/loki/api/v1/push。
3、为 memory-store 组件配置外部 Redis 实例:memory.redis.host: redis.hermes.svc.cluster.local,memory.redis.port: 6379。











