執行摘要
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。