Compare commits
3
Commits
main
..
adf2812767
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
adf2812767
|
||
|
|
ceb58eb42b
|
||
|
|
8d0992f039
|
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: Ayatori 控制面边界
|
||||
last_reviewed: 2026-09-20
|
||||
---
|
||||
|
||||
# Ayatori 控制面边界
|
||||
|
||||
Ayatori 是规划和早期实现中的 homelab 基础设施控制平面。它使用 kube-apiserver、etcd、CRD
|
||||
和 Kubernetes API machinery 作为版本化 API 与状态协调平面,主要复用对象并发控制、
|
||||
list/watch、informer、RBAC、admission、审计和 API 版本机制,而不是复用 Kubernetes 的容器
|
||||
编排产品边界。
|
||||
|
||||
Ayatori controller-manager 负责领域资源的调度、生命周期、故障恢复、垃圾回收和后端收敛。
|
||||
这部分职责近似 Kubernetes 的 controller-manager,但面向 VM、LB、数据库、对象存储、任务、
|
||||
托管 Kubernetes 和人工操作等 Ayatori 领域。
|
||||
|
||||
Kubernetes workload 集群只是与 OpenSandbox、Proxmox 等并列的 backend/executor,可能位于
|
||||
远端,也可能在某个部署 profile 中不存在。除 Flux、Ayatori controllers 等管理组件的部署外,
|
||||
领域 API 不得默认依赖同集群 Pod、Job、Service、NetworkPolicy、namespace 共置或 owner
|
||||
reference;跨后端能力必须由领域 API 和 adapter 契约明确表达。
|
||||
|
||||
Kubernetes 内置资源也只是可选择复用的 API contract,不绑定其传统实现组件。例如 Ayatori
|
||||
可以让 Compute Agent 更新 `core/v1 Node` 和 Lease,并由自有 controller 调度 VM,而不部署
|
||||
kubelet、Pod、CRI 或 kube-scheduler。每个复用资源都必须单独明确 producer、consumer、
|
||||
ownership、采用字段和有意舍弃的上游语义。
|
||||
|
||||
当前选择继续使用 kube-apiserver + CRD。generic-apiserver 或聚合 API Server 不会替代领域
|
||||
controller,只会让项目额外接管资源服务端、watch、RBAC、API 兼容和存储迁移责任。只有 CRD
|
||||
或 kube-apiserver 的限制形成经过验证的阻碍时,才重新评估自建 API Server。
|
||||
|
||||
Ayatori 不按传统私有云产品目录建设。当前已确认的首要管理缺口是 Database、LoadBalancer 与
|
||||
Bucket/Object Storage;VirtualMachine 同样具有明确价值,但需要组合 Proxmox API、节点受限
|
||||
Agent/CLI 和人工任务。当前 Job controller 是控制循环与 adapter 的验证切片,长期只可能收敛为
|
||||
内部 Run 能力,不构成 FaaS、Cloud Run 或应用托管承诺。KaaS 只有出现实际需求时才评估,不是
|
||||
产品路线的必达终点。
|
||||
|
||||
详细设计以 Ayatori 仓库的
|
||||
[ADR-0001](https://git.ddupan.top/panxiao81/ayatori/src/branch/main/docs/decisions/0001-kubernetes-api-machinery.md)
|
||||
、[ADR-0006](https://git.ddupan.top/panxiao81/ayatori/src/branch/main/docs/decisions/0006-demand-driven-resource-scope.md)
|
||||
和[总体架构](https://git.ddupan.top/panxiao81/ayatori/src/branch/main/docs/architecture/overview.md)为准。
|
||||
本页记录跨 homelab 的稳定边界,不表示 Ayatori 已部署或达到生产可用状态。
|
||||
@@ -1,10 +1,14 @@
|
||||
# 架构约束索引
|
||||
|
||||
审阅日期:2026-09-16。以下是现有仓库明确记录的约束摘要,不是本轮新增的架构决策。
|
||||
来源路径相对于 homelab-infra;修改时必须读原文和对应代码,新出现的差异先向维护者确认;[首轮状态对齐](../verification.md)已完成。
|
||||
审阅日期:2026-09-20。以下是现有仓库明确记录的约束摘要;Ayatori 条目来自其独立项目的
|
||||
已接受设计,其余来源路径相对于 homelab-infra。修改时必须读原文和对应代码,新出现的差异
|
||||
先向维护者确认;[首轮状态对齐](../verification.md)已完成。
|
||||
|
||||
| 约束 | 原因与边界 | 来源 |
|
||||
|---|---|---|
|
||||
| Ayatori 复用 Kubernetes API machinery,不复用其容器编排产品边界 | kube-apiserver/etcd 提供 API、watch、RBAC 与状态协调;领域调度、生命周期、恢复和 GC 属于 Ayatori controllers;Kubernetes workload 只是可替换 backend | [Ayatori 控制面边界](ayatori-control-plane.md) |
|
||||
| Kubernetes 内置资源不绑定上游实现组件 | 可由 Ayatori Agent/controller 实现和消费 Node、Lease 等 API;使用 Node 不推导必须部署 kubelet、Pod 或 kube-scheduler | [Ayatori 控制面边界](ayatori-control-plane.md) |
|
||||
| Ayatori 只为已验证的管理缺口新增北向资源 | 当前优先 Database、LoadBalancer、Bucket/Object Storage;VM 价值已确认但南向较重;Run 是内部切片,KaaS 按需,FaaS/PaaS 默认不做 | [Ayatori 控制面边界](ayatori-control-plane.md) |
|
||||
| Samba AD、OCI、Proxmox 优先 IaC,以代码为准 | Ansible/Terraform 声明及任务优先于旧 README;声明不等于已验证部署 | 维护者于 2026-09-16 明确、各服务使用指南 |
|
||||
| 服务独立部署,Terraform root/state 按服务隔离 | 避免认证和变更影响范围绑在一起 | `AGENTS.md`、`CLAUDE.md` |
|
||||
| OpenBao 恢复不能依赖 k3s 或读取自己内部的恢复凭据 | 先恢复信任根,再恢复消费者 | `infrastructure/openbao/README.md`、`CLAUDE.md` |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: 按任务查找文档
|
||||
last_reviewed: 2026-09-21
|
||||
last_reviewed: 2026-09-20
|
||||
---
|
||||
|
||||
# 按任务查找文档
|
||||
@@ -10,8 +10,9 @@ last_reviewed: 2026-09-21
|
||||
|
||||
| 要做什么 | 先读 | 需要时再读 |
|
||||
|---|---|---|
|
||||
| 设计或实现 Ayatori 控制面能力 | [Ayatori 控制面边界](../architecture/ayatori-control-plane.md) | Ayatori 仓库 ADR、对应领域 API 与 adapter 文档 |
|
||||
| 发布新的 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-actions@v1`](https://git.ddupan.top/panxiao81/ci-actions/src/tag/v1) |
|
||||
| 写 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) |
|
||||
|
||||
@@ -2,12 +2,10 @@
|
||||
title: Gitea Dynamic Runner
|
||||
lifecycle: experimental
|
||||
evidence: documented
|
||||
last_reviewed: 2026-09-21
|
||||
last_reviewed: 2026-09-16
|
||||
last_verified: null
|
||||
sources:
|
||||
- https://git.ddupan.top/panxiao81/gitea-dynamic-runner/src/branch/main/README.md
|
||||
- https://git.ddupan.top/panxiao81/homelab-infra/src/branch/main/platform/dynamic-runner/README.md
|
||||
- https://git.ddupan.top/panxiao81/ci-actions/src/tag/v1
|
||||
---
|
||||
|
||||
# Gitea Dynamic Runner
|
||||
@@ -96,16 +94,6 @@ workflow 决定如何消费身份:登录哪个服务、请求哪个 audience
|
||||
不属于 runner 内置的业务流程。向其他服务请求 token 也遵循同一边界;
|
||||
runner 不应替 workflow 选择下游 role/policy,或统一代理其业务凭据交换。
|
||||
|
||||
通用实现已发布为 [`panxiao81/ci-actions@v1`](https://git.ddupan.top/panxiao81/ci-actions/src/tag/v1):
|
||||
`spiffe-openbao-login` 负责获取 JWT-SVID、交换 Bao token 和退出吊销,`setup-nexus`
|
||||
负责匿名配置 Ansible Galaxy、Go module proxy 与 OCI endpoint。后者读取 Nexus public
|
||||
repository 时不需要 Bao 登录;发布制品应另建 repository service account 和最小权限
|
||||
policy。
|
||||
|
||||
这些 Action 不扩大 runner 权限。runner 只提供 Node.js 20、`spire-agent` 与 Workload
|
||||
API socket,workflow 明确声明 role、audience 和用途,目标服务 policy 做最终授权。
|
||||
由于短期 token 会进入 Actions job 临时文件,只能在一次性 Pod/VM executor 使用。
|
||||
|
||||
因此,身份相关的环境验收应关注 Pod/VM 能否取得各自身份和是否保持隔离;
|
||||
具体服务的登录与 token 使用由对应 workflow 验收。
|
||||
本段记录设计职责,不表示获取身份的能力已经在所有 backend 完成实现或现场验证。
|
||||
@@ -127,7 +115,6 @@ API socket,workflow 明确声明 role、audience 和用途,目标服务 poli
|
||||
- [设计原则](https://git.ddupan.top/panxiao81/gitea-dynamic-runner/src/branch/main/docs/design-principles.md):README 指向的完整设计约束,本轮未逐篇复核。
|
||||
- [Runner 协议路线](https://git.ddupan.top/panxiao81/gitea-dynamic-runner/src/branch/main/docs/runner-protocol-roadmap.md):README 指向的长期调度路线与迁移边界,本轮未逐篇复核。
|
||||
- [SPIFFE/SPIRE](spire.md):统一机器身份的设计定位与阶段依据。
|
||||
- [`ci-actions@v1`](https://git.ddupan.top/panxiao81/ci-actions/src/tag/v1):workflow 可复用的 SPIFFE/OpenBao 登录与 Nexus 配置 Action。
|
||||
|
||||
实际启用范围、workflow 验收、排障及消息队列约定在项目文档中维护。
|
||||
开发中的变化直接以项目文档为准,知识库不另列“启用范围待核实”任务。
|
||||
|
||||
+1
-1
@@ -22,7 +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` | 2026-09-20 已现场验证 Ansible、Go、OCI 与 BuildKit cache | `apps/nexus/README.md` | 补 publisher account、外部 PostgreSQL 与备份恢复测试 |
|
||||
| [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` | 已有客户端读写指南与备份边界说明 |
|
||||
|
||||
+20
-43
@@ -1,27 +1,24 @@
|
||||
---
|
||||
title: Nexus Repository POC
|
||||
lifecycle: experimental
|
||||
evidence: live-verified
|
||||
last_reviewed: 2026-09-20
|
||||
last_verified: 2026-09-20
|
||||
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 已部署,
|
||||
上述代理与缓存链路均已完成现场验证;数据库和备份仍是 POC,现役 zot 保持不变。
|
||||
Nexus Repository Community Edition POC 计划为一次性 CI runner 提供共享的 Ansible Galaxy、
|
||||
Go Modules 与 OCI/BuildKit 缓存,减少每个 job 从公网重新下载依赖的时间。当前只有未提交的
|
||||
GitOps 与 Terraform 配置,尚未部署、初始化或完成端到端验证;现役 zot 保持不变。
|
||||
|
||||
## 从哪里使用
|
||||
|
||||
- 入口:`https://nexus.ad.ddupan.top`,仅 LAN。
|
||||
- 人类管理:当前使用本地管理员,凭据受管于 OpenBao `kv/infra/nexus`;尚未配置 LDAP。
|
||||
后续正式化优先使用 Samba AD LDAP。Community
|
||||
- 计划入口:`https://nexus.ad.ddupan.top`,仅 LAN。
|
||||
- 人类管理:POC 首次使用本地管理员;后续正式化优先使用 Samba AD LDAP。Community
|
||||
Edition 不提供原生 OIDC/SAML,因此不能把 Authelia OIDC 写成已支持入口。
|
||||
- CI 读取:`ansible-public`、Ansible 返回制品 URL 使用的成员 proxy 与 `go-public` 已开放
|
||||
LAN 匿名只读;`oci-public` 与其 `oci-proxy` 成员同样匿名只读,`oci-hosted` 不开放匿名。
|
||||
Terraform 明确收窄权限,未使用默认的全仓库匿名角色。
|
||||
- CI 读取:目标是对 public/group repository 开放 LAN 匿名只读。
|
||||
- CI 发布:目标是少量按信任边界划分的本地 service account,凭据由 OpenBao 保存;
|
||||
当前 POC 尚未创建 publisher 或授予写权限。
|
||||
|
||||
@@ -48,9 +45,8 @@ ansible-galaxy collection install -r collections/requirements.yml \
|
||||
-p .ansible/collections
|
||||
```
|
||||
|
||||
2026-09-20 使用两个全新客户端目录下载 `community.general:11.2.0`:冷缓存 8.49 秒、
|
||||
热缓存 1.89 秒,两份 tarball SHA-256 一致。Nexus Ansible format 返回的制品 URL 指向
|
||||
成员 proxy,因此匿名角色必须同时具备 group 与该 proxy 的只读权限。
|
||||
预期首次请求从上游获取 collection,第二次在全新 runner 中由 Nexus 返回已缓存内容。
|
||||
该预期尚未现场验证;验证时同时记录冷/热耗时和 Nexus 日志,不能只看命令退出码。
|
||||
|
||||
Go POC 使用:
|
||||
|
||||
@@ -61,30 +57,15 @@ GOPROXY=https://nexus.ad.ddupan.top/repository/go-public/ go mod download
|
||||
私有 module 的 `GOPRIVATE`、认证和 fallback 需由实际 workflow 明确配置,不能把内部 module
|
||||
路径意外发送到公共 proxy。
|
||||
|
||||
2026-09-20 使用两个全新 Go module cache 下载 `golang.org/x/[email protected]`:冷缓存
|
||||
2.92 秒、热缓存 1.51 秒,均通过 `go-public` 匿名入口完成。
|
||||
|
||||
OCI 使用 path-based routing。公共镜像从
|
||||
`nexus.ad.ddupan.top/oci-public/<namespace>/<image>:<tag>` 匿名拉取;写入使用
|
||||
`nexus.ad.ddupan.top/oci-hosted/<namespace>/<image>:<tag>` 并要求认证。2026-09-20 验证:
|
||||
|
||||
- Alpine 代理冷拉 4.75 秒、热拉 0.80 秒,digest 一致;
|
||||
- hosted push/pull 成功,匿名 pull 返回 401;
|
||||
- amd64/arm64 OCI image index 可 push 与 inspect;
|
||||
- Helm OCI chart push/pull digest 及本地 tarball SHA-256 一致;
|
||||
- Cosign 签名和公钥验证成功,OCI 1.1 referrers 返回一个 Sigstore bundle;
|
||||
- BuildKit `mode=max` registry cache 成功导出;销毁首个 builder 后,新 builder 从 Nexus
|
||||
导入缓存,两个 `RUN` step 均命中 `CACHED`。
|
||||
|
||||
## POC 限制
|
||||
|
||||
- 单副本、50 GiB OpenEBS RWO PVC,资源上限 2 CPU / 4 GiB。
|
||||
- 当前使用 embedded H2,仅用于 POC;正式保存唯一制品前迁移至外部 PostgreSQL。
|
||||
- 当前没有独立备份或恢复验收,PVC 不能被视为备份。
|
||||
- Terraform provider 管理 Ansible/Go、Realm 与权限;provider 1.17.0 尚未暴露 Nexus 3.94
|
||||
新增的原生 OCI repository resource,因此 OCI 仓库由实例 Swagger 固定 schema 的幂等 REST
|
||||
调和器管理,不通过 UI 留下非声明式配置。
|
||||
- 尚未创建正式 publisher service account;本轮写入测试临时使用受管管理员凭据。
|
||||
- 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 成功不能替代该测试。
|
||||
|
||||
## 出问题时
|
||||
|
||||
@@ -102,8 +83,8 @@ WAN,不以重建 PVC 作为排障手段。
|
||||
|
||||
## 运维入口
|
||||
|
||||
实现入口为 homelab-infra 已合并的 `apps/nexus/` 与
|
||||
`clusters/homelab/apps/nexus.yaml`。DNS 记录位于 `infrastructure/dns/records.yml`。
|
||||
实现入口为 homelab-infra 工作区中尚未提交的 `apps/nexus/` 与
|
||||
`clusters/homelab/apps/nexus.yaml`。DNS 期望记录位于 `infrastructure/dns/records.yml`。
|
||||
源码 README 维护部署、初始化、Terraform、验收与恢复边界。
|
||||
|
||||
部署依赖 Envoy Gateway、OpenEBS 和 LAN DNS;Terraform 管理依赖 Nexus 初始化后的受限管理
|
||||
@@ -111,10 +92,6 @@ WAN,不以重建 PVC 作为排障手段。
|
||||
|
||||
## 当前状态与证据
|
||||
|
||||
2026-09-20 现场确认 Flux Kustomization Ready、Nexus Pod Ready、50 GiB PVC Bound,HTTPRoute
|
||||
经 HTTPS 状态 API 返回 200;Samba DNS apply 后复查 `changed=0`。Terraform 已创建 Ansible、
|
||||
Go proxy/group、OCI Bearer Token Realm 和最小匿名只读角色,二次 plan 为 `No changes`;OCI
|
||||
REST 调和器复查三个仓库均为 `in sync`。Ansible、Go、OCI、Helm、Cosign/referrers 与
|
||||
BuildKit cache 的上述客户端测试均成功。实现来源为 homelab-infra PR #103、#108 与 #109。
|
||||
尚未验证备份恢复或外部 PostgreSQL,也未创建正式 publisher account、修改或迁移 zot,
|
||||
因此本页的 `live-verified` 仅覆盖已明确列出的 POC 范围。
|
||||
2026-09-18 已准备未提交的 Kubernetes、Flux、DNS 与 Terraform POC 配置,并完成本地渲染和
|
||||
schema 检查后方可交付;未访问现场、未部署 Nexus、未申请凭据,也未修改或迁移 zot。
|
||||
后续状态必须以合并记录、Flux 状态和客户端冷/热缓存验收分别更新,不能仅凭本页推断上线。
|
||||
|
||||
+3
-12
@@ -2,12 +2,11 @@
|
||||
title: SPIFFE/SPIRE 使用入口与阶段状态
|
||||
lifecycle: active
|
||||
evidence: documented
|
||||
last_reviewed: 2026-09-21
|
||||
last_reviewed: 2026-09-16
|
||||
last_verified: null
|
||||
sources:
|
||||
- https://git.ddupan.top/panxiao81/homelab-infra/issues/34
|
||||
- https://git.ddupan.top/panxiao81/homelab-infra/src/branch/main/platform/spire/RUNBOOK.md
|
||||
- https://git.ddupan.top/panxiao81/ci-actions/src/tag/v1/spiffe-openbao-login
|
||||
---
|
||||
|
||||
# SPIFFE/SPIRE
|
||||
@@ -56,7 +55,7 @@ SPIFFE/SPIRE 取代了原计划中由 **workload-sts 承担统一 IAM 平台**
|
||||
维护者指定以 [homelab-infra #34](https://git.ddupan.top/panxiao81/homelab-infra/issues/34)
|
||||
为主要状态依据。2026-09-16 查阅时 issue 为 open,最后更新时间为
|
||||
2026-09-14 12:43:54 UTC;本页是该次查阅的阶段摘要,不替代 ticket 的动态进度。
|
||||
基础设施阶段结论来自 ticket;2026-09-21 另对下表中的可复用 Action 做了现场验证。
|
||||
本轮没有访问运行环境,以下完成结论均为 ticket 记录。
|
||||
|
||||
| 已完成阶段 | 记录依据 |
|
||||
|---|---|
|
||||
@@ -64,7 +63,6 @@ SPIFFE/SPIRE 取代了原计划中由 **workload-sts 承担统一 IAM 平台**
|
||||
| OIDC HTTPS、DNS、TLS、discovery/JWKS 验证;OpenBao JWT backend/role/policy 创建 | [9 月 14 日端到端验收](https://git.ddupan.top/panxiao81/homelab-infra/issues/34#issuecomment-301),对应 #52、#53 |
|
||||
| 测试 Pod 获得 aud=openbao 的 JWT-SVID,交换为仅含 spire-poc policy、TTL 300 秒的 Bao token;lookup-self/revoke-self 验证完成 | 同上;临时 workload 与 registration entries 已清理,最终 Terraform plan 为 No changes |
|
||||
| 新 workload 接入、故障排查和恢复说明已合并 | [9 月 14 日文档记录](https://git.ddupan.top/panxiao81/homelab-infra/issues/34#issuecomment-308),对应 #54 |
|
||||
| `spiffe-openbao-login@v1` 使用本机 Workload API 获取 JWT-SVID、交换短期 token 并在 post 阶段 `revoke-self` | 2026-09-21 现场验证;Action 未向 stdout/stderr 输出 JWT-SVID 或 token |
|
||||
|
||||
## 如何使用
|
||||
|
||||
@@ -84,13 +82,6 @@ SPIFFE/SPIRE 取代了原计划中由 **workload-sts 承担统一 IAM 平台**
|
||||
[Dynamic Runner](gitea-dynamic-runner.md) 提供 Pod/VM 执行环境及获取自身 SPIFFE 身份的能力,
|
||||
不将 OpenBao 或其他服务的业务登录流程内置为 runner 职责。
|
||||
|
||||
Gitea workflow 可使用
|
||||
[`panxiao81/ci-actions/spiffe-openbao-login@v1`](https://git.ddupan.top/panxiao81/ci-actions/src/tag/v1/spiffe-openbao-login)
|
||||
完成 JWT-SVID 交换与退出吊销。Action 会按 Actions 协议把短期 token 写入
|
||||
`GITHUB_ENV`/`GITHUB_STATE` 临时文件,因此只允许用于 job 后销毁的一次性 Pod/VM
|
||||
runner;不能用于共享或持久 runner。runner 仍只提供 Node.js 20、`spire-agent` 和
|
||||
Workload API socket,role、audience 与调用时机必须由受审查的 workflow 声明。
|
||||
|
||||
可直接沿用的配置模板、交换示例和排障步骤见
|
||||
[权威 RUNBOOK](https://git.ddupan.top/panxiao81/homelab-infra/src/branch/main/platform/spire/RUNBOOK.md)
|
||||
的第 4–8 节。这里不复制第二份操作脚本。接入需要新增身份和授权配置,不是挂载 socket 后
|
||||
@@ -103,7 +94,7 @@ OIDC issuer 为 `https://spire-oidc.ad.ddupan.top`,其 discovery/JWKS 用于
|
||||
|
||||
## 仍在 ticket 中跟踪
|
||||
|
||||
截至本次查阅,后续范围包括在真实 Gitea CI/AI Agent 中验收已发布的登录 Action、
|
||||
截至本次查阅,后续范围包括真实 Gitea CI/AI Agent 的 OpenBao 接入、credential-exec、
|
||||
SeaweedFS Web Identity/STS、非 Kubernetes 主机与临时 VM 的证明和回收、
|
||||
Compute/DBaaS 消费身份,以及 HA、备份恢复和多 issuer 约定。
|
||||
这些是 #34 的开放范围;单个消费者已有其他 PoC,不等于整项已完成。
|
||||
|
||||
Reference in New Issue
Block a user