# K8s 服務遷移指南

## 遷移目標

將 Docker 服務遷移到 K8s，保留所有配置和資料。

## 服務清單

| 服務 | 來源 | 目標 | 資料位置 |
|------|------|------|---------|
| n8n | Docker | K8s tools namespace | /var/lib/docker/volumes/n8n_data |
| Superset | Docker | K8s tools namespace | superset-postgres + superset_home |

## 遷移步驟

### 步驟 1：備份資料

```bash
# n8n 資料備份
ssh wooo@192.168.0.110 "
  mkdir -p /home/wooo/backups/k8s-migration
  docker run --rm -v n8n_data:/data -v /home/wooo/backups/k8s-migration:/backup \
    alpine tar czf /backup/n8n_data_$(date +%Y%m%d).tar.gz -C /data .
"

# Superset PostgreSQL 備份
ssh wooo@192.168.0.110 "
  docker exec superset-postgres pg_dump -U superset superset > \
    /home/wooo/backups/k8s-migration/superset_db_$(date +%Y%m%d).sql
"

# Superset home 備份
ssh wooo@192.168.0.110 "
  docker run --rm -v superset_superset_home:/data -v /home/wooo/backups/k8s-migration:/backup \
    alpine tar czf /backup/superset_home_$(date +%Y%m%d).tar.gz -C /data .
"
```

### 步驟 2：部署 K8s 服務

```bash
# 建立 namespace
kubectl apply -f k8s/tools/00-namespace.yaml

# 部署 n8n
kubectl apply -f k8s/tools/01-n8n.yaml

# 部署 Superset
kubectl apply -f k8s/tools/02-superset.yaml
```

### 步驟 3：還原資料

```bash
# 找到 PVC 的實際路徑
N8N_PV=$(kubectl get pvc n8n-data -n tools -o jsonpath='{.spec.volumeName}')
N8N_PATH="/var/lib/rancher/k3s/storage/${N8N_PV}"

# 還原 n8n 資料
ssh wooo@192.168.0.110 "
  sudo tar xzf /home/wooo/backups/k8s-migration/n8n_data_*.tar.gz -C ${N8N_PATH}
"
```

### 步驟 4：更新 Nginx

更新 /etc/nginx/sites-enabled/monitor 指向 K8s Services

### 步驟 5：停止 Docker 服務

```bash
docker stop momo-n8n momo-superset superset-postgres superset-redis
docker rm momo-n8n momo-superset superset-postgres superset-redis
```

## 回滾計畫

如果遷移失敗，從備份還原 Docker 容器：

```bash
# 還原 n8n
docker run -d --name momo-n8n --restart unless-stopped \
  -p 5678:5678 \
  -e N8N_BASIC_AUTH_USER=admin \
  -e N8N_BASIC_AUTH_PASSWORD=Wooo_N8n_2026 \
  -e N8N_RUNNERS_DISABLED=true \
  -v n8n_data:/home/node/.n8n \
  n8nio/n8n:latest

# 還原 Superset
cd /home/wooo/momo_pro_system/docker/superset
docker compose up -d
```
