mirror of
https://gitee.com/270580156/weiyu.git
synced 2026-05-14 19:27:53 +00:00
ByteDesk Helm Chart
ByteDesk 微语智能客服系统的 Helm Chart,支持一键部署完整的应用栈。
概述
这个 Helm Chart 包含了 ByteDesk 系统的所有组件:
- ByteDesk 主应用 - 核心客服系统
- MySQL - 关系型数据库
- Redis - 缓存和会话存储
- Elasticsearch - 搜索引擎
- Apache Artemis - 消息队列
- MinIO - 对象存储
- Zipkin - 链路追踪
快速开始
前置要求
- Kubernetes 集群 (1.19+)
- Helm (3.0+)
- kubectl 配置
安装 Helm
# 安装 Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# 验证安装
helm version
部署 ByteDesk
# 进入 Helm Chart 目录
cd deploy/k8s/helm
# 使用默认配置部署
./deploy.sh
# 或者使用 Helm 命令
helm install bytedesk . -n bytedesk --create-namespace
自定义配置部署
# 使用自定义 values 文件
./deploy.sh -f values-prod.yaml -v v1.0.0
# 部署到不同命名空间
./deploy.sh -n production -r bytedesk-prod
# 试运行模式
./deploy.sh -d
配置说明
默认配置
Chart 提供了合理的默认配置,适合开发和测试环境:
- 所有组件都启用
- 使用默认密码(生产环境请修改)
- 资源限制适中
- 持久化存储启用
自定义配置
1. 创建自定义 values 文件
# values-prod.yaml
global:
imageRegistry: "registry.cn-hangzhou.aliyuncs.com"
bytedesk:
replicaCount: 3
image:
tag: "v1.0.0"
resources:
limits:
cpu: 4000m
memory: 8Gi
requests:
cpu: 2000m
memory: 4Gi
mysql:
auth:
rootPassword: "your-secure-password"
password: "your-secure-password"
redis:
auth:
password: "your-secure-password"
elasticsearch:
auth:
password: "your-secure-password"
# 禁用不需要的组件
zipkin:
enabled: false
2. 使用自定义配置部署
helm install bytedesk . -f values-prod.yaml -n production
环境变量配置
ByteDesk 主应用环境变量
bytedesk:
env:
# 数据库配置
SPRING_DATASOURCE_URL: "jdbc:mysql://bytedesk-mysql:3306/bytedesk"
# Redis 配置
SPRING_DATA_REDIS_HOST: "bytedesk-redis"
SPRING_DATA_REDIS_PORT: "6379"
# Elasticsearch 配置
SPRING_ELASTICSEARCH_HOST: "bytedesk-elasticsearch"
SPRING_ELASTICSEARCH_PORT: "9200"
# Artemis 配置
SPRING_ARTEMIS_HOST: "bytedesk-artemis"
SPRING_ARTEMIS_PORT: "61616"
# MinIO 配置
BYTEDESK_MINIO_ENDPOINT: "http://bytedesk-minio:9000"
BYTEDESK_MINIO_BUCKET: "bytedesk"
# Zipkin 配置
SPRING_ZIPKIN_BASE_URL: "http://bytedesk-zipkin:9411"
部署选项
1. 开发环境
# 最小化部署,只包含必要组件
helm install bytedesk-dev . \
--set zipkin.enabled=false \
--set elasticsearch.enabled=false \
--set bytedesk.replicaCount=1 \
-n bytedesk-dev
2. 生产环境
# 高可用部署
helm install bytedesk-prod . \
--set bytedesk.replicaCount=3 \
--set mysql.primary.persistence.size=50Gi \
--set redis.master.persistence.size=20Gi \
--set elasticsearch.master.persistence.size=100Gi \
-f values-prod.yaml \
-n production
3. 测试环境
# 使用外部数据库
helm install bytedesk-test . \
--set mysql.enabled=false \
--set redis.enabled=false \
--set bytedesk.env.SPRING_DATASOURCE_URL="jdbc:mysql://external-mysql:3306/bytedesk" \
--set bytedesk.env.SPRING_DATA_REDIS_HOST="external-redis" \
-n bytedesk-test
管理操作
查看部署状态
# 查看所有资源
kubectl get all -n bytedesk
# 查看 Pod 状态
kubectl get pods -n bytedesk
# 查看服务
kubectl get svc -n bytedesk
# 查看持久化存储
kubectl get pvc -n bytedesk
升级应用
# 升级到新版本
helm upgrade bytedesk . \
--set bytedesk.image.tag=v1.0.1 \
-n bytedesk
# 使用部署脚本
./deploy.sh -u -v v1.0.1
回滚操作
# 查看历史版本
helm history bytedesk -n bytedesk
# 回滚到上一个版本
helm rollback bytedesk -n bytedesk
# 回滚到指定版本
helm rollback bytedesk 2 -n bytedesk
卸载应用
# 卸载应用(保留数据)
helm uninstall bytedesk -n bytedesk
# 完全清理(包括数据)
kubectl delete namespace bytedesk
故障排除
常见问题
1. Pod 启动失败
# 查看 Pod 状态
kubectl get pods -n bytedesk
# 查看 Pod 详情
kubectl describe pod <pod-name> -n bytedesk
# 查看日志
kubectl logs <pod-name> -n bytedesk
2. 存储问题
# 检查 PVC 状态
kubectl get pvc -n bytedesk
# 查看存储类
kubectl get storageclass
3. 网络问题
# 检查服务状态
kubectl get svc -n bytedesk
# 测试服务连通性
kubectl run test-pod --image=busybox -n bytedesk --rm -it --restart=Never -- nslookup bytedesk-mysql
调试命令
# 进入 Pod 调试
kubectl exec -it <pod-name> -n bytedesk -- /bin/bash
# 端口转发
kubectl port-forward svc/bytedesk 9003:9003 -n bytedesk
# 查看事件
kubectl get events -n bytedesk --sort-by='.lastTimestamp'
安全配置
1. 密码管理
生产环境必须修改默认密码:
mysql:
auth:
rootPassword: "your-secure-mysql-password"
password: "your-secure-mysql-password"
redis:
auth:
password: "your-secure-redis-password"
elasticsearch:
auth:
password: "your-secure-elasticsearch-password"
2. 网络策略
# 创建网络策略限制 Pod 间通信
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: bytedesk-network-policy
namespace: bytedesk
spec:
podSelector:
matchLabels:
app: bytedesk
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
app: bytedesk
ports:
- protocol: TCP
port: 9003
egress:
- to:
- podSelector:
matchLabels:
app: mysql
ports:
- protocol: TCP
port: 3306
3. RBAC 配置
# 创建 ServiceAccount 和 RBAC 规则
apiVersion: v1
kind: ServiceAccount
metadata:
name: bytedesk-sa
namespace: bytedesk
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: bytedesk-role
namespace: bytedesk
rules:
- apiGroups: [""]
resources: ["pods", "services", "endpoints"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: bytedesk-rolebinding
namespace: bytedesk
subjects:
- kind: ServiceAccount
name: bytedesk-sa
namespace: bytedesk
roleRef:
kind: Role
name: bytedesk-role
apiGroup: rbac.authorization.k8s.io
监控和日志
1. 健康检查
Chart 配置了健康检查端点:
# 检查应用健康状态
kubectl exec -it <pod-name> -n bytedesk -- curl http://localhost:9003/actuator/health
2. 日志收集
# 查看应用日志
kubectl logs -f deployment/bytedesk -n bytedesk
# 查看所有组件日志
kubectl logs -f -l app=bytedesk -n bytedesk
3. 监控指标
ByteDesk 应用暴露了 Prometheus 指标:
# 端口转发访问指标
kubectl port-forward svc/bytedesk 9003:9003 -n bytedesk
# 访问指标端点
curl http://localhost:9003/actuator/prometheus
扩展和定制
1. 添加新的组件
在 values.yaml 中添加新组件配置:
# 添加新组件
newComponent:
enabled: true
image:
repository: new-component
tag: "latest"
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 250m
memory: 512Mi
2. 自定义模板
在 templates/ 目录下添加新的模板文件:
# templates/new-component-deployment.yaml
{{- if .Values.newComponent.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "bytedesk.fullname" . }}-new-component
namespace: {{ .Release.Namespace }}
spec:
# ... 部署配置
{{- end }}
3. 集成外部服务
# 使用外部数据库
bytedesk:
env:
SPRING_DATASOURCE_URL: "jdbc:mysql://external-mysql.company.com:3306/bytedesk"
SPRING_DATA_REDIS_HOST: "external-redis.company.com"
最佳实践
1. 资源管理
- 根据实际负载调整资源限制
- 监控资源使用情况
- 设置合理的 HPA 策略
2. 备份策略
- 定期备份数据库
- 备份配置文件
- 测试恢复流程
3. 安全加固
- 使用强密码
- 启用网络策略
- 定期更新镜像
- 扫描安全漏洞
4. 性能优化
- 调整 JVM 参数
- 优化数据库查询
- 配置缓存策略
- 监控性能指标
支持
如果遇到问题,请:
- 查看本文档的故障排除部分
- 检查 Kubernetes 事件和日志
- 参考 ByteDesk 项目文档
- 提交 Issue 到项目仓库
贡献
欢迎贡献代码和改进建议:
- Fork 项目
- 创建功能分支
- 提交 Pull Request
- 参与讨论
许可证
本项目采用 MIT 许可证。