Merge pull request '记录 CI Actions 身份与依赖入口' (#6) from docs/ci-actions into main
docs / check (push) Failing after 34s
docs / check (push) Failing after 34s
This commit was merged in pull request #6.
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: 按任务查找文档
|
title: 按任务查找文档
|
||||||
last_reviewed: 2026-09-18
|
last_reviewed: 2026-09-21
|
||||||
---
|
---
|
||||||
|
|
||||||
# 按任务查找文档
|
# 按任务查找文档
|
||||||
@@ -11,7 +11,7 @@ last_reviewed: 2026-09-18
|
|||||||
| 要做什么 | 先读 | 需要时再读 |
|
| 要做什么 | 先读 | 需要时再读 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| 发布新的 LAN Web 服务 | [发布新服务](publish-service.md) | [DNS](../services/lan-dns.md)、[Authelia](../services/authelia.md) |
|
| 发布新的 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 或选择 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 缓存 Ansible/Go 依赖 | [Nexus POC](../services/nexus.md) | [Dynamic Runner](../services/gitea-dynamic-runner.md)、[OpenBao](../services/openbao.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 |
|
| 拉取或发布容器镜像 | [zot](../services/zot.md) | [SPIFFE](../services/spire.md);S3 后端维护才读 SeaweedFS |
|
||||||
| 使用 S3 对象存储 | [SeaweedFS](../services/seaweedfs.md) | [OpenBao](../services/openbao.md) |
|
| 使用 S3 对象存储 | [SeaweedFS](../services/seaweedfs.md) | [OpenBao](../services/openbao.md) |
|
||||||
|
|||||||
@@ -2,10 +2,12 @@
|
|||||||
title: Gitea Dynamic Runner
|
title: Gitea Dynamic Runner
|
||||||
lifecycle: experimental
|
lifecycle: experimental
|
||||||
evidence: documented
|
evidence: documented
|
||||||
last_reviewed: 2026-09-16
|
last_reviewed: 2026-09-21
|
||||||
last_verified: null
|
last_verified: null
|
||||||
sources:
|
sources:
|
||||||
- https://git.ddupan.top/panxiao81/gitea-dynamic-runner/src/branch/main/README.md
|
- 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
|
# Gitea Dynamic Runner
|
||||||
@@ -94,6 +96,16 @@ workflow 决定如何消费身份:登录哪个服务、请求哪个 audience
|
|||||||
不属于 runner 内置的业务流程。向其他服务请求 token 也遵循同一边界;
|
不属于 runner 内置的业务流程。向其他服务请求 token 也遵循同一边界;
|
||||||
runner 不应替 workflow 选择下游 role/policy,或统一代理其业务凭据交换。
|
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 能否取得各自身份和是否保持隔离;
|
因此,身份相关的环境验收应关注 Pod/VM 能否取得各自身份和是否保持隔离;
|
||||||
具体服务的登录与 token 使用由对应 workflow 验收。
|
具体服务的登录与 token 使用由对应 workflow 验收。
|
||||||
本段记录设计职责,不表示获取身份的能力已经在所有 backend 完成实现或现场验证。
|
本段记录设计职责,不表示获取身份的能力已经在所有 backend 完成实现或现场验证。
|
||||||
@@ -115,6 +127,7 @@ runner 不应替 workflow 选择下游 role/policy,或统一代理其业务凭
|
|||||||
- [设计原则](https://git.ddupan.top/panxiao81/gitea-dynamic-runner/src/branch/main/docs/design-principles.md):README 指向的完整设计约束,本轮未逐篇复核。
|
- [设计原则](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 指向的长期调度路线与迁移边界,本轮未逐篇复核。
|
- [Runner 协议路线](https://git.ddupan.top/panxiao81/gitea-dynamic-runner/src/branch/main/docs/runner-protocol-roadmap.md):README 指向的长期调度路线与迁移边界,本轮未逐篇复核。
|
||||||
- [SPIFFE/SPIRE](spire.md):统一机器身份的设计定位与阶段依据。
|
- [SPIFFE/SPIRE](spire.md):统一机器身份的设计定位与阶段依据。
|
||||||
|
- [`ci-actions@v1`](https://git.ddupan.top/panxiao81/ci-actions/src/tag/v1):workflow 可复用的 SPIFFE/OpenBao 登录与 Nexus 配置 Action。
|
||||||
|
|
||||||
实际启用范围、workflow 验收、排障及消息队列约定在项目文档中维护。
|
实际启用范围、workflow 验收、排障及消息队列约定在项目文档中维护。
|
||||||
开发中的变化直接以项目文档为准,知识库不另列“启用范围待核实”任务。
|
开发中的变化直接以项目文档为准,知识库不另列“启用范围待核实”任务。
|
||||||
|
|||||||
+12
-3
@@ -2,11 +2,12 @@
|
|||||||
title: SPIFFE/SPIRE 使用入口与阶段状态
|
title: SPIFFE/SPIRE 使用入口与阶段状态
|
||||||
lifecycle: active
|
lifecycle: active
|
||||||
evidence: documented
|
evidence: documented
|
||||||
last_reviewed: 2026-09-16
|
last_reviewed: 2026-09-21
|
||||||
last_verified: null
|
last_verified: null
|
||||||
sources:
|
sources:
|
||||||
- https://git.ddupan.top/panxiao81/homelab-infra/issues/34
|
- 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/homelab-infra/src/branch/main/platform/spire/RUNBOOK.md
|
||||||
|
- https://git.ddupan.top/panxiao81/ci-actions/src/tag/v1/spiffe-openbao-login
|
||||||
---
|
---
|
||||||
|
|
||||||
# SPIFFE/SPIRE
|
# SPIFFE/SPIRE
|
||||||
@@ -55,7 +56,7 @@ SPIFFE/SPIRE 取代了原计划中由 **workload-sts 承担统一 IAM 平台**
|
|||||||
维护者指定以 [homelab-infra #34](https://git.ddupan.top/panxiao81/homelab-infra/issues/34)
|
维护者指定以 [homelab-infra #34](https://git.ddupan.top/panxiao81/homelab-infra/issues/34)
|
||||||
为主要状态依据。2026-09-16 查阅时 issue 为 open,最后更新时间为
|
为主要状态依据。2026-09-16 查阅时 issue 为 open,最后更新时间为
|
||||||
2026-09-14 12:43:54 UTC;本页是该次查阅的阶段摘要,不替代 ticket 的动态进度。
|
2026-09-14 12:43:54 UTC;本页是该次查阅的阶段摘要,不替代 ticket 的动态进度。
|
||||||
本轮没有访问运行环境,以下完成结论均为 ticket 记录。
|
基础设施阶段结论来自 ticket;2026-09-21 另对下表中的可复用 Action 做了现场验证。
|
||||||
|
|
||||||
| 已完成阶段 | 记录依据 |
|
| 已完成阶段 | 记录依据 |
|
||||||
|---|---|
|
|---|---|
|
||||||
@@ -63,6 +64,7 @@ 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 |
|
| 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 |
|
| 测试 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 |
|
| 新 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 |
|
||||||
|
|
||||||
## 如何使用
|
## 如何使用
|
||||||
|
|
||||||
@@ -82,6 +84,13 @@ SPIFFE/SPIRE 取代了原计划中由 **workload-sts 承担统一 IAM 平台**
|
|||||||
[Dynamic Runner](gitea-dynamic-runner.md) 提供 Pod/VM 执行环境及获取自身 SPIFFE 身份的能力,
|
[Dynamic Runner](gitea-dynamic-runner.md) 提供 Pod/VM 执行环境及获取自身 SPIFFE 身份的能力,
|
||||||
不将 OpenBao 或其他服务的业务登录流程内置为 runner 职责。
|
不将 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)
|
[权威 RUNBOOK](https://git.ddupan.top/panxiao81/homelab-infra/src/branch/main/platform/spire/RUNBOOK.md)
|
||||||
的第 4–8 节。这里不复制第二份操作脚本。接入需要新增身份和授权配置,不是挂载 socket 后
|
的第 4–8 节。这里不复制第二份操作脚本。接入需要新增身份和授权配置,不是挂载 socket 后
|
||||||
@@ -94,7 +103,7 @@ OIDC issuer 为 `https://spire-oidc.ad.ddupan.top`,其 discovery/JWKS 用于
|
|||||||
|
|
||||||
## 仍在 ticket 中跟踪
|
## 仍在 ticket 中跟踪
|
||||||
|
|
||||||
截至本次查阅,后续范围包括真实 Gitea CI/AI Agent 的 OpenBao 接入、credential-exec、
|
截至本次查阅,后续范围包括在真实 Gitea CI/AI Agent 中验收已发布的登录 Action、
|
||||||
SeaweedFS Web Identity/STS、非 Kubernetes 主机与临时 VM 的证明和回收、
|
SeaweedFS Web Identity/STS、非 Kubernetes 主机与临时 VM 的证明和回收、
|
||||||
Compute/DBaaS 消费身份,以及 HA、备份恢复和多 issuer 约定。
|
Compute/DBaaS 消费身份,以及 HA、备份恢复和多 issuer 约定。
|
||||||
这些是 #34 的开放范围;单个消费者已有其他 PoC,不等于整项已完成。
|
这些是 #34 的开放范围;单个消费者已有其他 PoC,不等于整项已完成。
|
||||||
|
|||||||
Reference in New Issue
Block a user