修复 zot:同时提供匿名拉取与 SPIRE 鉴权推送 #65

Merged
panxiao81 merged 1 commits from fix/zot-anonymous-pull into main 2026-09-16 14:50:14 +00:00
Owner

原部署启用 OIDC Bearer 后无法匿名拉取;同域名 GET/HEAD 分流又使部分标准 OCI 客户端跳过 token 交换。现在用两个官方 zot 实例共用同一份 SeaweedFS 制品和 Bao 凭据:

  • zot.ad.ddupan.top:匿名拉取,只转发 GET/HEAD;reader 自身也只有 anonymousPolicy=read,关闭 GC。
  • zot-push.ad.ddupan.top:保留 SPIRE issuer/audience/subject 和仓库权限校验;realm、service、externalUrl 与路由一致。没有常驻写入授权,后续为具体 CI 身份配置单仓库权限。
  • 两个实例继承同一份基础 Helm values、镜像、安全上下文和 Secret 引用;不增加 PVC、不复制制品、不新增 S3 密钥。

验证通过:标准 crane 使用真实 SPIRE JWT-SVID 推送测试制品,随后以空 DOCKER_CONFIG 匿名拉取,两个入口 digest 一致。匿名 blob HEAD、tags/referrers、遗留客户端凭据兼容性通过;匿名写入、跨仓库写入、删除、错误签名/audience 和过期 SVID 均被拒绝。直接访问 reader Service 也无法写入。临时验收身份和写权限已撤销;两个 HelmRelease Ready;DNS 第二次 check 为 changed=0;Kustomize/Helm 渲染、diff 和敏感信息模式检查通过。

部署状态与合并后收尾:双域名已在线。为避免 main 的旧配置回写,当前仅对 HelmRelease/zot 设置了临时 kustomize.toolkit.fluxcd.io/reconcile=disabled,并在 spec.values 保存最终双域名配置(没有测试写权限)。Helm controller 正常运行,其他 Flux 对象正常 reconcile。合并后确认 zot-values 已同步新的推送域名,再移除临时 spec.values 和该 annotation,触发 zot Kustomization reconcile;新增 reader 随本 PR 纳管。

原部署启用 OIDC Bearer 后无法匿名拉取;同域名 GET/HEAD 分流又使部分标准 OCI 客户端跳过 token 交换。现在用两个官方 zot 实例共用同一份 SeaweedFS 制品和 Bao 凭据: - `zot.ad.ddupan.top`:匿名拉取,只转发 GET/HEAD;reader 自身也只有 anonymousPolicy=read,关闭 GC。 - `zot-push.ad.ddupan.top`:保留 SPIRE issuer/audience/subject 和仓库权限校验;realm、service、externalUrl 与路由一致。没有常驻写入授权,后续为具体 CI 身份配置单仓库权限。 - 两个实例继承同一份基础 Helm values、镜像、安全上下文和 Secret 引用;不增加 PVC、不复制制品、不新增 S3 密钥。 验证通过:标准 crane 使用真实 SPIRE JWT-SVID 推送测试制品,随后以空 DOCKER_CONFIG 匿名拉取,两个入口 digest 一致。匿名 blob HEAD、tags/referrers、遗留客户端凭据兼容性通过;匿名写入、跨仓库写入、删除、错误签名/audience 和过期 SVID 均被拒绝。直接访问 reader Service 也无法写入。临时验收身份和写权限已撤销;两个 HelmRelease Ready;DNS 第二次 check 为 changed=0;Kustomize/Helm 渲染、diff 和敏感信息模式检查通过。 **部署状态与合并后收尾**:双域名已在线。为避免 main 的旧配置回写,当前仅对 `HelmRelease/zot` 设置了临时 `kustomize.toolkit.fluxcd.io/reconcile=disabled`,并在 spec.values 保存最终双域名配置(没有测试写权限)。Helm controller 正常运行,其他 Flux 对象正常 reconcile。合并后确认 zot-values 已同步新的推送域名,再移除临时 spec.values 和该 annotation,触发 zot Kustomization reconcile;新增 reader 随本 PR 纳管。
panxiao81 added 1 commit 2026-09-16 13:07:15 +00:00
fix(zot): 分离匿名拉取与 SPIRE 鉴权推送入口
yaml / yaml (pull_request) Successful in 22s
ansible / collection-test (pull_request) Successful in 1m10s
ansible / lint (pull_request) Successful in 17m42s
31d89817b2
panxiao81 merged commit d15733caac into main 2026-09-16 14:50:14 +00:00
panxiao81 deleted branch fix/zot-anonymous-pull 2026-09-16 14:50:14 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: panxiao81/homelab-infra#65