From 23ec3f4f5c566ddc1dd254aa3036fe6ed18f10aa Mon Sep 17 00:00:00 2001 From: panxiao81 Date: Fri, 18 Sep 2026 19:10:51 +0000 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95=20Nexus=20=E5=88=B6=E5=93=81?= =?UTF-8?q?=E4=BB=93=E5=BA=93=20POC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- guides/task-index.md | 3 +- services/index.md | 3 +- services/nexus.md | 97 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 services/nexus.md diff --git a/guides/task-index.md b/guides/task-index.md index e53e3d4..13e453d 100644 --- a/guides/task-index.md +++ b/guides/task-index.md @@ -1,6 +1,6 @@ --- title: 按任务查找文档 -last_reviewed: 2026-09-16 +last_reviewed: 2026-09-18 --- # 按任务查找文档 @@ -12,6 +12,7 @@ last_reviewed: 2026-09-16 |---|---|---| | 发布新的 LAN Web 服务 | [发布新服务](publish-service.md) | [DNS](../services/lan-dns.md)、[Authelia](../services/authelia.md) | | 写 CI 或选择 Pod/VM runner | [Gitea / Actions](../services/gitea.md) | [Dynamic Runner](../services/gitea-dynamic-runner.md)、[SPIFFE](../services/spire.md) | +| 为 CI 缓存 Ansible/Go 依赖 | [Nexus POC](../services/nexus.md) | [Dynamic Runner](../services/gitea-dynamic-runner.md)、[OpenBao](../services/openbao.md) | | 拉取或发布容器镜像 | [zot](../services/zot.md) | [SPIFFE](../services/spire.md);S3 后端维护才读 SeaweedFS | | 使用 S3 对象存储 | [SeaweedFS](../services/seaweedfs.md) | [OpenBao](../services/openbao.md) | | 给应用分配数据库 | [共享 PostgreSQL](../services/shared-postgresql.md) | [计划中的 DBaaS](../services/postgresql-tenant-operator.md) | diff --git a/services/index.md b/services/index.md index 86489a7..e8e3cd0 100644 --- a/services/index.md +++ b/services/index.md @@ -1,6 +1,6 @@ # 服务总览 -审阅日期:2026-09-16。以下覆盖源码工作区 apps/、platform/、infrastructure/ 的一级组件,以及集群入口。 +审阅日期:2026-09-18。以下覆盖源码工作区 apps/、platform/、infrastructure/ 的一级组件,以及集群入口。 **除旧 VictoriaMetrics Compose 已获授权检查并清理外,其余条目未在本轮现场验证。** 状态栏区分维护者说明、文档、ticket、配置与现场证据,不提供持续的实时健康判断。 SPIFFE/SPIRE 已按维护者授权补读 #34;LAN DNS 与 Authelia 已按维护者说明更新, @@ -22,6 +22,7 @@ SPIFFE/SPIRE 已按维护者授权补读 #34;LAN DNS 与 Authelia 已按维护 | [marker](marker.md) | GPU 文档转换 API | `集群内端口 8001` | 配置与部署指南;未附上线记录 | `apps/marker/README.md` | 已有转换示例;部署镜像仍为占位符 | | netboot | PXE 与系统安装 | `192.168.10.127` | 有部署及使用记录 | `apps/netboot/README.md` | 已有客户端启动说明 | | [netbox](netbox.md) | 网络资产与地址管理评估 | `netbox.ad.ddupan.top` | 记录已部署;评估用途 | `apps/netbox/README.md` | 已有浏览与 Git 修改入口指南 | +| [nexus](nexus.md) | CI 包代理与统一制品仓库 POC | `nexus.ad.ddupan.top` | 仅有未提交配置,尚未部署验证 | `apps/nexus/README.md` | 先验收 Ansible/Go,再补 OCI 声明式管理与 BuildKit 测试 | | [openviking](openviking.md) | 上下文检索服务 | `记录端口 1933 / 8020` | 配置与部署指南;未附上线记录 | `apps/openviking/README.md` | 已有导入、任务查询、检索与原文读取指南 | | [ps3netsrv](ps3netsrv.md) | PS3 网络内容服务 | `宿主 TCP 38008;地址未记录` | Docker 运维文档记录运行 | `apps/ps3netsrv/docker-compose.yml` | 已有客户端与内容目录指南 | | [seaweedfs](seaweedfs.md) | S3 对象存储 | `s3.ad.ddupan.top` | zot 文档记录已使用 | `apps/seaweedfs/README.md` | 已有客户端读写指南与备份边界说明 | diff --git a/services/nexus.md b/services/nexus.md new file mode 100644 index 0000000..6fd21cd --- /dev/null +++ b/services/nexus.md @@ -0,0 +1,97 @@ +--- +title: Nexus Repository POC +lifecycle: experimental +evidence: configuration +last_reviewed: 2026-09-18 +last_verified: null +sources: [] +--- + +# Nexus Repository POC + +Nexus Repository Community Edition POC 计划为一次性 CI runner 提供共享的 Ansible Galaxy、 +Go Modules 与 OCI/BuildKit 缓存,减少每个 job 从公网重新下载依赖的时间。当前只有未提交的 +GitOps 与 Terraform 配置,尚未部署、初始化或完成端到端验证;现役 zot 保持不变。 + +## 从哪里使用 + +- 计划入口:`https://nexus.ad.ddupan.top`,仅 LAN。 +- 人类管理:POC 首次使用本地管理员;后续正式化优先使用 Samba AD LDAP。Community + Edition 不提供原生 OIDC/SAML,因此不能把 Authelia OIDC 写成已支持入口。 +- CI 读取:目标是对 public/group repository 开放 LAN 匿名只读。 +- CI 发布:目标是少量按信任边界划分的本地 service account,凭据由 OpenBao 保存; + 当前 POC 尚未创建 publisher 或授予写权限。 + +不能在整个入口套用 Authelia browser forward-auth:`ansible-galaxy`、Go 和 OCI 客户端 +不会完成浏览器登录。若以后给 UI 单独加 RUT/forward-auth,必须使用与 package API 分离 +且不可绕过的入口,并先完成 Header 信任边界审计。 + +## 第一次使用 + +部署与 Terraform 初始化完成后,Ansible 客户端将 Galaxy server 指向: + +```ini +[galaxy] +server_list = nexus + +[galaxy_server.nexus] +url = https://nexus.ad.ddupan.top/repository/ansible-public/ +``` + +然后在已有 `collections/requirements.yml` 的项目中运行: + +```bash +ansible-galaxy collection install -r collections/requirements.yml \ + -p .ansible/collections +``` + +预期首次请求从上游获取 collection,第二次在全新 runner 中由 Nexus 返回已缓存内容。 +该预期尚未现场验证;验证时同时记录冷/热耗时和 Nexus 日志,不能只看命令退出码。 + +Go POC 使用: + +```bash +GOPROXY=https://nexus.ad.ddupan.top/repository/go-public/ go mod download +``` + +私有 module 的 `GOPRIVATE`、认证和 fallback 需由实际 workflow 明确配置,不能把内部 module +路径意外发送到公共 proxy。 + +## POC 限制 + +- 单副本、50 GiB OpenEBS RWO PVC,资源上限 2 CPU / 4 GiB。 +- 当前使用 embedded H2,仅用于 POC;正式保存唯一制品前迁移至外部 PostgreSQL。 +- 当前没有独立备份或恢复验收,PVC 不能被视为备份。 +- Terraform provider 已声明 Ansible 与 Go proxy/group;provider 1.17.0 尚未暴露 Nexus + 3.94 新增的原生 OCI repository resource。 +- OCI 必须在补齐声明式 REST/provider 管理后再测试,不保留仅通过 UI 创建的长期配置。 +- BuildKit registry cache 有待单独验证,普通 OCI image push 成功不能替代该测试。 + +## 出问题时 + +先检查 Flux、Pod、PVC、Route 与最近日志: + +```bash +kubectl -n flux-system get kustomization nexus +kubectl -n nexus get pod,pvc,service,httproute +kubectl -n nexus logs deployment/nexus --tail=100 +``` + +首次启动可能持续数分钟。PVC 未 Bound 时先查 OpenEBS;Route 未 Accepted/ResolvedRefs 时查 +Gateway parentRef 与 Service;公网依赖获取失败时区分 Nexus 本身、LAN DNS 和已知不稳定 +WAN,不以重建 PVC 作为排障手段。 + +## 运维入口 + +实现入口为 homelab-infra 工作区中尚未提交的 `apps/nexus/` 与 +`clusters/homelab/apps/nexus.yaml`。DNS 期望记录位于 `infrastructure/dns/records.yml`。 +源码 README 维护部署、初始化、Terraform、验收与恢复边界。 + +部署依赖 Envoy Gateway、OpenEBS 和 LAN DNS;Terraform 管理依赖 Nexus 初始化后的受限管理 +账号及 OpenBao 注入凭据。现阶段不依赖共享 PostgreSQL,正式化时才建立独立数据库与 role。 + +## 当前状态与证据 + +2026-09-18 已准备未提交的 Kubernetes、Flux、DNS 与 Terraform POC 配置,并完成本地渲染和 +schema 检查后方可交付;未访问现场、未部署 Nexus、未申请凭据,也未修改或迁移 zot。 +后续状态必须以合并记录、Flux 状态和客户端冷/热缓存验收分别更新,不能仅凭本页推断上线。