Skip to content

部署运维

**本文引用的文件** - [[bi-analysis/Dockerfile]](../file/bi-analysis/dockerfile) - [[bi-analysis/k8s/deployment.yaml]](../file/bi-analysis/k8s/deployment.yaml) - [[bi-analysis/k8s/service.yaml]](../file/bi-analysis/k8s/service.yaml) - [[bi-api-jushuitan/Dockerfile]](../file/bi-api-jushuitan/dockerfile) - [[bi-api-leke/Dockerfile]](../file/bi-api-leke/dockerfile) - [[bi-basic/Dockerfile]](../file/bi-basic/dockerfile) - [[bi-chat/Dockerfile]](../file/bi-chat/dockerfile) - [[bi-chat/docker-compose.yml]](../file/bi-chat/docker-compose.yml) - [[scripts/deploy.sh]](../file/scripts/deploy.sh) - [[bi-cron/k8s/cronjob.yaml]](../file/bi-cron/k8s/cronjob.yaml) - [[bi-intra/apisix/apisix-gateway-lb-test.yaml]](../file/bi-intra/apisix/apisix-gateway-lb-test.yaml) - [[bi-intra/apisix/services.yaml]](../file/bi-intra/apisix/services.yaml) - [[bi-common/observability/logger/logger.go]](../file/bi-common/observability/logger/logger.go) - [[bi-common/observability/metrics/metrics.go]](../file/bi-common/observability/metrics/metrics.go) - [[bi-common/registry/nacos/client.go]](../file/bi-common/registry/nacos/client.go)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排除指南
  9. 结论
  10. 附录

简介

本文件面向BI分析平台的运维团队,提供从容器化构建、Kubernetes部署、CI/CD自动化到监控告警、负载均衡与高可用、数据库备份恢复与版本升级策略、以及日常维护与性能调优的完整运维指南。文档以仓库中现有的Dockerfile、Kubernetes配置、APISIX网关配置、日志与指标组件、Nacos注册与配置中心集成等为依据,结合最佳实践进行说明。

项目结构

  • 平台由多个微服务组成,每个服务均提供独立的Dockerfile与Kubernetes资源配置,便于按模块独立发布与扩缩容。
  • 网关采用APISIX,统一对外暴露HTTPS入口,并通过路由规则将流量分发至各后端服务。
  • 日志与指标能力在公共组件中提供,服务侧可直接复用,便于集中化观测与告警。
  • 提供cron作业模板,支撑定时任务与批量数据同步场景。

图表来源

章节来源

核心组件

  • 容器镜像构建:各服务均提供Dockerfile,采用多阶段构建,builder阶段下载依赖并编译,最终镜像仅包含运行时产物,减少体积与攻击面。
  • Kubernetes部署:提供Deployment与Service模板,支持通过ConfigMap与Secret注入环境变量与认证信息;NodePort用于开发/测试环境快速访问。
  • 网关与路由:APISIX统一入口,支持HTTPS、IP白名单、WAF、JWT认证、路由前缀与上游转发。
  • 观测性:公共日志组件支持stdout/file/阿里云三路输出;指标组件提供HTTP/DB/Cache/业务指标,便于Prometheus采集。
  • 服务发现与配置:Nacos作为注册中心与配置中心,支持动态配置下发与服务注册。

章节来源

架构总览

下图展示从客户端到后端服务的典型链路:浏览器/移动端经APISIX网关访问后端服务,服务通过Nacos进行注册与配置拉取,同时使用Redis/PostgreSQL/Milvus等中间件完成业务处理与数据持久化。

图表来源

章节来源

详细组件分析

容器化与镜像构建

  • 多阶段构建:builder阶段设置国内镜像源、安装git/tzdata,配置GOPRIVATE/GONOPROXY等私有仓库访问参数,编译生成server二进制;最终镜像仅拷贝运行时产物与配置,避免携带凭证。
  • 端口暴露:不同服务暴露不同端口,例如分析服务暴露HTTP与gRPC端口,基础服务暴露单一端口,需与K8s Service与配置文件保持一致。
  • 时区与时钟:统一设置为Asia/Shanghai,避免时区偏差导致的日志与调度问题。

图表来源

章节来源

Kubernetes部署与资源配置

  • Deployment:设置副本数、容器端口、资源requests/limits、环境变量(DEPLOY_ENV、NACOS认证)、命令行参数传递环境变量。
  • Service:NodePort类型用于开发/测试环境,映射HTTP与gRPC端口;生产建议使用Ingress或LoadBalancer。
  • Secret与ConfigMap:通过envFrom从ConfigMap与Secret注入,避免将敏感信息硬编码在镜像中。
  • 镜像拉取密钥:imagePullSecrets指向阿里云镜像仓库密钥,确保私有镜像拉取成功。

