
后端前端企业应用MCP 服务【免费下载链接】ever-gauzyEver® Gauzy™ - Open Business Management Platform (ERP/CRM/HRM/ATS/PM) - https://gauzy.co项目地址https://gitcode.com/GitHub_Trending/ev/ever-gauzy点击查看免费下载本篇指南围绕 Ever Gauzy 官方 Kubernetes 部署方案展开以仓库中的 .deploy/k8s/README.md 为操作主线完整覆盖从 kubeconfig 连通性验证、kubectl apply部署、describe排障、rollout restart滚动重启到基于 kube-prometheus-stack 的 Grafana / Prometheus 监控接入全过程。读完本文你将掌握 Ever GauzyAPI、Web 前端、Worker 三组件在 DigitalOcean Kubernetes 集群上的标准部署与运维方法并能结合仓库内的生产级 Manifest 与 CI/CD 工作流完成环境变量注入和自动化发布。前置准备kubeconfig 与 Kubernetes ContextEver Gauzy 的 K8s 部署约定以本地保存的 kubeconfig 文件 指定 context为核心工作方式。官方文档假设当前 kubeconfig 已保存为k8s-gauzy-kubeconfig.yamlkubectl --kubeconfigk8s-gauzy-kubeconfig.yaml get nodes同时后续所有写操作命令都显式指定了 contextdo-sfo2-k8s-gauzy。该 context 需要在 kubeconfig 中预先定义好例如通过doctl kubernetes cluster kubeconfig save --expiry-seconds 600 k8s-gauzy生成参见 .github/workflows/deploy-do-prod.yml它对应 DigitalOcean 位于sfo2区域、名为k8s-gauzy的托管集群。说明kubeconfig 通常包含集群证书、Token 等敏感信息请勿提交到版本库官方 CI 使用doctl生成**短期有效600 秒**的 kubeconfig正是为了降低凭据泄露风险。验证集群连通性部署前先确认本地到集群的连通性使用只读命令安全验证kubectl --kubeconfigk8s-gauzy-kubeconfig.yaml get nodes输出中应列出集群内各节点及其STATUS应为Ready、版本信息。如果该命令超时或报权限错误说明 kubeconfig 路径、context 或集群证书配置有问题需要先修复再进入部署阶段。认识部署清单k8s-manifest 家族与三组件架构.deploy/k8s/目录下存放了整套官方部署清单按环境与云厂商拆分文件适用环境/场景.deploy/k8s/k8s-manifest.demo.yaml演示环境DEMOtrue域名demo.gauzy.co/apidemo.gauzy.co.deploy/k8s/k8s-manifest.stage.yaml预发布Stage环境.deploy/k8s/k8s-manifest.prod.yaml生产环境app.gauzy.co/api.gauzy.co.deploy/k8s/k8s-manifest.civo.{demo,stage,prod}.yamlCivo 云托管集群.deploy/k8s/k8s-manifest.cw.{demo,stage,prod}.yaml其他云厂商CW.deploy/k8s/k8s-manifest.mcp.{demo,stage,prod}.yamlMCP Server 服务.deploy/k8s/k8s-manifest.mcp-auth.{demo,stage,prod}.yamlMCP Auth 认证服务README 中命令所用的k8s-manifest.yaml为占位名实际使用时应替换为对应环境的真实清单文件生产环境用k8s-manifest.prod.yaml。以生产清单 .deploy/k8s/k8s-manifest.prod.yaml 为例单文件内含三类资源形成 Ever Gauzy 后端三组件的基础拓扑gauzy-prod-apiAPI 服务NestJS 后端监听容器端口3000生产环境副本数replicas: 2资源请求cpu: 300m / memory: 896Mi内存上限2048Mi镜像为registry.digitalocean.com/ever/gauzy-api:latest。gauzy-prod-webappWeb 前端Angular 前端监听容器端口4200副本数replicas: 2资源请求cpu: 50m / memory: 64Mi镜像为registry.digitalocean.com/ever/gauzy-webapp:latest。gauzy-prod-worker后台 Worker队列与定时任务处理副本数replicas: 1内存上限2048Mi镜像为registry.digitalocean.com/ever/gauzy-worker:latest。每个组件都配置了SecurityContextallowPrivilegeEscalation: false并使用seccompProfile: RuntimeDefault遵循容器安全基线。Service 与 Ingress南北向流量接入清单为前后端各定义了一个ClusterIP类型 Service 与对应 IngressServicegauzy-prod-web-lbport: 80→targetPort: 4200Selector 匹配app: gauzy-prod-webappServicegauzy-prod-api-lbport: 80→targetPort: 3000Selector 匹配app: gauzy-prod-api。Ingress 使用ingressClassName: nginx并携带两个重要注解annotations: nginx.ingress.kubernetes.io/force-ssl-redirect: true nginx.ingress.kubernetes.io/proxy-body-size: 20mforce-ssl-redirect: true强制 HTTP 请求 301 跳转到 HTTPSproxy-body-size: 20m放宽 Nginx 默认的 1MB 请求体上限允许上传较大的文件如头像、附件、报告截图等。TLS 通过secretName引用 Kubernetes Secret如app.gauzy.co-tls、api.gauzy.co-tls证书内容由 CI 或运维预先生成注入详见下文 CI/CD 一节。部署 Ever Gauzy 到集群当 kubeconfig 与 context 就绪、清单文件确认无误后执行部署kubectl --kubeconfigk8s-gauzy-kubeconfig.yaml --context do-sfo2-k8s-gauzy apply -f k8s-manifest.yamlapply采用声明式方式如果资源尚不存在则创建已存在则按清单做增量更新便于反复执行而不产生冲突。生产环境实际执行时替换为kubectl --kubeconfigk8s-gauzy-kubeconfig.yaml --context do-sfo2-k8s-gauzy apply -f .deploy/k8s/k8s-manifest.prod.yaml查看部署状态部署完成后可通过describe命令检查 Deployment 的细节镜像、副本、事件、滚动进度等kubectl describe deployment --kubeconfigk8s-gauzy-kubeconfig.yaml该命令会输出集群中所有 Deployment 的状态如需聚焦某个组件可追加 Deployment 名称例如kubectl --kubeconfigk8s-gauzy-kubeconfig.yaml describe deployment gauzy-prod-apidescribe输出中的Events段是排障关键镜像拉取失败ErrImagePull、探针失败Unhealthy等问题都会在这里留下记录。滚动重启Redeploy当使用latest镜像标签时apply本身不会触发 Pod 重建镜像引用未变化。因此官方流程使用rollout restart强制滚动重启让 Pod 拉取最新的latest镜像kubectl --kubeconfigk8s-gauzy-kubeconfig.yaml --context do-sfo2-k8s-gauzy rollout restart -f k8s-manifest.yamlrollout restart会依次为新旧副本做滚动替换期间服务不中断若指定单个 Deployment可写成kubectl --context do-sfo2-k8s-gauzy rollout restart deployment/gauzy-prod-api仓库的 CI 工作流在每次发布后正是通过类似命令让三个组件gauzy-prod-api、gauzy-prod-webapp、gauzy-prod-worker全部重启以拾取新镜像参见 .github/workflows/deploy-do-prod.yml。环境变量注入从 Manifest 占位符到运行时配置Ever Gauzy 后端是典型的配置驱动应用数据库、Redis、JWT、邮件、对象存储、Sentry、GitHub OAuth 等全部通过环境变量注入。生产清单 .deploy/k8s/k8s-manifest.prod.yaml 中大量变量的取值是$DB_URI、$JWT_SECRET这类占位符例如env: - name: DB_URI value: $DB_URI - name: DB_HOST value: $DB_HOST - name: JWT_SECRET value: $JWT_SECRET - name: EXPRESS_SESSION_SECRET value: $EXPRESS_SESSION_SECRET - name: REDIS_URL value: $REDIS_URL这些占位符在应用前必须被真实值替换。官方 CI 的做法是在执行apply前用envsubst渲染整个清单envsubst .deploy/k8s/k8s-manifest.prod.yaml | kubectl --context do-sfo2-k8s-gauzy apply -f -envsubst会用当前 shell 环境中同名变量替换$VAR形式的占位符而这些环境变量本身来自 GitHub Actions Secrets参见 .github/workflows/deploy-do-prod.yml。手工部署时请勿把真实密钥硬编码进清单——演示清单 .deploy/k8s/k8s-manifest.demo.yaml 中有一段安全注释明确指出会话/JWT 等签名密钥绝不应写入公开仓库应改为从 Secret Store 注入。值得注意的几类核心变量及其作用数据库DB_TYPE默认better-sqlite3生产常用postgres、DB_HOST、DB_PORT、DB_NAME、DB_USER、DB_PASS、DB_URI、DB_SSL_MODE、DB_CA_CERT、DB_POOL_SIZE、DB_POOL_SIZE_KNEXRedisREDIS_ENABLED、REDIS_URL、REDIS_HOST、REDIS_PORT、REDIS_USER、REDIS_PASSWORD、REDIS_TLS用于队列与缓存鉴权与会话EXPRESS_SESSION_SECRET、JWT_SECRET、JWT_REFRESH_TOKEN_SECRET、JWT_VERIFICATION_TOKEN_SECRET、JWT_REFRESH_TOKEN_EXPIRATION_TIME站点对外地址API_BASE_URL如https://api.gauzy.co、CLIENT_BASE_URL如https://app.gauzy.coWorker 专属WORKER_DEFAULT_QUEUE、WORKER_QUEUE_ENABLED、WORKER_SCHEDULER_ENABLED、WORKER_TIMEZONE。其中部分变量在镜像内已带中性默认值如API_HOSTapi、API_PORT3000、DEMOfalse、DB_TYPEbetter-sqlite3真正涉及凭据的变量则刻意不在镜像层烘焙必须由编排器K8s Manifest / Compose env_file注入详见 .deploy/api/Dockerfile。生产 CI/CDGitHub Actions 全自动发布链路官方仓库通过 GitHub Actions 实现构建镜像 → 部署到 DO 集群的完整链路工作流 .github/workflows/deploy-do-prod.yml 展示了生产环境自动部署的四个关键步骤同样适用于手工运维参考登录容器镜像仓库doctl registry login --expiry-seconds 600使用短期凭据拉取registry.digitalocean.com/ever/*镜像生成并保存集群凭据doctl kubernetes cluster kubeconfig save --expiry-seconds 600 k8s-gauzy等效于准备 README 中假设的 kubeconfig注入 TLS 证书从 GitHub Secrets 解码INGRESS_WEBAPP_CERT/INGRESS_API_CERT等执行kubectl create secret tls app.gauzy.co-tls ... | kubectl apply -f -为 Ingress 提供 HTTPS 证书渲染并应用清单 滚动重启envsubst替换占位符后apply再对gauzy-prod-api、gauzy-prod-webapp、gauzy-prod-worker依次rollout restart。该工作流还体现了生产发布的两个工程细节通过concurrency合并排队中的发布且不中断正在进行的 apply避免滚动更新中途被杀死导致集群处于半更新状态GITHUB_TOKEN使用最小权限contents: read。集群监控kube-prometheus-stack 接入 Grafana 与 Prometheus官方推荐的监控方案是 DigitalOcean 的 Kubernetes Monitoring Stack基于 kube-prometheus-stack。部署完成后通过port-forward将监控面板暴露到本地kubectl --kubeconfigk8s-gauzy-kubeconfig.yaml port-forward svc/kube-prometheus-stack-grafana 8090:80 -n kube-prometheus-stack此时 Grafana 即可在 http://localhost:8090 访问。默认登录凭据用户名admin密码prom-operator安全提醒登录后必须立即修改默认密码该默认口令为监控栈的公共默认值直接暴露在公网环境存在极大风险。Prometheus 同样通过 port-forward 暴露kubectl --kubeconfigk8s-gauzy-kubeconfig.yaml port-forward svc/kube-prometheus-stack-prometheus 9090 -n kube-prometheus-stack随后即可在 http://localhost:9090 打开 Prometheus 查询界面验证指标抓取Targets状态并执行 PromQL 查询。port-forward适合日常排障和临时查看长期暴露监控面板应改为 Ingress 认证的正式方案。多环境管理Demo / Stage / Prod 一套清单多处复用Ever Gauzy 的清单设计支持同一套资源模板在多个环境间复用核心差异点集中在三处域名与 Ingress HostDemo 用demo.gauzy.co/apidemo.gauzy.coProd 用app.gauzy.co/api.gauzy.coCivo 环境则用appcivo.gauzy.co/apicivo.gauzy.co见 .deploy/k8s/k8s-manifest.civo.prod.yamlDEMO环境变量Demo 清单显式设置DEMO: true并配合NODE_ENV: development生产则为DEMO: falseNODE_ENV: production副本数与资源配额生产 API/Web 均为replicas: 2以保证可用性Demo 通常为单副本以节省成本。这种同一 YAML 模板 环境差异化参数的模式配合envsubst渲染使得从演示环境到生产环境的升级路径非常平滑——只需切换清单文件与注入不同的环境变量即可。小结Ever Gauzy 的 Kubernetes 部署体系可以归纳为一条清晰的运维链路准备 kubeconfig →get nodes验证连通 →apply应用 Manifest →describe检查状态 →rollout restart滚动更新 → port-forward 接入 Grafana/Prometheus 监控。在此基础上仓库提供了覆盖多环境、多厂商的现成清单.deploy/k8s/以及完整的 GitHub Actions 自动发布参考.github/workflows/deploy-do-prod.yml无论是手工运维还是流水线发布都能直接落地。实操时请始终牢记两条红线敏感变量必须通过 Secret 注入而非硬编码进清单Grafana 等监控组件使用默认口令时必须第一时间修改。赞分享后端前端企业应用MCP 服务【免费下载链接】ever-gauzyEver® Gauzy™ - Open Business Management Platform (ERP/CRM/HRM/ATS/PM) - https://gauzy.co项目地址https://gitcode.com/GitHub_Trending/ev/ever-gauzy点击查看免费下载相关推荐使用Kubespray部署生产级Kubernetes集群使用Kubespray部署生产级Kubernetes集群 ! Kubernetes Logo https://raw.githubusercontent.com云原生容器编排DevOps运维Jeecg-Boot微服务部署终极指南Kubernetes集群部署与滚动更新完整教程Jeecg Boot微服务部署终极指南Kubernetes集群部署与滚动更新完整教程 Jeecg Boot是一个基于Spring Boot的快速开发平台提供低代码后端前端AI 应用大模型RAG工作流自动化2025生产级指南Kubernetes Kafka集群极速部署2025生产级指南Kubernetes Kafka集群极速部署 你还在为Kubernetes部署Kafka集群而烦恼吗 当企业开始采用微服务架构消息队列成创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考