Skip to content

关于本页

本页介绍更夫所基于的开源内核 Keep 的通用能力。更夫在其上提供国内化增强:钉钉/企业微信/飞书通知、国产大模型接入、LDAP 认证与值班管理。部署与上手请看快速上手。

高级架构 ​

Keep 架构由两个主要组件组成:

  1. Keep API - 基于 FastAPI 的后端服务器,处理业务逻辑和 API 端点。
  2. Keep Frontend - 基于 Next.js 的前端界面,用于用户交互。
  3. Websocket 服务器 - 用于实时更新而不刷新页面的 Soketi 服务器。
  4. 数据库服务器 - 用于存储和管理持久化数据的数据库。支持 SQLite、PostgreSQL、MySQL 和 SQL Server。

Kubernetes 架构 ​

Keep 使用单个统一的 NGINX ingress 控制器将流量路由到所有组件(frontend、backend 和 websocket)。ingress 处理基于路径的路由:

默认情况下:

  • / 路由到 Frontend(可通过 global.ingress.frontendPrefix 配置)
  • /v2 路由到 Backend(可通过 global.ingress.backendPrefix 配置)
  • /websocket 路由到 WebSocket(可通过 global.ingress.websocketPrefix 配置)

常规组件 ​

TIP

Keep 使用 kubernetes secret manager 存储集成凭证等密钥。

Kubernetes 资源用途必填/可选来源
ServiceAccount为 Pod 中运行的进程提供身份。主要用于 Keep API 访问 kubernetes secret manager必填serviceaccount.yaml
Role定义 ServiceAccount 管理密钥的权限必填role-secret-manager.yaml
RoleBinding将 Role 与 ServiceAccount 关联必填role-binding-secret-manager.yaml
Secret Deletion Job删除 Helm 版本时清理 Keep 相关的密钥必填delete-secret-job.yaml

Ingress 组件 ​

Kubernetes 资源用途必填/可选来源
Shared NGINX Ingress通过一个入口点路由所有外部流量可选nginx-ingress.yaml

Frontend 组件 ​

Kubernetes 资源用途必填/可选来源
Frontend Deployment管理 frontend 应用程序容器必填frontend.yaml
Frontend Service在集群内暴露 frontend deployment必填frontend-service.yaml
Frontend Route (OpenShift)在 OpenShift 上将 frontend 服务暴露给外部流量可选frontend-route.yaml
Frontend HorizontalPodAutoscaler自动扩展 frontend pod 数量可选frontend-hpa.yaml

Backend 组件 ​

Kubernetes 资源用途必填/可选来源
Backend Deployment管理 backend 应用程序容器必填(如果 backend 启用)backend.yaml
Backend Service在集群内暴露 backend deployment必填(如果 backend 启用)backend-service.yaml
Backend Route (OpenShift)在 OpenShift 上将 backend 服务暴露给外部流量可选backend-route.yaml
Backend HorizontalPodAutoscaler自动扩展 backend pod 数量可选backend-hpa.yaml

数据库组件 ​

TIP

数据库组件是可选的。您可以使用您自己的数据库启动 Keep。

Kubernetes 资源用途必填/可选来源
Database Deployment管理数据库容器(例如 MySQL 或 Postgres)可选db.yaml
Database Service在集群内暴露数据库 deployment必填(如果 deployment 启用)db-service.yaml
Database PersistentVolume为数据库提供持久化存储可选db-pv.yaml
Database PersistentVolumeClaim为数据库声明持久化存储可选db-pvc.yaml

WebSocket 组件 ​

TIP

WebSocket 组件是可选的。您可以使用您自己的 Pusher 兼容 WebSocket 服务器启动 Keep。

Kubernetes 资源用途必填/可选来源
WebSocket Deployment管理 WebSocket 服务器容器(Soketi)可选websocket-server.yaml
WebSocket Service在集群内暴露 WebSocket deployment必填(如果 WebSocket 启用)websocket-server-service.yaml
WebSocket Route (OpenShift)在 OpenShift 上将 WebSocket 服务暴露给外部流量可选websocket-server-route.yaml
WebSocket HorizontalPodAutoscaler自动扩展 WebSocket 服务器 pod 数量可选websocket-server-hpa.yaml

这些表格提供了 Keep 架构中使用的 Kubernetes 资源的全面概述,按组件类型组织。每个表格描述了每个资源的用途,指示它是必填还是可选,并提供了指向 Keep Helm charts GitHub 仓库中源模板的直接链接。

Kubernetes 配置 ​

TIP

本节仅涵盖 kubernetes 特定的配置。要了解 Keep 特定的配置(由环境变量控制),请参阅 Keep 配置

这些组件中的每一个都可以通过 Helm chart 中的 values.yaml 文件进行自定义。

以下是每个组件可以调整的关键配置。

1. Frontend 配置 ​

yaml
frontend:
  enabled: true                 # 启用或禁用 frontend deployment。
  replicaCount: 1               # Frontend 副本数量。
  image:
    repository: us-central1-docker.pkg.dev/keephq/keep/keep-ui
    pullPolicy: Always          # 镜像拉取策略(Always、IfNotPresent)。
    tag: latest
  serviceAccount:
    create: true                # 创建新的服务账户。
    name: ""                    # 服务账户名称(空为默认)。
  podAnnotations: {}            # Frontend pod 的注解。
  podSecurityContext: {}        # Frontend pod 的安全上下文。
  securityContext: {}           # 容器的安全上下文。
  service:
    type: ClusterIP              # 服务类型(ClusterIP、NodePort、LoadBalancer)。
    port: 3000                  # Frontend 服务暴露的端口。

2. Backend 配置 ​

yaml
backend:
  enabled: true                # 启用或禁用 backend deployment。
  replicaCount: 1              # Backend 副本数量。
  image:
    repository: us-central1-docker.pkg.dev/keephq/keep/keep-api
    pullPolicy: Always         # 镜像拉取策略(Always、IfNotPresent)。
  serviceAccount:
    create: true               # 创建新的服务账户。
    name: ""                   # 服务账户名称(空为默认)。
  podAnnotations: {}           # Backend pod 的注解。
  podSecurityContext: {}       # Backend pod 的安全上下文。
  securityContext: {}          # 容器的安全上下文。
  service:
    type: ClusterIP      # 服务类型(ClusterIP、NodePort、LoadBalancer)。
    port: 8080           # Backend API 暴露的端口。

3. WebSocket 服务器配置 ​

Keep 使用 Soketi 作为其 websocket 服务器。要了解如何配置它,请参阅 Soketi 文档。

4. 数据库配置 ​

Keep 支持大量数据库(例如 postgresql、mysql、sqlite 等)。在此描述如何将它们全部部署到 k8s 超出了范围。如果您有具体问题 - 联系我们,我们将很乐意提供帮助。

基于 MIT 协议开源的 Keep · 由更夫社区维护