- 更新 Gitea runner 配置,支持优化的 CI/CD 环境 - 完善 Harbor HTTPS 配置和远程访问支持 - 优化 Harbor 日志配置,改用 json-file 驱动 - 添加 Docker 构建加速和代理缓存脚本 - 新增完整的文档和使用指南 - 添加 AI 开发工具集成配置 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
123 lines
3.7 KiB
Bash
Executable File
123 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Harbor 健康检查脚本
|
|
|
|
set -e
|
|
|
|
HARBOR_REGISTRY="192.168.1.83:8443"
|
|
HARBOR_USER="admin"
|
|
HARBOR_PASS="admin123"
|
|
|
|
echo "🏥 Harbor 健康检查开始..."
|
|
echo ""
|
|
|
|
# 检查 Docker 服务
|
|
echo "📊 Docker 服务状态:"
|
|
if docker info > /dev/null 2>&1; then
|
|
echo " ✅ Docker 服务正常"
|
|
else
|
|
echo " ❌ Docker 服务异常"
|
|
exit 1
|
|
fi
|
|
|
|
# 检查 Harbor 容器状态
|
|
echo ""
|
|
echo "📦 Harbor 容器状态:"
|
|
container_status=$(docker-compose ps)
|
|
echo "$container_status"
|
|
|
|
# 检查健康服务数量
|
|
healthy_count=$(echo "$container_status" | grep -c "healthy\|Up.*healthy" || echo "0")
|
|
total_count=$(echo "$container_status" | wc -l)
|
|
|
|
echo ""
|
|
echo "📈 服务状态: $healthy_count/$((total_count-1)) 服务健康"
|
|
|
|
# 检查 Harbor API
|
|
echo ""
|
|
echo "🌐 API 连接测试:"
|
|
if curl -k -s "${HARBOR_REGISTRY}/api/v2.0/systeminfo" > /dev/null; then
|
|
echo " ✅ Harbor API 连接正常"
|
|
|
|
# 获取 Harbor 版本信息
|
|
version_info=$(curl -k -s "${HARBOR_REGISTRY}/api/v2.0/systeminfo" | jq -r '.harbor_version')
|
|
echo " 📋 Harbor 版本: $version_info"
|
|
else
|
|
echo " ❌ Harbor API 连接失败"
|
|
fi
|
|
|
|
# 检查项目状态
|
|
echo ""
|
|
echo "📁 项目状态:"
|
|
projects=$(curl -k -s -u "${HARBOR_USER}:${HARBOR_PASS}" "${HARBOR_REGISTRY}/api/v2.0/projects" 2>/dev/null)
|
|
if [ $? -eq 0 ] && [ -n "$projects" ]; then
|
|
project_count=$(echo "$projects" | jq '. | length' 2>/dev/null || echo "0")
|
|
echo " 📊 项目数量: $project_count"
|
|
|
|
if [ "$project_count" -gt 0 ]; then
|
|
echo " 📋 项目列表:"
|
|
echo "$projects" | jq -r '.[].name' 2>/dev/null | head -10 | sed 's/^/ - /'
|
|
fi
|
|
else
|
|
echo " ❌ 无法获取项目列表"
|
|
fi
|
|
|
|
# 检查 Web 界面
|
|
echo ""
|
|
echo "🖥️ Web 界面测试:"
|
|
if curl -k -s "https://localhost:8443/" | grep -q "Harbor"; then
|
|
echo " ✅ Web 界面 HTML 可访问"
|
|
else
|
|
echo " ❌ Web 界面 HTML 无法访问"
|
|
fi
|
|
|
|
if curl -k -s -I "https://localhost:8443/styles.75cb4562f0127450.css" | grep -q "200"; then
|
|
echo " ✅ 静态资源可访问"
|
|
else
|
|
echo " ❌ 静态资源无法访问"
|
|
fi
|
|
|
|
# 检查镜像推送拉取功能
|
|
echo ""
|
|
echo "🔄 镜像功能测试:"
|
|
if echo "$HARBOR_PASS" | docker login "${HARBOR_REGISTRY}" -u "$HARBOR_USER" --password-stdin > /dev/null 2>&1; then
|
|
echo " ✅ Docker 登录成功"
|
|
|
|
# 测试拉取已知镜像
|
|
if docker pull "${HARBOR_REGISTRY}/library/test-image:latest" > /dev/null 2>&1; then
|
|
echo " ✅ 镜像拉取成功"
|
|
else
|
|
echo " ⚠️ 镜像拉取失败(可能没有测试镜像)"
|
|
fi
|
|
else
|
|
echo " ❌ Docker 登录失败"
|
|
fi
|
|
|
|
# 检查存储使用情况
|
|
echo ""
|
|
echo "💾 存储状态:"
|
|
if [ -d "/Users/brunogao/ops/data/harbor" ]; then
|
|
harbor_size=$(du -sh /Users/brunogao/ops/data/harbor | cut -f1)
|
|
echo " 📊 Harbor 数据目录大小: $harbor_size"
|
|
|
|
# 检查磁盘空间
|
|
disk_usage=$(df -h /Users/brunogao/ops/data/harbor | tail -1 | awk '{print $5}' | sed 's/%//')
|
|
if [ "$disk_usage" -gt 80 ]; then
|
|
echo " ⚠️ 磁盘使用率高: ${disk_usage}%"
|
|
else
|
|
echo " ✅ 磁盘使用正常: ${disk_usage}%"
|
|
fi
|
|
else
|
|
echo " ❌ Harbor 数据目录不存在"
|
|
fi
|
|
|
|
# 总结
|
|
echo ""
|
|
echo "🎯 健康检查总结:"
|
|
echo " 📋 API 状态: $(curl -k -s "${HARBOR_REGISTRY}/api/v2.0/systeminfo" > /dev/null && echo "正常" || echo "异常")"
|
|
echo " 🖥️ Web 界面: $(curl -k -s "https://localhost:8443/" | grep -q "Harbor" && echo "正常" || echo "异常")"
|
|
echo " 🔄 镜像功能: $(echo "$HARBOR_PASS" | docker login "${HARBOR_REGISTRY}" -u "$HARBOR_USER" --password-stdin > /dev/null 2>&1 && echo "正常" || echo "异常")"
|
|
|
|
echo ""
|
|
echo "💡 如果 Web 界面无法访问,请参考: FIX_WEB_ACCESS.md"
|
|
echo "🔗 快速访问: ./scripts/harbor-web.sh" |