实现完整的自动化运维方案,包括自动启动、健康检查和数据备份。 ## 新增功能 ### 1. OrbStack 自动启动 - macOS 登录时自动启动 OrbStack - 等待 Kubernetes 集群就绪 - 检查关键服务状态 - 配置文件:scripts/auto-start-orbstack.sh - LaunchAgent:scripts/com.orbstack.auto-start.plist ### 2. 定时健康检查 - 每 15 分钟自动检查集群状态 - 检查所有关键 Pod、Service、Ingress - 自动重启异常的 Deployment/StatefulSet - 详细日志记录 - 脚本:scripts/health-check.sh ### 3. 定时数据备份 - 每天凌晨 2:00 自动备份 - 备份内容: - PostgreSQL 所有数据库 - Redis RDB 快照 - Kubernetes 配置(Ingress, ConfigMap, Secret, PVC) - Helm Values 文件 - 自动压缩和清理(保留 7 天) - 脚本:scripts/auto-backup.sh ### 4. 一键配置脚本 - scripts/setup-automation.sh - 自动配置所有 LaunchAgent 和 crontab - 测试所有脚本运行状态 - 显示配置摘要 ## 文档 - 新增详细文档:docs/automation-guide.md - 包含使用说明、故障排查、高级配置 - 更新 README.md 添加自动化部分 ## 使用方法 ```bash # 一键配置所有自动化功能 ./scripts/setup-automation.sh # 手动运行各个脚本 ./scripts/health-check.sh # 健康检查 ./scripts/auto-backup.sh # 立即备份 ``` ## 日志位置 - OrbStack 自动启动:~/.orbstack-auto-start.log - 健康检查:~/.k8s-health-check.log - 数据备份:~/k8s-backups/backup.log 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
74 lines
1.8 KiB
Bash
Executable File
74 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# OrbStack 自动启动脚本
|
|
# 用于 macOS 登录时自动启动 OrbStack 和检查 Kubernetes 集群
|
|
|
|
set -e
|
|
|
|
LOG_FILE="$HOME/.orbstack-auto-start.log"
|
|
|
|
log() {
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
|
|
}
|
|
|
|
log "=========================================="
|
|
log "开始 OrbStack 自动启动流程"
|
|
log "=========================================="
|
|
|
|
# 1. 检查 OrbStack 是否已经运行
|
|
if pgrep -x "OrbStack" > /dev/null; then
|
|
log "✓ OrbStack 已经在运行"
|
|
else
|
|
log "→ 启动 OrbStack..."
|
|
open -a OrbStack
|
|
|
|
# 等待 OrbStack 启动(最多等待 60 秒)
|
|
for i in {1..60}; do
|
|
if pgrep -x "OrbStack" > /dev/null; then
|
|
log "✓ OrbStack 启动成功(耗时 ${i} 秒)"
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
if ! pgrep -x "OrbStack" > /dev/null; then
|
|
log "✗ OrbStack 启动失败"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# 2. 等待 Kubernetes 就绪
|
|
log "→ 等待 Kubernetes 就绪..."
|
|
sleep 10
|
|
|
|
for i in {1..30}; do
|
|
if kubectl cluster-info &>/dev/null; then
|
|
log "✓ Kubernetes 集群就绪(耗时 ${i}0 秒)"
|
|
break
|
|
fi
|
|
sleep 10
|
|
done
|
|
|
|
if ! kubectl cluster-info &>/dev/null; then
|
|
log "✗ Kubernetes 集群未就绪"
|
|
exit 1
|
|
fi
|
|
|
|
# 3. 检查关键 Pod 状态
|
|
log "→ 检查关键服务状态..."
|
|
|
|
check_namespace() {
|
|
local ns=$1
|
|
local pod_count=$(kubectl get pods -n "$ns" --no-headers 2>/dev/null | wc -l)
|
|
local ready_count=$(kubectl get pods -n "$ns" --no-headers 2>/dev/null | grep "Running" | wc -l)
|
|
|
|
log " - Namespace: $ns | Total: $pod_count | Running: $ready_count"
|
|
}
|
|
|
|
check_namespace "infra"
|
|
check_namespace "data"
|
|
check_namespace "observability"
|
|
|
|
log "=========================================="
|
|
log "OrbStack 自动启动完成"
|
|
log "=========================================="
|