Files
orbstack-k8s-infra/scripts/auto-start-orbstack.sh
brunoandClaude 0ec52c4865 feat: 添加 Kubernetes 集群全自动运维功能
实现完整的自动化运维方案,包括自动启动、健康检查和数据备份。

## 新增功能

### 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]>
2025-11-25 07:07:01 +08:00

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 "=========================================="