执行摘要
NebulaCR是一个用 Rust 编写的开源云原生OCI 容器注册表。它将符合标准的星云注册表服务(端口 5000)与专用星云验证令牌服务(端口 5001)、用于签名密钥的可选HashiCorp Vault集成、可插拔对象存储(文件系统、S3、GCS、Azure Blob)以及一流的Kubernetes封装与 CRD,适用于租户、项目和政策。上游项目将产品定位于私密、可观察、可治理的图像分发;有关公共登陆页面,请参阅nebulacr.org;有关源代码和版本,请参阅github.com/bwalia/nebulacr。
为什么企业采用私有 OCI 注册表
容器映像现在是大多数云原生团队的部署单元。仅存在于安全边界内的注册表可让您强制执行数据驻留、供应链控制、细粒度 RBAC和可预测成本(特别是与上游注册表的拉通缓存结合使用时)。 NebulaCR 的目标用户是需要 Docker 兼容工作流程而又不放弃身份、可审核性或多区域弹性的操作员。
Rust 工作区 (Cargo.toml)
上游Cargo.toml声明了七个 crate 的工作区:nebula-common、nebula-auth、nebula-registry、nebula-controller、星云弹性、星云镜像和星云复制。自述文件的项目树将每个包映射到二进制文件或库 - 注册表和身份验证服务、Kubernetes 协调器、直通式缓存引擎、弹性助手和多区域复制。从源代码开始,运行cargo build --workspace --release和cargo test --workspace,然后再使用根Dockerfile或优化的Dockerfile.scratch进行容器化。
从项目文档中提取的架构
除了上述三个核心二进制文件/库之外,星云控制器还可以协调租户/项目/AccessPolicy/TokenPolicy CRDs、星云镜像为上游注册表实现拉通缓存,星云弹性为复制路径提供重试和断路器,星云复制支持多区域异步或半同步模式,并具有docs/architecture.md中所述的故障转移功能。nebula-registry仍然基于 Axum,并根据请求执行 JWT;nebula-auth验证 OIDC 身份令牌并颁发短期注册表 JWT。每个租户/项目的存储保持分层,而后端保持可插拔。
入口路由、运行状况检查和指标
自述文件的 ASCII 架构显示流量拆分:/v2到注册表服务 (5000),身份验证流(通常在/auth下)到nebula-auth(5001),OIDC 提供商均位于两者外部。 Helm 图表公开 Prometheus 指标(示例包括nebulacr_http_requests_total、nebulacr_http_request_duration_seconds、nebulacr_storage_operations_total、nebulacr_auth_tokens_issued_total),并在kubectl port-forward之后将curl http://localhost:5000/health记录到注册表服务。
零信任身份验证和 CI 集成
NebulaCR 强调无长期注册表密码用于自动化。 CI 系统提供来自可信发行者的 OIDC 身份令牌; nebula-auth 验证签名、应用策略并返回具有严格 TTL 默认值(通常大约五分钟)的范围 JWT。 人工操作员通过标准 OIDC 授权代码流使用 PKCE 针对 Azure AD、Okta 或 Google Workspace 等提供商进行身份验证。
CRD、拉通缓存和速率限制
Kubernetes 运算符管理Tenant(配额、OIDC 绑定)、Project(存储库组和策略)、AccessPolicy(RBAC) 和TokenPolicy(TTL)和机器人帐户)。自述文件记录了诸如docker pull <host>:5000/library/nginx:latest、 GHCR 和 Quay 前缀之类的拉动拉动,以及将docker.io指向 NebulaCR 的containerd镜像节。速率限制适用于每个 IP 和每个使用governor板条箱的租户。
可观测性、审计和合规性
根据docs/下设置的项目文档,NebulaCR 从注册表和身份验证服务公开Prometheus 指标,发出结构化 JSON 日志,并支持OpenTelemetry跟踪以进行更深入的分析。嵌入式仪表板显示 CPU、内存、磁盘、复制运行状况、存储库浏览以及针对推送、拉取和删除的过滤审计跟踪——安全审查的重要证据。SCIM 2.0配置可自动执行与身份提供商的加入-移动-离开周期,从而缩小前员工保留潜在访问权限的窗口。
高可用性、多区域和拉通式缓存
自述文件重点介绍了无状态服务,具有水平 Pod 自动扩展、Pod 中断预算和复制路径断路器。多区域复制被描述为具有弹性控制的异步复制,因此当区域降级时读取可以进行故障转移。拉通缓存可减少上游注册表(包括 Docker Hub、GHCR、GCR、Quay.io 和registry.k8s.io)的带宽和拉取延迟。
入门
对于最小的本地试用,自述文件记录了docker run -p 5000:5000 bwalia/nebulacr:latest、docker compose up -d用于注册表以及使用生成的 JWT 密钥在 5001 上进行身份验证,以及从oci://ghcr.io/bwalia/charts/nebulacr或 GitHub Pages 存储库安装的 Helm。多架构映像在 Docker Hub 和 GHCR 上作为linux/amd64和linux/arm64提供。生产团队将deploy/helm/nebulacr与入口 TLS、可选的 OIDC 和 S3、ServiceMonitor 抓取以及图表中的 NetworkPolicy 模板连接起来。
Workstation 如何帮助
Workstation 跨云和本地环境设计和实施安全平台工程模式 — 私有注册表、GitOps 升级管道、策略即代码和 SRE 可观察性。如需架构审查或交付支持,请联系info@workstation.co.uk。