149 lines
4.1 KiB
Bash
Executable File
149 lines
4.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# MinIO 部署验证脚本
|
|
|
|
set -e
|
|
|
|
echo "========================================="
|
|
echo " MinIO 文件服务器验证"
|
|
echo "========================================="
|
|
echo ""
|
|
|
|
# 颜色定义
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# 1. 检查 namespace
|
|
echo -e "${YELLOW}1. 检查 Storage Namespace${NC}"
|
|
if kubectl get ns storage &> /dev/null; then
|
|
echo -e "${GREEN}✓ Namespace 'storage' 存在${NC}"
|
|
else
|
|
echo -e "${RED}✗ Namespace 'storage' 不存在${NC}"
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
|
|
# 2. 检查 Pod 状态
|
|
echo -e "${YELLOW}2. 检查 MinIO Pod 状态${NC}"
|
|
kubectl get pods -n storage
|
|
echo ""
|
|
|
|
POD_STATUS=$(kubectl get pods -n storage -l app=minio -o jsonpath='{.items[0].status.phase}' 2>/dev/null)
|
|
if [ "$POD_STATUS" == "Running" ]; then
|
|
echo -e "${GREEN}✓ MinIO Pod 运行正常${NC}"
|
|
else
|
|
echo -e "${RED}✗ MinIO Pod 状态异常: $POD_STATUS${NC}"
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
|
|
# 3. 检查 Services
|
|
echo -e "${YELLOW}3. 检查 MinIO Services${NC}"
|
|
kubectl get svc -n storage
|
|
echo ""
|
|
|
|
# 4. 检查 PVC
|
|
echo -e "${YELLOW}4. 检查持久化存储${NC}"
|
|
kubectl get pvc -n storage
|
|
echo ""
|
|
|
|
PVC_STATUS=$(kubectl get pvc minio-storage -n storage -o jsonpath='{.status.phase}' 2>/dev/null)
|
|
if [ "$PVC_STATUS" == "Bound" ]; then
|
|
echo -e "${GREEN}✓ PVC 已绑定${NC}"
|
|
else
|
|
echo -e "${RED}✗ PVC 状态异常: $PVC_STATUS${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# 5. 检查 Buckets
|
|
echo -e "${YELLOW}5. 检查 MinIO Buckets${NC}"
|
|
|
|
# 获取 MinIO 凭据
|
|
MINIO_USER=$(kubectl get secret minio-credentials -n storage -o jsonpath='{.data.root-user}' | base64 -d)
|
|
MINIO_PASS=$(kubectl get secret minio-credentials -n storage -o jsonpath='{.data.root-password}' | base64 -d)
|
|
|
|
echo "正在检查 buckets..."
|
|
BUCKETS=$(kubectl exec -n storage deployment/minio -- sh -c "
|
|
mc alias set myminio http://localhost:9000 $MINIO_USER $MINIO_PASS > /dev/null 2>&1
|
|
mc ls myminio
|
|
" 2>/dev/null)
|
|
|
|
if echo "$BUCKETS" | grep -q "test-reports"; then
|
|
echo -e "${GREEN}✓ Bucket 'test-reports' 存在${NC}"
|
|
else
|
|
echo -e "${RED}✗ Bucket 'test-reports' 不存在${NC}"
|
|
fi
|
|
|
|
if echo "$BUCKETS" | grep -q "artifacts"; then
|
|
echo -e "${GREEN}✓ Bucket 'artifacts' 存在${NC}"
|
|
else
|
|
echo -e "${RED}✗ Bucket 'artifacts' 不存在${NC}"
|
|
fi
|
|
|
|
if echo "$BUCKETS" | grep -q "cache"; then
|
|
echo -e "${GREEN}✓ Bucket 'cache' 存在${NC}"
|
|
else
|
|
echo -e "${RED}✗ Bucket 'cache' 不存在${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# 6. 测试上传/下载
|
|
echo -e "${YELLOW}6. 测试文件上传/下载${NC}"
|
|
|
|
TEST_FILE="/tmp/minio-test-$(date +%s).txt"
|
|
echo "MinIO Test File - $(date)" > $TEST_FILE
|
|
|
|
kubectl exec -n storage deployment/minio -- sh -c "
|
|
mc alias set myminio http://localhost:9000 $MINIO_USER $MINIO_PASS > /dev/null 2>&1
|
|
echo 'Test file content' > /tmp/test.txt
|
|
mc cp /tmp/test.txt myminio/test-reports/
|
|
mc ls myminio/test-reports/test.txt
|
|
" 2>&1 | grep -q "test.txt"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo -e "${GREEN}✓ 文件上传/下载测试成功${NC}"
|
|
else
|
|
echo -e "${RED}✗ 文件上传/下载测试失败${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# 7. 访问信息
|
|
echo "========================================="
|
|
echo "验证总结"
|
|
echo "========================================="
|
|
echo ""
|
|
echo -e "${GREEN}✅ MinIO 部署验证完成!${NC}"
|
|
echo ""
|
|
echo "访问信息:"
|
|
echo " - MinIO Console: http://localhost:31001"
|
|
echo " - MinIO API: http://localhost:31000"
|
|
echo " - 内部地址: http://minio.storage.svc.cluster.local:9000"
|
|
echo ""
|
|
echo "默认凭据:"
|
|
echo " - 用户名: $MINIO_USER"
|
|
echo " - 密码: $MINIO_PASS"
|
|
echo ""
|
|
echo "已创建的 Buckets:"
|
|
echo "$BUCKETS"
|
|
echo ""
|
|
echo "快速测试命令:"
|
|
echo " # 安装 mc 客户端"
|
|
echo " brew install minio/stable/mc"
|
|
echo ""
|
|
echo " # 配置别名"
|
|
echo " mc alias set myminio http://localhost:31000 $MINIO_USER $MINIO_PASS"
|
|
echo ""
|
|
echo " # 列出 buckets"
|
|
echo " mc ls myminio"
|
|
echo ""
|
|
echo " # 上传文件"
|
|
echo " mc cp /path/to/file myminio/test-reports/"
|
|
echo ""
|
|
echo "下一步:"
|
|
echo " 1. 访问 MinIO Console (http://localhost:31001)"
|
|
echo " 2. 查看 MINIO-README.md 了解 Gitea Runner 集成"
|
|
echo " 3. 配置 Gitea Actions workflow 上传测试报告"
|
|
echo ""
|