chore: 对齐 00-05 §2 的部署与验证脚本
- 新增 deploy-lab.sh(k3s/longhorn/nginx 铺栈)与 ssh/run-phase2-k3s-on-ylc61-as-jack.sh - verify.sh:flow/preflight、VERIFY_TEARDOWN 默认、注释与 §2 对应 - 更新 smoke-verify、README、.env.verify.example、根 README 与主要 playbook 头注释 - k3s-delete-lab-stacks 标明重度清场语义 Made-with: Cursor
This commit is contained in:
@@ -1,70 +1,85 @@
|
||||
# Scripts 总览
|
||||
|
||||
本目录集中维护通用运维脚本。统一约定:**在仓库根目录执行**,使用 `./scripts/...` 路径调用。
|
||||
本目录集中维护通用运维脚本。约定:**在仓库根目录执行**,使用 `./scripts/...` 路径调用。
|
||||
|
||||
流程说明与「部署 / 验证」分工以 [`docs/00-05-测试与验证框架.md`](../docs/00-05-测试与验证框架.md) **§2 自动化验证流程** 为准;下表与之一一对应。
|
||||
|
||||
| §2 步骤 | 含义 | 本仓库入口 |
|
||||
|--------|------|------------|
|
||||
| 1 接入 | inventory、仓库同步、加载 `.env.verify` | 手工;`verify.sh` / `deploy-lab.sh` 会自动 `source scripts/.env.verify`(若存在) |
|
||||
| 2 环境/清理 | 轻量:各 verify 的 teardown;重度:清实验负载 / 重装 K3s | 轻量:`VERIFY_TEARDOWN`(默认 1);重度:`k3s-delete-lab-stacks.sh`、文档中的 `k3s-uninstall`(**勿**默认进 `run-all`) |
|
||||
| 3 部署 | K3s、Longhorn、nginx 矩阵等铺栈 | **`./scripts/deploy-lab.sh`**(`k3s` / `longhorn` / `nginx-matrix` / `nginx-matrix-tls`) |
|
||||
| 4~5 断言与收尾 | 按 doc 目标 kubectl/curl;本篇 teardown | **`./scripts/verify.sh`** `run` / `run-all` |
|
||||
| 6 一键串联 | 按矩阵顺序跑全部 verify | **`./scripts/verify.sh run-all`** |
|
||||
|
||||
辅助命令:
|
||||
|
||||
- `./scripts/verify.sh flow` — 打印与 §2 对齐的流程说明(不接 Ansible)。
|
||||
- `./scripts/verify.sh preflight` — 检查 `ansible-playbook`、矩阵、`inventory`,并对 `k3s_server` 执行 `ping`;若已装集群可设 `VERIFY_PREFLIGHT_CLUSTER=1` 再执行 `kubectl get nodes`。
|
||||
|
||||
## 验证编排环境变量(可选)
|
||||
|
||||
复制 [`scripts/.env.verify.example`](.env.verify.example) 为 `scripts/.env.verify` 并填写本机值;**勿提交** `scripts/.env.verify`(已在仓库 `.gitignore` 中忽略)。其中 **`ONECLOUD_SSH`**(默认 `ssh … onecloud`)用于矩阵里**集群外**第三方 curl 等验证,与 `SKIP_*` 无关;**`ARMV7_SSH` / `ARMV7_NFS_SSH`** 用于 `01-03` / `01-05` 实机,同样不属「可忽略」项,与 `SKIP_ARMV7=0` 配对使用。**`ACME_EMAIL`** 供 Traefik ACME(`03-02` / `03-03`);另有 **`VERIFY_TLS_HOSTS`**、`K3S_SERVER_HOSTNAME`、`TIMEOUT_SEC`(`test-ssh.sh` 已读)、`LONGHORN_NAMESPACE` 等,完整列表与「和现有 `scripts/*.sh` 的对照」见 [`.env.verify.example`](.env.verify.example) 文末注释。加载示例:
|
||||
复制 [`scripts/.env.verify.example`](.env.verify.example) 为 `scripts/.env.verify` 并填写本机值;**勿提交** `scripts/.env.verify`(已在仓库 `.gitignore` 中忽略)。
|
||||
|
||||
其中 **`ONECLOUD_SSH`** 用于矩阵里**集群外**第三方 curl 等;**`ARMV7_SSH` / `ARMV7_NFS_SSH`** 用于 `01-03` / `01-05` 实机;**`ACME_EMAIL`** 供 Traefik ACME(`03-02` / `03-03`);另有 **`VERIFY_TLS_HOSTS`**、`K3S_SERVER_HOSTNAME`、`TIMEOUT_SEC`、`LONGHORN_NAMESPACE` 等,完整列表见 [`.env.verify.example`](.env.verify.example) 文末注释。
|
||||
|
||||
```bash
|
||||
set -a && source scripts/.env.verify && set +a
|
||||
```
|
||||
|
||||
## 验证框架状态(自动化已移除)
|
||||
## 部署 K3s(推荐在控制节点或 Linux 工作机)
|
||||
|
||||
旧的验证矩阵编排与静态校验 CI 已下线;`docs/00-02-验证矩阵.md` 仍作为“待验证列表/状态记录”,当前以手工验证为准。
|
||||
|
||||
如果你要重新落地自动化验证框架,请以设计说明 [`docs/00-05-测试与验证框架.md`](../docs/00-05-测试与验证框架.md) 中的分层与 `doc_id` 映射约定为基线。
|
||||
|
||||
### 用 ylc61 跑 Ansible 装 K3s(推荐)
|
||||
|
||||
如果办公机(Windows)没有 `ansible-playbook`,有两种方式:
|
||||
|
||||
1. 方式 A:把仓库同步到 `ylc61`,然后在 `ylc61` 上直接跑 playbook
|
||||
1. 在仓库根(或 `cd ansible` 后改用相对路径)执行 **`./scripts/deploy-lab.sh k3s`**。若需先准备数据盘,在 **本机或 `.env.verify`** 中设 `K3S_PREPARE_STORAGE=true`(会传 `-e k3s_prepare_storage=true` 跑 `k3s-prepare-storage.yml`)。
|
||||
2. 办公机无 Ansible 时,可 SSH 到 ylc61 再执行上述命令,或使用:
|
||||
|
||||
```bash
|
||||
sudo dnf install -y ansible # Fedora;未装过时
|
||||
cd ~/实验室建设 # 按你实际路径;若在 /home/jack 则相应 cd
|
||||
cd ansible
|
||||
# 可选:第二块盘 → /storage 先准备
|
||||
# ansible-playbook -i inventory.ini playbooks/k3s-prepare-storage.yml
|
||||
ansible-playbook -i inventory.ini playbooks/k3s-init-and-install.yml
|
||||
```
|
||||
|
||||
2. 方式 B:从办公机一键触发(内部通过 SSH 在 `ylc61` 上以 `jack` 身份执行)
|
||||
|
||||
```bash
|
||||
# 可选:先准备 /storage
|
||||
export K3S_PREPARE_STORAGE=false # 或 true
|
||||
export K3S_PREPARE_STORAGE=false # 或 true
|
||||
./scripts/ssh/run-phase2-k3s-on-ylc61-as-jack.sh
|
||||
```
|
||||
|
||||
**密钥在 jack**:`inventory.ini` 中私钥路径会随执行用户变化。上述方式会确保在 `ylc61` 以 `jack` 身份运行,避免把私钥解析到 `/root/.ssh/`。
|
||||
环境变量 **`LAB_REPO_ROOT`**(仅 SSH 包装脚本使用)可指定远端仓库路径,默认 `/home/jack/实验室建设`。
|
||||
|
||||
## 目录
|
||||
- `scripts/k3s-delete-lab-stacks.sh`
|
||||
- **按集群里实际资源**遍历删除:用 `kubectl get` 枚举各命名空间下的 Deployment/Service/Ingress/IngressRoute 等再 `kubectl delete`(**不读仓库 YAML 目录**);默认跳过 `kube-system` 等系统命名空间;`--preview` 只列资源;`--namespaces` 限定 NS;`--with-pvc` / `--with-configmaps` / `--with-secrets`(需 `jq`)按需打开
|
||||
- `scripts/cloudflare-delete-acme-challenge-dns.sh`
|
||||
- 批量删除 Cloudflare 中 `_acme-challenge` 相关 DNS 记录(ACME 残留);环境变量或脚本内 `DEFAULT_*` 配置二选一,环境变量优先;`--dry-run` 仅列出不删除
|
||||
- `scripts/ssh/setup-k3s-workers-ssh.sh`
|
||||
- 为 Ansible 自动化准备 SSH:为所有 k3s 节点配置 jack + root 公钥及每节点私钥(配合 `docs/01-06-节点初始化-ansible-实践.md`)
|
||||
- `scripts/ssh/test-ssh.sh`
|
||||
- 验证 worker/client SSH key 登录与 sudo 可用性
|
||||
**密钥与执行用户**:`inventory.ini` 中私钥路径随执行用户变化;在 ylc61 上以 `jack` 执行可避免解析到 `/root/.ssh/`。
|
||||
|
||||
## 验证矩阵(run-all / 抽样 smoke)
|
||||
|
||||
```bash
|
||||
./scripts/verify.sh preflight
|
||||
export nginx_entry_base=http://192.168.2.61
|
||||
./scripts/verify.sh run-all
|
||||
```
|
||||
|
||||
从办公机经 SSH 在远端仓库根跑抽样用例:
|
||||
|
||||
```bash
|
||||
./scripts/ssh/smoke-verify-matrix-on-ylc61.sh
|
||||
```
|
||||
|
||||
可用 **`VERIFY_REPO_ROOT`** 指定远端路径(默认 `/home/jack/实验室建设`)。
|
||||
|
||||
## 目录与脚本对照
|
||||
|
||||
- **`verify.sh`** — 矩阵验收:`flow` / `preflight` / `list` / `run` / `run-all`
|
||||
- **`deploy-lab.sh`** — 安装/铺栈:`k3s` / `longhorn` / `nginx-matrix` / `nginx-matrix-tls`
|
||||
- **`ssh/run-phase2-k3s-on-ylc61-as-jack.sh`** — 办公机触发远端 `deploy-lab.sh k3s`
|
||||
- **`ssh/smoke-verify-matrix-on-ylc61.sh`** — 办公机触发远端若干 `verify.sh run`
|
||||
- **`k3s-delete-lab-stacks.sh`** — 按 kubectl 实况清命名空间负载(重度清场,非默认 teardown)
|
||||
- **`cloudflare-delete-acme-challenge-dns.sh`** — 清理 CF 上 `_acme-challenge` DNS
|
||||
- **`ssh/setup-k3s-workers-ssh.sh`** — 为 K3s 节点预配 SSH(配合 `01-06`)
|
||||
- **`ssh/test-ssh.sh`** — 验证 worker 密钥登录与 sudo
|
||||
|
||||
## 从仓库根执行示例
|
||||
|
||||
```bash
|
||||
# 1) 初始化 worker SSH 密钥(可选)
|
||||
./scripts/ssh/setup-k3s-workers-ssh.sh
|
||||
|
||||
# 2) 验证 SSH(建议)
|
||||
./scripts/ssh/test-ssh.sh
|
||||
|
||||
# 3) 执行批量部署/配置(示例)
|
||||
cd ansible
|
||||
ansible-playbook -i inventory.ini playbooks/k3s-init-and-install.yml
|
||||
./scripts/deploy-lab.sh k3s
|
||||
./scripts/verify.sh preflight
|
||||
./scripts/verify.sh run 02-05
|
||||
```
|
||||
|
||||
## 说明文档
|
||||
|
||||
- 主文档入口详见 `docs/00-00-构建总览.md`
|
||||
- 验证框架:[`docs/00-05-测试与验证框架.md`](../docs/00-05-测试与验证框架.md)
|
||||
- 验证矩阵状态:[`docs/00-02-验证矩阵.md`](../docs/00-02-验证矩阵.md)
|
||||
- 主文档入口:`docs/00-00-构建总览.md`(若存在)
|
||||
|
||||
Reference in New Issue
Block a user