图表来源

章节来源

CI/CD自动化与部署脚本

  • 脚本职责:检查前置条件(git/docker/docker-compose)、拉取代码、前端构建、后端编译、构建镜像、使用docker-compose启动服务。
  • 适用场景:本地开发与集成测试环境;生产环境建议替换为Kubernetes原生部署与CI流水线(如GitLab CI/ArgoCD/Flux)。
  • 建议增强:将镜像构建与推送、K8s资源apply、健康检查与回滚策略纳入CI流程。

图表来源

章节来源

负载均衡、服务发现与高可用

  • 负载均衡:测试环境通过阿里云CLB(LoadBalancer)暴露APISIX,配置按流量计费、最小规格与HTTPS监听;生产建议使用Ingress控制器与证书管理。
  • 服务发现:各服务通过Nacos进行注册与发现,支持多实例部署与健康检查;服务间调用通过Nacos服务名解析。
  • 高可用:Deployment副本数与Pod就绪探针配合HPA/HPA策略实现弹性伸缩;网关层可结合多可用区与SLB实现跨可用区容灾。

图表来源

章节来源

监控告警与可观测性

  • 日志:支持stdout/file/阿里云三路输出,可配置按大小/按日轮转、保留天数与压缩;日志级别过滤与多输出合并。
  • 指标:提供HTTP请求总量/耗时、数据库查询总量/耗时/错误、缓存命中/未命中/操作耗时、业务操作总量等指标,便于Prometheus采集与Grafana可视化。
  • 建议:接入Prometheus/Grafana/PaasAlert等平台,设置阈值告警与SLI/SLO看板。

图表来源

章节来源

数据库备份恢复与版本升级

  • 备份策略:PostgreSQL建议使用逻辑备份(如pg_dump)定期归档;Milvus/Minio等对象存储类数据按周期快照或版本化备份。
  • 恢复演练:制定RTO/RPO目标,定期进行恢复演练,验证备份数据完整性与恢复时间。
  • 版本升级:采用蓝绿/滚动发布策略,先在预生产验证,再逐步切换流量;数据库schema变更采用灰度与回滚预案。

[本节为通用运维实践说明,不直接分析具体文件,故无“章节来源”]

故障排除指南

  • 服务不可达:检查Service端口与容器端口是否一致、NodePort范围是否正确、防火墙与安全组放通。
  • 配置异常:确认ConfigMap/Secret已正确挂载,DEPLOY_ENV与NACOS配置文件路径一致;Nacos认证凭据正确。
  • 网关异常:检查APISIX路由前缀、上游地址、WAF规则与JWT密钥;测试环境CLB监听器需开启“获取客户端真实IP”。
  • 日志与指标:确认日志输出配置与轮转策略;指标采集端点与标签是否正确;Prometheus抓取间隔与超时合理。
  • 依赖组件:Redis/PostgreSQL/Milvus/Etcd等组件健康状态与网络连通性;Nacos服务可用性与命名空间隔离。

章节来源

依赖关系分析

  • 服务间依赖:各后端服务通过Nacos进行服务发现与配置拉取;前端通过APISIX路由到后端服务。
  • 中间件依赖:Redis用于缓存,PostgreSQL用于元数据存储,Milvus/Minio/Etcd用于向量检索与对象存储。
  • 观测性依赖:日志与指标组件为通用能力,服务侧按需引入;APISIX提供统一网关与安全防护。

图表来源

章节来源

性能考量

  • 资源配额:为Deployment设置合理的requests/limits,避免资源争抢;根据实际QPS与响应时间调整副本数与CPU/内存配额。
  • 网关性能:APISIX路由规则尽量简化,避免过多正则匹配;开启必要的缓存与连接池;HTTPS证书与ALPN优化。
  • 数据库性能:慢查询日志与索引优化;连接池大小与超时设置;读写分离与只读副本。
  • 缓存策略:热点数据提升缓存命中率,设置合理的TTL与失效策略;缓存预热与降级策略。
  • 指标与采样:对高频指标进行采样或聚合,避免Prometheus压力过大。

[本节提供通用性能建议,不直接分析具体文件,故无“章节来源”]

结论

本运维文档基于仓库现有配置与组件,给出了容器化构建、Kubernetes部署、网关路由、观测性、服务发现与配置中心、以及CI/CD与故障排除的完整实践指南。建议在生产环境中进一步完善CI/CD流水线、引入Ingress与证书管理、强化安全与合规、并建立完善的备份与演练机制。

附录

  • 前端Chat服务本地化:提供docker-compose编排,包含PostgreSQL、Milvus、Etcd、MinIO、Redis等依赖,适合本地联调与演示。

章节来源