mirror of
https://gitee.com/270580156/weiyu.git
synced 2025-12-30 10:52:26 +00:00
update deploy/k8s: add 5 mod 8 files
This commit is contained in:
@@ -486,10 +486,6 @@ services:
|
||||
# api-docs
|
||||
SPRINGDOC_API_DOCS_ENABLED: true
|
||||
SPRINGDOC_API_DOCS_PATH: /v3/api-docs
|
||||
# knife4j
|
||||
# http://服务器ip:9003/doc.html
|
||||
KNIFE4J_ENABLED: true
|
||||
KNIFE4J_SETTING_LANGUAGE: zh_cn
|
||||
ports:
|
||||
- 9003:9003
|
||||
- 9885:9885
|
||||
|
||||
@@ -456,10 +456,6 @@ services:
|
||||
# api-docs
|
||||
SPRINGDOC_API_DOCS_ENABLED: "true"
|
||||
SPRINGDOC_API_DOCS_PATH: /v3/api-docs
|
||||
# knife4j
|
||||
# http://服务器ip:9003/doc.html
|
||||
KNIFE4J_ENABLED: "true"
|
||||
KNIFE4J_SETTING_LANGUAGE: zh_cn
|
||||
# 增加数据库连接超时时间
|
||||
SPRING_DATASOURCE_HIKARI_CONNECTION_TIMEOUT: 60000
|
||||
SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE: 10
|
||||
|
||||
153
deploy/k8s/README-dependencies.md
Normal file
153
deploy/k8s/README-dependencies.md
Normal file
@@ -0,0 +1,153 @@
|
||||
# Bytedesk Kubernetes 依赖服务说明
|
||||
|
||||
## 新增的依赖服务
|
||||
|
||||
参考 `docker-compose.yaml` 文件,我们为 Kubernetes 部署添加了以下依赖服务:
|
||||
|
||||
### 1. Elasticsearch (向量数据库)
|
||||
- **文件**: `elasticsearch-deployment.yaml`
|
||||
- **镜像**: `docker.elastic.co/elasticsearch/elasticsearch:8.18.0`
|
||||
- **端口**: 9200 (HTTP), 9300 (Transport)
|
||||
- **用途**: 向量数据库,用于AI知识库和语义搜索
|
||||
- **存储**: 10Gi PVC
|
||||
- **访问**: http://elasticsearch-service:9200
|
||||
|
||||
### 2. Artemis (ActiveMQ 消息队列)
|
||||
- **文件**: `artemis-deployment.yaml`
|
||||
- **镜像**: `apache/activemq-artemis:latest`
|
||||
- **端口**:
|
||||
- 61616 (JMS)
|
||||
- 61617 (AMQP)
|
||||
- 8161 (Web Console)
|
||||
- 5672 (AMQP Alt)
|
||||
- 61613 (STOMP)
|
||||
- 1883 (MQTT)
|
||||
- **用途**: 消息队列,用于异步消息处理
|
||||
- **存储**: 5Gi PVC
|
||||
- **Web Console**: http://artemis-service:8161/console
|
||||
|
||||
### 3. Zipkin (分布式追踪)
|
||||
- **文件**: `zipkin-deployment.yaml`
|
||||
- **镜像**: `openzipkin/zipkin:latest`
|
||||
- **端口**: 9411 (HTTP)
|
||||
- **用途**: 分布式追踪系统,用于监控和调试
|
||||
- **存储**: 1Gi PVC
|
||||
- **访问**: http://zipkin-service:9411
|
||||
|
||||
### 4. MinIO (对象存储)
|
||||
- **文件**: `minio-deployment.yaml`
|
||||
- **镜像**: `minio/minio:latest`
|
||||
- **端口**: 9000 (API), 9001 (Console)
|
||||
- **用途**: 对象存储服务,用于文件存储
|
||||
- **存储**: 10Gi PVC
|
||||
- **API**: http://minio-service:9000
|
||||
- **Console**: http://minio-service:9001
|
||||
|
||||
## 配置更新
|
||||
|
||||
### Secret 配置
|
||||
在 `secret.yaml` 中添加了以下密钥:
|
||||
- `elasticsearch-password`: Elasticsearch 密码
|
||||
- `elasticsearch-username`: Elasticsearch 用户名
|
||||
- `artemis-username`: Artemis 用户名
|
||||
- `artemis-password`: Artemis 密码
|
||||
- `minio-root-user`: MinIO 根用户
|
||||
- `minio-root-password`: MinIO 根密码
|
||||
|
||||
### Bytedesk 应用配置
|
||||
在 `bytedesk-deployment.yaml` 中添加了以下环境变量:
|
||||
|
||||
#### Zipkin 配置
|
||||
```yaml
|
||||
- name: MANAGEMENT_ZIPKIN_TRACING_ENABLED
|
||||
value: "false"
|
||||
- name: MANAGEMENT_ZIPKIN_TRACING_ENDPOINT
|
||||
value: "http://zipkin-service:9411/api/v2/spans"
|
||||
```
|
||||
|
||||
#### MinIO 配置
|
||||
```yaml
|
||||
- name: BYTEDESK_MINIO_ENABLED
|
||||
value: "false"
|
||||
- name: BYTEDESK_MINIO_ENDPOINT
|
||||
value: "http://minio-service:9000"
|
||||
- name: BYTEDESK_MINIO_ACCESS_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: bytedesk-secrets
|
||||
key: minio-root-user
|
||||
- name: BYTEDESK_MINIO_SECRET_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: bytedesk-secrets
|
||||
key: minio-root-password
|
||||
- name: BYTEDESK_MINIO_BUCKET_NAME
|
||||
value: "bytedesk"
|
||||
- name: BYTEDESK_MINIO_REGION
|
||||
value: "us-east-1"
|
||||
- name: BYTEDESK_MINIO_SECURE
|
||||
value: "false"
|
||||
```
|
||||
|
||||
## 部署顺序
|
||||
|
||||
部署脚本 `deploy.sh` 已更新,按以下顺序部署:
|
||||
|
||||
1. 创建命名空间
|
||||
2. 应用密钥配置
|
||||
3. 清理旧的 PVC
|
||||
4. 创建新的 PVC
|
||||
5. 等待 PVC 绑定
|
||||
6. 部署所有中间件服务
|
||||
7. 等待中间件就绪
|
||||
8. 部署 Bytedesk 应用
|
||||
|
||||
## 服务访问
|
||||
|
||||
### 内部访问
|
||||
- MySQL: `mysql-service:3306`
|
||||
- Redis: `redis-service:6379`
|
||||
- Elasticsearch: `elasticsearch-service:9200`
|
||||
- Artemis: `artemis-service:61616`
|
||||
- Zipkin: `zipkin-service:9411`
|
||||
- MinIO: `minio-service:9000`
|
||||
|
||||
### 外部访问
|
||||
通过 Ingress 或 NodePort 服务暴露到外部。
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **资源需求**: 新增服务会增加集群资源消耗,请确保有足够的 CPU 和内存
|
||||
2. **存储**: 确保有足够的存储空间用于 PVC
|
||||
3. **网络**: 确保集群内服务间网络通信正常
|
||||
4. **安全**: 生产环境中请修改默认密码和密钥
|
||||
5. **监控**: 建议配置监控和日志收集
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 检查服务状态
|
||||
```bash
|
||||
kubectl get pods -n bytedesk
|
||||
kubectl get svc -n bytedesk
|
||||
```
|
||||
|
||||
### 查看服务日志
|
||||
```bash
|
||||
kubectl logs -f deployment/elasticsearch -n bytedesk
|
||||
kubectl logs -f deployment/artemis -n bytedesk
|
||||
kubectl logs -f deployment/zipkin -n bytedesk
|
||||
kubectl logs -f deployment/minio -n bytedesk
|
||||
```
|
||||
|
||||
### 检查 PVC 状态
|
||||
```bash
|
||||
kubectl get pvc -n bytedesk
|
||||
```
|
||||
|
||||
### 重启服务
|
||||
```bash
|
||||
kubectl rollout restart deployment/elasticsearch -n bytedesk
|
||||
kubectl rollout restart deployment/artemis -n bytedesk
|
||||
kubectl rollout restart deployment/zipkin -n bytedesk
|
||||
kubectl rollout restart deployment/minio -n bytedesk
|
||||
```
|
||||
117
deploy/k8s/artemis-deployment.yaml
Normal file
117
deploy/k8s/artemis-deployment.yaml
Normal file
@@ -0,0 +1,117 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: artemis
|
||||
namespace: bytedesk
|
||||
labels:
|
||||
app: artemis
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: artemis
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: artemis
|
||||
spec:
|
||||
containers:
|
||||
- name: artemis
|
||||
image: apache/activemq-artemis:latest
|
||||
ports:
|
||||
- containerPort: 61616
|
||||
name: jms
|
||||
- containerPort: 61617
|
||||
name: amqp
|
||||
- containerPort: 8161
|
||||
name: web-console
|
||||
- containerPort: 5672
|
||||
name: amqp-alt
|
||||
- containerPort: 61613
|
||||
name: stomp
|
||||
- containerPort: 1883
|
||||
name: mqtt
|
||||
env:
|
||||
- name: ARTEMIS_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: bytedesk-secrets
|
||||
key: artemis-username
|
||||
- name: ARTEMIS_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: bytedesk-secrets
|
||||
key: artemis-password
|
||||
- name: ANONYMOUS_LOGIN
|
||||
value: "false"
|
||||
- name: EXTRA_ARGS
|
||||
value: "--http-host 0.0.0.0 --relax-jolokia"
|
||||
volumeMounts:
|
||||
- name: artemis-data
|
||||
mountPath: /var/lib/artemis/data
|
||||
resources:
|
||||
requests:
|
||||
memory: "512Mi"
|
||||
cpu: "250m"
|
||||
limits:
|
||||
memory: "1Gi"
|
||||
cpu: "500m"
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /console/jolokia/
|
||||
port: 8161
|
||||
initialDelaySeconds: 60
|
||||
periodSeconds: 30
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /console/jolokia/
|
||||
port: 8161
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
volumes:
|
||||
- name: artemis-data
|
||||
persistentVolumeClaim:
|
||||
claimName: artemis-pvc
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: artemis-service
|
||||
namespace: bytedesk
|
||||
labels:
|
||||
app: artemis
|
||||
spec:
|
||||
selector:
|
||||
app: artemis
|
||||
ports:
|
||||
- name: jms
|
||||
port: 61616
|
||||
targetPort: 61616
|
||||
- name: amqp
|
||||
port: 61617
|
||||
targetPort: 61617
|
||||
- name: web-console
|
||||
port: 8161
|
||||
targetPort: 8161
|
||||
- name: amqp-alt
|
||||
port: 5672
|
||||
targetPort: 5672
|
||||
- name: stomp
|
||||
port: 61613
|
||||
targetPort: 61613
|
||||
- name: mqtt
|
||||
port: 1883
|
||||
targetPort: 1883
|
||||
type: ClusterIP
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: artemis-pvc
|
||||
namespace: bytedesk
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 5Gi
|
||||
@@ -75,7 +75,51 @@ spec:
|
||||
- name: SPRING_JPA_HIBERNATE_DDL_AUTO
|
||||
value: "update"
|
||||
|
||||
# 数据库连接池配置
|
||||
- name: SPRING_DATASOURCE_HIKARI_CONNECTION_TIMEOUT
|
||||
value: "60000"
|
||||
- name: SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE
|
||||
value: "10"
|
||||
|
||||
# Druid 配置
|
||||
- name: SPRING_DATASOURCE_DRUID_STAT_VIEW_SERVLET_LOGIN_USERNAME
|
||||
value: "admin@email.com"
|
||||
- name: SPRING_DATASOURCE_DRUID_STAT_VIEW_SERVLET_LOGIN_PASSWORD
|
||||
value: "admin"
|
||||
|
||||
# Actuator 配置
|
||||
- name: MANAGEMENT_ENDPOINTS_ENABLED_BY_DEFAULT
|
||||
value: "false"
|
||||
- name: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE
|
||||
value: ""
|
||||
- name: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_EXCLUDE
|
||||
value: "*"
|
||||
- name: MANAGEMENT_ENDPOINT_HEALTH_ENABLED
|
||||
value: "false"
|
||||
- name: MANAGEMENT_ENDPOINT_INFO_ENABLED
|
||||
value: "false"
|
||||
- name: MANAGEMENT_ENDPOINTS_WEB_BASE_PATH
|
||||
value: "/management"
|
||||
|
||||
# Spring Security 配置
|
||||
- name: SPRING_SECURITY_BASIC_ENABLED
|
||||
value: "true"
|
||||
|
||||
# 微信支付配置
|
||||
- name: WECHAT_PAY_ENABLED
|
||||
value: "false"
|
||||
- name: WECHAT_PAY_CERTPATH
|
||||
value: ""
|
||||
|
||||
# 阿里云短信配置
|
||||
- name: ALIYUN_SMS_SIGNNAME
|
||||
value: ""
|
||||
- name: ALIYUN_SMS_TEMPLATECODE
|
||||
value: ""
|
||||
|
||||
# Redis 配置
|
||||
- name: SPRING_DATA_REDIS_DATABASE
|
||||
value: "0"
|
||||
- name: SPRING_DATA_REDIS_HOST
|
||||
value: "redis-service"
|
||||
- name: SPRING_DATA_REDIS_PORT
|
||||
@@ -85,6 +129,92 @@ spec:
|
||||
secretKeyRef:
|
||||
name: bytedesk-secrets
|
||||
key: redis-password
|
||||
- name: SPRING_DATA_REDIS_TIMEOUT
|
||||
value: "10000"
|
||||
- name: SPRING_DATA_REDIS_REPOSITORIES_ENABLED
|
||||
value: "false"
|
||||
|
||||
# 缓存配置
|
||||
- name: BYTEDESK_CACHE_LEVEL
|
||||
value: "0"
|
||||
- name: BYTEDESK_CACHE_PREFIX
|
||||
value: "bytedeskim"
|
||||
- name: BYTEDESK_CACHE_REDIS_STREAM_KEY
|
||||
value: "bytedeskim:stream"
|
||||
|
||||
# 上传配置
|
||||
- name: BYTEDESK_UPLOAD_TYPE
|
||||
value: "local"
|
||||
- name: BYTEDESK_UPLOAD_DIR
|
||||
value: "/app/uploads"
|
||||
- name: BYTEDESK_UPLOAD_URL
|
||||
value: "http://127.0.0.1:9003"
|
||||
|
||||
# 知识库配置
|
||||
- name: BYTEDESK_KBASE_THEME
|
||||
value: "default"
|
||||
- name: BYTEDESK_KBASE_HTML_PATH
|
||||
value: "helpcenter"
|
||||
- name: BYTEDESK_KBASE_API_URL
|
||||
value: "http://127.0.0.1:9003"
|
||||
|
||||
# Socket 配置
|
||||
- name: BYTEDESK_SOCKET_HOST
|
||||
value: "0.0.0.0"
|
||||
- name: BYTEDESK_SOCKET_WEBSOCKET_PORT
|
||||
value: "9885"
|
||||
- name: BYTEDESK_SOCKET_LEAK_DETECTOR_LEVEL
|
||||
value: "SIMPLE"
|
||||
- name: BYTEDESK_SOCKET_PARENT_EVENT_LOOP_GROUP_THREAD_COUNT
|
||||
value: "1"
|
||||
- name: BYTEDESK_SOCKET_CHILD_EVENT_LOOP_GROUP_THREAD_COUNT
|
||||
value: "8"
|
||||
- name: BYTEDESK_SOCKET_MAX_PAYLOAD_SIZE
|
||||
value: "10240"
|
||||
|
||||
# 集群配置
|
||||
- name: BYTEDESK_CLUSTER_ENABLED
|
||||
value: "false"
|
||||
|
||||
# 日志配置
|
||||
- name: LOGGING_LEVEL_COM_BYTEDESK_AI
|
||||
value: "DEBUG"
|
||||
- name: LOGGING_LEVEL_COM_BYTEDESK_CORE
|
||||
value: "DEBUG"
|
||||
- name: LOGGING_LEVEL_COM_BYTEDESK_KBASE
|
||||
value: "DEBUG"
|
||||
- name: LOGGING_LEVEL_COM_BYTEDESK_SERVICE
|
||||
value: "DEBUG"
|
||||
- name: LOGGING_LEVEL_COM_BYTEDESK_SOCIAL
|
||||
value: "DEBUG"
|
||||
- name: LOGGING_LEVEL_COM_BYTEDESK_WECHAT
|
||||
value: "DEBUG"
|
||||
- name: LOGGING_LEVEL_COM_BYTEDESK_SHOP
|
||||
value: "DEBUG"
|
||||
- name: LOGGING_LEVEL_COM_BYTEDESK_TEAM
|
||||
value: "DEBUG"
|
||||
- name: LOGGING_LEVEL_COM_BYTEDESK_TICKET
|
||||
value: "DEBUG"
|
||||
- name: LOGGING_LEVEL_COM_BYTEDESK_STARTER
|
||||
value: "DEBUG"
|
||||
|
||||
# Swagger 配置
|
||||
- name: SPRINGDOC_SHOW_ACTUATOR
|
||||
value: "false"
|
||||
- name: SPRINGDOC_SWAGGER_UI_ENABLED
|
||||
value: "true"
|
||||
- name: SPRINGDOC_SWAGGER_UI_PATH
|
||||
value: "/index.html"
|
||||
- name: SPRINGDOC_API_DOCS_ENABLED
|
||||
value: "true"
|
||||
- name: SPRINGDOC_API_DOCS_PATH
|
||||
value: "/v3/api-docs"
|
||||
|
||||
# Knife4j 配置
|
||||
- name: KNIFE4J_ENABLED
|
||||
value: "true"
|
||||
- name: KNIFE4J_SETTING_LANGUAGE
|
||||
value: "zh_cn"
|
||||
|
||||
# Elasticsearch 配置
|
||||
- name: SPRING_ELASTICSEARCH_URIS
|
||||
@@ -100,7 +230,21 @@ spec:
|
||||
name: bytedesk-secrets
|
||||
key: elasticsearch-password
|
||||
|
||||
# Elasticsearch 向量存储配置
|
||||
- name: SPRING_AI_VECTORSTORE_ELASTICSEARCH_ENABLED
|
||||
value: "true"
|
||||
- name: SPRING_AI_VECTORSTORE_ELASTICSEARCH_INITIALIZE_SCHEMA
|
||||
value: "true"
|
||||
- name: SPRING_AI_VECTORSTORE_ELASTICSEARCH_INDEX_NAME
|
||||
value: "bytedesk_vs_index"
|
||||
- name: SPRING_AI_VECTORSTORE_ELASTICSEARCH_DIMENSIONS
|
||||
value: "1024"
|
||||
- name: SPRING_AI_VECTORSTORE_ELASTICSEARCH_SIMILARITY
|
||||
value: "cosine"
|
||||
|
||||
# Artemis 配置
|
||||
- name: SPRING_ARTEMIS_MODE
|
||||
value: "native"
|
||||
- name: SPRING_ARTEMIS_BROKER_URL
|
||||
value: "tcp://artemis-service:61616"
|
||||
- name: SPRING_ARTEMIS_USER
|
||||
@@ -114,6 +258,58 @@ spec:
|
||||
name: bytedesk-secrets
|
||||
key: artemis-password
|
||||
|
||||
# JMS 配置
|
||||
- name: SPRING_JMS_LISTENER_CONCURRENCY
|
||||
value: "1"
|
||||
- name: SPRING_JMS_LISTENER_MAX_CONCURRENCY
|
||||
value: "10"
|
||||
- name: SPRING_JMS_LISTENER_ACKNOWLEDGE_MODE
|
||||
value: "client"
|
||||
- name: SPRING_JMS_LISTENER_AUTO_STARTUP
|
||||
value: "true"
|
||||
- name: SPRING_JMS_LISTENER_MAX_ATTEMPTS
|
||||
value: "5"
|
||||
- name: SPRING_JMS_LISTENER_INITIAL_INTERVAL
|
||||
value: "1000"
|
||||
- name: SPRING_JMS_LISTENER_MAX_INTERVAL
|
||||
value: "10000"
|
||||
- name: SPRING_JMS_LISTENER_MULTIPLIER
|
||||
value: "2.0"
|
||||
- name: SPRING_JMS_LISTENER_RECEIVE_TIMEOUT
|
||||
value: "1000"
|
||||
- name: SPRING_JMS_LISTENER_MISSING_QUEUES_FATAL
|
||||
value: "false"
|
||||
- name: SPRING_ARTEMIS_EMBEDDED_QUEUES
|
||||
value: "DLQ"
|
||||
|
||||
# Zipkin 配置
|
||||
- name: MANAGEMENT_ZIPKIN_TRACING_ENABLED
|
||||
value: "false"
|
||||
- name: MANAGEMENT_ZIPKIN_TRACING_ENDPOINT
|
||||
value: "http://zipkin-service:9411/api/v2/spans"
|
||||
|
||||
# MinIO 配置
|
||||
- name: BYTEDESK_MINIO_ENABLED
|
||||
value: "false"
|
||||
- name: BYTEDESK_MINIO_ENDPOINT
|
||||
value: "http://minio-service:9000"
|
||||
- name: BYTEDESK_MINIO_ACCESS_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: bytedesk-secrets
|
||||
key: minio-root-user
|
||||
- name: BYTEDESK_MINIO_SECRET_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: bytedesk-secrets
|
||||
key: minio-root-password
|
||||
- name: BYTEDESK_MINIO_BUCKET_NAME
|
||||
value: "bytedesk"
|
||||
- name: BYTEDESK_MINIO_REGION
|
||||
value: "us-east-1"
|
||||
- name: BYTEDESK_MINIO_SECURE
|
||||
value: "false"
|
||||
|
||||
# AI 配置
|
||||
- name: SPRING_AI_MODEL_CHAT
|
||||
value: "zhipuai"
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 微语系统 Kubernetes 部署脚本
|
||||
set -e
|
||||
|
||||
echo "开始部署微语系统..."
|
||||
echo "开始部署微语系统(修复版)..."
|
||||
|
||||
# 检查 kubectl
|
||||
if ! command -v kubectl &> /dev/null; then
|
||||
@@ -19,29 +16,78 @@ kubectl apply -f namespace.yaml
|
||||
echo "应用密钥配置..."
|
||||
kubectl apply -f secret.yaml
|
||||
|
||||
# 删除旧的 PVC(如果存在)
|
||||
echo "清理旧的 PVC..."
|
||||
kubectl delete pvc mysql-pvc redis-pvc uploads-pvc elasticsearch-pvc artemis-pvc zipkin-pvc minio-pvc -n bytedesk --ignore-not-found=true
|
||||
|
||||
# 等待删除完成
|
||||
sleep 5
|
||||
|
||||
# 部署持久化存储
|
||||
echo "部署持久化存储..."
|
||||
kubectl apply -f pvc-mysql.yaml
|
||||
kubectl apply -f pvc-redis.yaml
|
||||
kubectl apply -f pvc-uploads.yaml
|
||||
|
||||
# 等待 PVC 绑定
|
||||
echo "等待 PVC 绑定..."
|
||||
kubectl wait --for=condition=bound pvc/mysql-pvc -n bytedesk --timeout=60s
|
||||
kubectl wait --for=condition=bound pvc/redis-pvc -n bytedesk --timeout=60s
|
||||
kubectl wait --for=condition=bound pvc/elasticsearch-pvc -n bytedesk --timeout=60s
|
||||
kubectl wait --for=condition=bound pvc/artemis-pvc -n bytedesk --timeout=60s
|
||||
kubectl wait --for=condition=bound pvc/zipkin-pvc -n bytedesk --timeout=60s
|
||||
kubectl wait --for=condition=bound pvc/minio-pvc -n bytedesk --timeout=60s
|
||||
|
||||
# 部署中间件
|
||||
echo "部署中间件..."
|
||||
kubectl apply -f mysql-deployment.yaml
|
||||
kubectl apply -f mysql-service.yaml
|
||||
kubectl apply -f redis-deployment.yaml
|
||||
kubectl apply -f redis-service.yaml
|
||||
kubectl apply -f elasticsearch-deployment.yaml
|
||||
kubectl apply -f artemis-deployment.yaml
|
||||
kubectl apply -f zipkin-deployment.yaml
|
||||
kubectl apply -f minio-deployment.yaml
|
||||
|
||||
# 等待中间件就绪
|
||||
# 等待中间件就绪(增加重试机制)
|
||||
echo "等待中间件就绪..."
|
||||
kubectl wait --for=condition=ready pod -l app=mysql -n bytedesk --timeout=300s
|
||||
kubectl wait --for=condition=ready pod -l app=redis -n bytedesk --timeout=300s
|
||||
for i in {1..10}; do
|
||||
echo "尝试 $i/10..."
|
||||
|
||||
# 检查 Pod 状态
|
||||
mysql_status=$(kubectl get pods -l app=mysql -n bytedesk -o jsonpath='{.items[0].status.phase}' 2>/dev/null || echo "Unknown")
|
||||
redis_status=$(kubectl get pods -l app=redis -n bytedesk -o jsonpath='{.items[0].status.phase}' 2>/dev/null || echo "Unknown")
|
||||
elasticsearch_status=$(kubectl get pods -l app=elasticsearch -n bytedesk -o jsonpath='{.items[0].status.phase}' 2>/dev/null || echo "Unknown")
|
||||
artemis_status=$(kubectl get pods -l app=artemis -n bytedesk -o jsonpath='{.items[0].status.phase}' 2>/dev/null || echo "Unknown")
|
||||
zipkin_status=$(kubectl get pods -l app=zipkin -n bytedesk -o jsonpath='{.items[0].status.phase}' 2>/dev/null || echo "Unknown")
|
||||
minio_status=$(kubectl get pods -l app=minio -n bytedesk -o jsonpath='{.items[0].status.phase}' 2>/dev/null || echo "Unknown")
|
||||
|
||||
echo "MySQL 状态: $mysql_status"
|
||||
echo "Redis 状态: $redis_status"
|
||||
echo "Elasticsearch 状态: $elasticsearch_status"
|
||||
echo "Artemis 状态: $artemis_status"
|
||||
echo "Zipkin 状态: $zipkin_status"
|
||||
echo "MinIO 状态: $minio_status"
|
||||
|
||||
if [[ "$mysql_status" == "Running" && "$redis_status" == "Running" && "$elasticsearch_status" == "Running" && "$artemis_status" == "Running" && "$zipkin_status" == "Running" && "$minio_status" == "Running" ]]; then
|
||||
echo "中间件启动成功!"
|
||||
break
|
||||
fi
|
||||
|
||||
if [[ $i -eq 10 ]]; then
|
||||
echo "警告: 中间件启动超时,继续部署主应用..."
|
||||
else
|
||||
sleep 30
|
||||
fi
|
||||
done
|
||||
|
||||
# 部署微语应用
|
||||
echo "部署微语应用..."
|
||||
kubectl apply -f configmap.yaml
|
||||
kubectl apply -f bytedesk-deployment.yaml
|
||||
kubectl apply -f bytedesk-service.yaml
|
||||
|
||||
echo "部署完成!"
|
||||
echo "查看状态: kubectl get pods -n bytedesk"
|
||||
echo "查看服务: kubectl get svc -n bytedesk"
|
||||
echo "查看服务: kubectl get svc -n bytedesk"
|
||||
echo "查看日志: kubectl logs -f deployment/mysql -n bytedesk"
|
||||
104
deploy/k8s/elasticsearch-deployment.yaml
Normal file
104
deploy/k8s/elasticsearch-deployment.yaml
Normal file
@@ -0,0 +1,104 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: elasticsearch
|
||||
namespace: bytedesk
|
||||
labels:
|
||||
app: elasticsearch
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: elasticsearch
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: elasticsearch
|
||||
spec:
|
||||
containers:
|
||||
- name: elasticsearch
|
||||
image: docker.elastic.co/elasticsearch/elasticsearch:8.18.0
|
||||
ports:
|
||||
- containerPort: 9200
|
||||
name: http
|
||||
- containerPort: 9300
|
||||
name: transport
|
||||
env:
|
||||
- name: node.name
|
||||
value: "bytedesk-es01"
|
||||
- name: cluster.name
|
||||
value: "bytedesk-es-cluster"
|
||||
- name: discovery.type
|
||||
value: "single-node"
|
||||
- name: bootstrap.memory_lock
|
||||
value: "true"
|
||||
- name: ES_JAVA_OPTS
|
||||
value: "-Xms512m -Xmx512m"
|
||||
- name: xpack.security.enabled
|
||||
value: "true"
|
||||
- name: ELASTIC_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: bytedesk-secrets
|
||||
key: elasticsearch-password
|
||||
volumeMounts:
|
||||
- name: elasticsearch-data
|
||||
mountPath: /usr/share/elasticsearch/data
|
||||
resources:
|
||||
requests:
|
||||
memory: "1Gi"
|
||||
cpu: "500m"
|
||||
limits:
|
||||
memory: "2Gi"
|
||||
cpu: "1000m"
|
||||
securityContext:
|
||||
capabilities:
|
||||
add:
|
||||
- IPC_LOCK
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /_cluster/health
|
||||
port: 9200
|
||||
initialDelaySeconds: 60
|
||||
periodSeconds: 30
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /_cluster/health
|
||||
port: 9200
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
volumes:
|
||||
- name: elasticsearch-data
|
||||
persistentVolumeClaim:
|
||||
claimName: elasticsearch-pvc
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: elasticsearch-service
|
||||
namespace: bytedesk
|
||||
labels:
|
||||
app: elasticsearch
|
||||
spec:
|
||||
selector:
|
||||
app: elasticsearch
|
||||
ports:
|
||||
- name: http
|
||||
port: 9200
|
||||
targetPort: 9200
|
||||
- name: transport
|
||||
port: 9300
|
||||
targetPort: 9300
|
||||
type: ClusterIP
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: elasticsearch-pvc
|
||||
namespace: bytedesk
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 10Gi
|
||||
99
deploy/k8s/minio-deployment.yaml
Normal file
99
deploy/k8s/minio-deployment.yaml
Normal file
@@ -0,0 +1,99 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: minio
|
||||
namespace: bytedesk
|
||||
labels:
|
||||
app: minio
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: minio
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: minio
|
||||
spec:
|
||||
containers:
|
||||
- name: minio
|
||||
image: minio/minio:latest
|
||||
ports:
|
||||
- containerPort: 9000
|
||||
name: api
|
||||
- containerPort: 9001
|
||||
name: console
|
||||
env:
|
||||
- name: MINIO_ROOT_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: bytedesk-secrets
|
||||
key: minio-root-user
|
||||
- name: MINIO_ROOT_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: bytedesk-secrets
|
||||
key: minio-root-password
|
||||
- name: TZ
|
||||
value: "Asia/Shanghai"
|
||||
command:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- minio server /data --console-address ":9001"
|
||||
volumeMounts:
|
||||
- name: minio-data
|
||||
mountPath: /data
|
||||
resources:
|
||||
requests:
|
||||
memory: "256Mi"
|
||||
cpu: "100m"
|
||||
limits:
|
||||
memory: "512Mi"
|
||||
cpu: "250m"
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /minio/health/live
|
||||
port: 9000
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 30
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /minio/health/ready
|
||||
port: 9000
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 10
|
||||
volumes:
|
||||
- name: minio-data
|
||||
persistentVolumeClaim:
|
||||
claimName: minio-pvc
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: minio-service
|
||||
namespace: bytedesk
|
||||
labels:
|
||||
app: minio
|
||||
spec:
|
||||
selector:
|
||||
app: minio
|
||||
ports:
|
||||
- name: api
|
||||
port: 9000
|
||||
targetPort: 9000
|
||||
- name: console
|
||||
port: 9001
|
||||
targetPort: 9001
|
||||
type: ClusterIP
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: minio-pvc
|
||||
namespace: bytedesk
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 10Gi
|
||||
@@ -9,4 +9,4 @@ spec:
|
||||
resources:
|
||||
requests:
|
||||
storage: 20Gi
|
||||
storageClassName: "" # 使用默认存储类,请根据实际情况修改
|
||||
storageClassName: "standard" # 使用默认存储类
|
||||
@@ -9,4 +9,4 @@ spec:
|
||||
resources:
|
||||
requests:
|
||||
storage: 5Gi
|
||||
storageClassName: "" # 使用默认存储类,请根据实际情况修改
|
||||
storageClassName: "standard" # 使用默认存储类
|
||||
@@ -9,4 +9,4 @@ spec:
|
||||
resources:
|
||||
requests:
|
||||
storage: 50Gi
|
||||
storageClassName: "" # 使用默认存储类,请根据实际情况修改
|
||||
storageClassName: "standard" # 使用默认存储类
|
||||
@@ -21,8 +21,8 @@ data:
|
||||
jwt-secret-key: MWRmYWY4ZDAwNDIwN2I2MjhhOWE2Yjg1OWM0MjlmNDlhOWE3ZWFkOWZkODE2MWMxZTYwODQ3YWVlZjA2ZGJkMg== # 1dfaf8d004207b628a9a6b859c429f49a9a7ead9fd8161c1e60847aeef06dbd2
|
||||
|
||||
# MinIO 配置 (base64 encoded)
|
||||
minio-access-key: bWluaW9hZG1pbg== # minioadmin
|
||||
minio-secret-key: bWluaW9hZG1pbjEyMw== # minioadmin123
|
||||
minio-root-user: bWluaW9hZG1pbg== # minioadmin
|
||||
minio-root-password: bWluaW9hZG1pbjEyMw== # minioadmin123
|
||||
|
||||
# Artemis 配置 (base64 encoded)
|
||||
artemis-username: YWRtaW4= # admin
|
||||
|
||||
77
deploy/k8s/zipkin-deployment.yaml
Normal file
77
deploy/k8s/zipkin-deployment.yaml
Normal file
@@ -0,0 +1,77 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: zipkin
|
||||
namespace: bytedesk
|
||||
labels:
|
||||
app: zipkin
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: zipkin
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: zipkin
|
||||
spec:
|
||||
containers:
|
||||
- name: zipkin
|
||||
image: openzipkin/zipkin:latest
|
||||
ports:
|
||||
- containerPort: 9411
|
||||
name: http
|
||||
volumeMounts:
|
||||
- name: zipkin-data
|
||||
mountPath: /data
|
||||
resources:
|
||||
requests:
|
||||
memory: "256Mi"
|
||||
cpu: "100m"
|
||||
limits:
|
||||
memory: "512Mi"
|
||||
cpu: "250m"
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 9411
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 30
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 9411
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 10
|
||||
volumes:
|
||||
- name: zipkin-data
|
||||
persistentVolumeClaim:
|
||||
claimName: zipkin-pvc
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: zipkin-service
|
||||
namespace: bytedesk
|
||||
labels:
|
||||
app: zipkin
|
||||
spec:
|
||||
selector:
|
||||
app: zipkin
|
||||
ports:
|
||||
- name: http
|
||||
port: 9411
|
||||
targetPort: 9411
|
||||
type: ClusterIP
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: zipkin-pvc
|
||||
namespace: bytedesk
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
Reference in New Issue
Block a user