@@ -276,16 +276,87 @@ are evaluated here.
276
276
277
277
## Conclusion
278
278
279
- A wide range of open-source container registry projects (Quay, Harbor, Dragonfly,
280
- Keppel, Portus, Kraken, etc.) has been carefully evaluated based on the two main
281
- factors that reviewed their open-source health as well as their range of supported
282
- features.
283
-
284
- TODO
279
+ A wide range of open-source container registry projects (Quay, Harbor, Dragonfly,
280
+ Keppel, Portus, Kraken, etc.) has been carefully evaluated based on the two main
281
+ factors: the open-source health and range of supported features.
282
+
283
+ The open-source software health is crucial and container registry implementation should
284
+ pass it to be SCS-compliant. The OSS health check evaluates several important metrics
285
+ of an open source software like whether the code/community/development/design is
286
+ fully open or whether the project's maturity, security, and activity are on the desired
287
+ level. This check also evaluates the lock-in risk due to possible single points of
288
+ failure or internal project conflicts and several other aspects.
289
+ Overall, three projects passed the OSS health checks:
290
+ - [ Harbor] [ harbor ]
291
+ - [ Project Quay] [ projectquay ]
292
+ - [ Dragonfly] [ dragonfly ]
293
+
294
+ The above projects were then evaluated from the "supported features" perspective.
295
+ The [ Required and desirable features check] ( #required-and-desirable-features-check )
296
+ did an overview of the feature set of open-source container registry implementations
297
+ and map SCS requirements (and nice-to-haves) against it. The list of required features
298
+ is quite long and contains features that are primarily focused on security
299
+ (authentication, vulnerability scanning, content trust, and validation, etc.),
300
+ scalability (HA mode, registry replication, p2p integration, etc.) and visibility
301
+ (monitoring), see the full list [ here] ( #required-and-desirable-features-check ) .
302
+ These requirements should ensure that the selected container registry implementation
303
+ could be offered by the CSPs as a secure and enterprise-ready solution.
304
+
305
+ Let's discuss and compare the projects Dragonfly, Quay, and Harbor in the following
306
+ section.
307
+
308
+ [ Dragonfly] [ dragonfly ] is a healthy open-source project with a growing community
309
+ and CNCF incubating maturity level. It is considered stable, and it is used by many
310
+ companies in their production environments. We currently see that it is not as
311
+ feature-rich as Harbor or Quay, hence it is not considered the best choice here.
312
+ It seems, that its main aim (currently) is to offer (an efficient, stable, and secure)
313
+ container distribution solution based on p2p technology. This improves download
314
+ efficiency and saves bandwidth across CSPs. It also offers integration possibilities
315
+ that allow one to use it as a p2p distribution network via a "preheat" API. This
316
+ integration was implemented in the Harbor project via Dragonfly "preheat" adapter, and
317
+ both parties may benefit from the integration. The Harbor profits from Dragonfly's p2p
318
+ distribution capabilities and on the other hand the Dragonfly project profits from
319
+ Harbor's feature-rich container registry "frontend".
320
+
321
+ [ Quay] [ projectquay ] is the Red Hat open-source project. Its OSS health is on a good level,
322
+ the community around is growing, the maturity is considered also well as the project
323
+ represents the code that powers enterprise solutions Red Hat Quay and Quay.io.
324
+ Besides this, there is still a place for OSS health improvement. It is hard to
325
+ distinguish the risk of project failure caused by low diversity across the companies
326
+ because the project's owners/maintainers list is not publicly available and is stored in
327
+ the Red Hat private repository.
328
+ Its feature set is impressive and this project fulfills all must-haves defined in
329
+ this document. Quay gives you security over your repositories with image
330
+ vulnerability scanning (Clair integration), content validation (Cosign integration),
331
+ and access controls. Harbor stands out here as it allows users to use also project Trivy
332
+ for vulnerability scanning and project Notary for content trust and validation.
333
+ Project Quay also provides a scalable open-source platform to host container images
334
+ across any size organization. One drawback in comparison to Harbor is that the proxy cache
335
+ feature is still marked as a [ Technology Preview] ( https://docs.projectquay.io/use_quay.html#quay-as-cache-proxy ) ,
336
+ hence this feature may not be completely production-ready yet. On the other hand,
337
+ the project Quay supports [ building Dockerfiles] ( https://docs.projectquay.io/use_quay.html#build-support )
338
+ using a set of workers on e.g. Kubernetes. Build triggers, such as GitHub webhooks
339
+ can be configured to automatically build new versions of repositories when new code is
340
+ committed. This feature is not supported by the [ Harbor project] ( https://github.com/goharbor/harbor/issues/6235 ) .
341
+
342
+ [ Harbor] [ harbor ] is an outstanding open-source, community-led project with fully open and
343
+ well-documented processes. Its large and thriving community powers the fast-growing
344
+ the feature set and attracts more and more developers and companies to active contributions.
345
+ Harbor’s CNCF graduation in 2020 made it one of the best choices for enterprise
346
+ customers that want to operate container registries securely and in a large scale.
347
+ Its community size, landscape, and CNCF graduation make a significant difference in
348
+ comparison to Quay's open-source health capabilities.
349
+ The list of supported features is also impressive. This project fulfills all must-haves
350
+ defined in this document and overcome project Quay with a production-ready proxy cache
351
+ feature and more options that the user may use in case of image vulnerability scanning
352
+ and content validation. In addition, Harbor is able to store non-OCI Helm charts
353
+ via ChartMuseum integration and profits from p2p distribution capabilities via
354
+ integration of p2p solutions like Kraken and Dragonfly.
285
355
286
356
# Decision
287
357
288
- _ Decision_
358
+ Based on the research and conclusion above we've decided to use the ** Harbor** project
359
+ as an SCS-compliant container registry implementation.
289
360
290
361
291
362
<!-- Frequently used references -->
0 commit comments