Files
weiyu/deploy/k8s/deploy.sh
2025-08-04 11:26:52 +08:00

93 lines
3.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
echo "开始部署微语系统(修复版)..."
# 检查 kubectl
if ! command -v kubectl &> /dev/null; then
echo "错误: kubectl 未安装"
exit 1
fi
# 创建命名空间
echo "创建命名空间..."
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 "等待中间件就绪..."
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 logs -f deployment/mysql -n bytedesk"