# infrastructure **Repository Path**: secosun/infrastructure ## Basic Information - **Project Name**: infrastructure - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-15 - **Last Updated**: 2026-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基础设施 · 入口索引 > 本目录是**部署与运维**的唯一入口。新会话请按下面顺序读。 > 最后更新:2026-09-18 --- ## 0. 先建立这张心智图 ``` 一套代码(同一份源码 / 同一个 Docker 镜像) │ ┌─────────────────────┴─────────────────────┐ ▼ ▼ 【开发/测试档】裸机 125 【生产档】k8s 集群 ───────────────────────── ──────────────────────── 白牌机 · systemd 直跑 R730 上的 ESXi → 7 节点 k8s 即改即跑:本地 build → 同步 → 重启 helm 编排,prod 命名空间 依赖全在本机(127.0.0.1) 依赖是集群 Service DNS 名 配置:installment/.env 配置:Secret + 少量 env 覆盖 对外入口:ingress mp.installall.cn ``` **公网入口(2026-09-16 起指向集群)**: ``` 微信/小程序 → https://mp.installall.cn:443 → 云跳板 124.220.108.192 nginx(TLS 终止, Let's Encrypt 泛域名) → ngrokd(自建隧道) → 隧道客户端「跑在本地仓库 VM 192.168.2.192」 → 集群 ingress NodePort 192.168.2.221:32419 → prod 各服务 ``` DNS / 云 nginx / 证书 / 小程序都**没动**,只换了隧道客户端的目标与落点 —— 详见 [docs/运维记录/切流-mp域名从125切到集群-2026-09-16.md](docs/运维记录/切流-mp域名从125切到集群-2026-09-16.md)。 **核心原则:差异只来自「环境变量 + 编排清单」,代码里不许写 `if (k8s)`。** --- ## 1. 文档地图 | 文档 | 什么时候看 | |---|---| | [01-环境总览](docs/01-环境总览.md) | 想知道**有哪些机器、什么地址、跑着什么** | | [02-部署思想](docs/02-部署思想.md) | 想知道**为什么这么设计**、服务名/配置约定 | | [03-构建与镜像仓库](docs/03-构建与镜像仓库.md) | 要**构建镜像**(okteto / buildkitd / 私有仓库) | | [04-集群-prod部署SOP](docs/04-集群-prod部署SOP.md) | 要**在集群上部署/扩容/排查** | | [05-裸机-125部署SOP](docs/05-裸机-125部署SOP.md) | 要**更新 125 上的开发环境** | | [06-遗留与已知问题](docs/06-遗留与已知问题.md) | 接手时**先看这个**,避免踩已知的坑 | | [07-集群重建手册](docs/07-集群重建手册.md) | **机器坏了要重建**:物理/VM/集群配置 + 六步重建顺序 + 重建能力缺口 | | [全系统介绍与评审](../solution/docs/archive/归档-2026-09-16-全系统介绍与评审.md) | 想先看**整体长什么样、哪些做得好、欠账与推进顺序** | | [运维记录/](docs/运维记录/) | 按时间的故障与处理记录 | | [归档/](docs/归档/) | 历史评估/计划(已被现状取代,仅供追溯) | | [ops/](ops/) | 迁移脚本(`repoint-to-local-registry.sh` 等) | 应用层业务文档在 **`../solution/docs/`**(README / design / contract / product / archive)。 --- ## 2. 三句话抓住要点 1. **CCR(腾讯云)已不能推镜像** → 在 R730 上自建了私有仓库 `192.168.2.192:5000`, 集群所有镜像都从这里拉,**零 CCR 引用** (✅ 2026-09-16 实测坐实:此前 `kube-flannel` 还挂在 CCR 上,现已迁完,见 [03 §7](docs/03-构建与镜像仓库.md))。 2. **集群只保留 `prod` 一个业务命名空间**(原 `default`/`dev` 已清空), 应用**靠集群服务名零配置对接**(`redis-master` / `kafka` / `windmill-app` …)。 3. **NetworkPolicy 在本集群不生效**(CNI 只有 flannel,无策略引擎)→ 采用**命名空间级隔离**,别以为写了策略就隔离了。详见 06。 --- ## 3. 关键地址速查 | 是什么 | 地址 | |---|---| | 裸机 dev/test | `192.168.2.125` | | k8s API(kubeconfig) | `C:\K8s\config\192.168.2.210.conf`(VIP `cluster-endpoint` 192.168.2.241) | | ESXi 宿主机(R730) | `192.168.2.120`(生产集群与镜像仓库 VM 都跑在它上面) | | **私有镜像仓库** | `192.168.2.192:5000`(admin / 见 06 的凭据说明) | | buildkitd(okteto 构建后端) | `tcp://192.168.2.192:1234` | | NFS(PVC 后端) | NAS `192.168.2.242`,StorageClass `nfs-storage` | | 对外域名 | `mp.installall.cn` | | **Kafka 管理台**(Kafdrop) | `http://<任一节点IP>:30900/kafdrop/`(如 `192.168.2.221`)——**仅局域网,勿对公网开** | --- ## 4. 工作区导航(`shanghai/` 根目录) **只有两个目录是活的:** | 目录 | 是什么 | |---|---| | **`solution/`** | **主项目 —— 唯一主体**。全部业务源码、各组件 helm/okteto、部署脚本。**125 和集群跑的都是这里的代码。** | | **`infrastructure/`** | **本目录**:部署与运维文档、集群/主机配置、迁移脚本 | `solution/` 内的关键位置: | 路径 | 内容 | |---|---| | `solution/installment/.env` | **125(dev/test)的配置**(依赖指向 127.0.0.1,`KAFKA_SASL=false`,测试开关) | | `solution/helm/prod/` | **prod 命名空间的全部 values**(每个文件头部写了"为什么这么配") | | `solution/<组件>/okteto.yml` | 各组件的构建目标(`okteto build <目标名>`) | | `solution/deploy-125-installment.sh` | 发到 125 的部署脚本 | | `solution/installment/scripts/windmill/` | windmill flow 维护脚本 | | `solution/mp/` | **微信小程序原生壳**(git 子模块,远端 `secosun/mp`)。2026-09-17 从 `Documents/mp/miniprogram-installment` 并入 | | `solution/installment/secrets/` | 🔐 **全项目密钥唯一收容处**(installment 是私有仓)。新密钥一律进这里,别写进 `solution/`/`infrastructure/`(两者公开)。见其 README | | `solution/docs/` | 应用层业务文档(design / contract / product / archive) | | `solution/kubectl.exe`、`solution/okteto` | 工具二进制 | | `solution/legacy/` | 🗄️ **退役物收容区**(旧 `*value.yaml` / chart 终端记录 / 过期部署说明 / buildkit 安装包),2026-09-16 从工作路径挪开但未删除。**新会话不必读**,见其 `README.md` | **根目录其余内容都是历史卫星/副本,新会话不必读:** | 项 | 说明 | |---|---| | `_待删除-20260916/` | 本次清理的暂存区(**可整目录删除**) | | `backup/`、`solution - 副本/` | 旧副本 | | `langchain/`、`ngroknginx/` | 旧卫星目录 | | `shanghai.pem` | SSH 私钥 | > ⚠️ **私钥一律不要动**:`shanghai.pem`、`langchain/`(3 个私钥文件)、 > `ngroknginx/`(device.key / privkey.pem / rootCA.key 等)、`backup/`、 > `solution - 副本/`。这些目录我**原样保留**。