Skip to content

Commit bab0990

Browse files
committed
Add ADR: Requirements for container registry
This commit adds the conclusion and decision parts of ADR. Signed-off-by: Matej Feder <[email protected]>
1 parent b62d9bb commit bab0990

File tree

1 file changed

+78
-7
lines changed

1 file changed

+78
-7
lines changed

Decisions/scs-XXXX-v1-requirements-for-container-registry.md

+78-7
Original file line numberDiff line numberDiff line change
@@ -276,16 +276,87 @@ are evaluated here.
276276

277277
## Conclusion
278278

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.
285355

286356
# Decision
287357

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.
289360

290361

291362
<!-- Frequently used references -->

0 commit comments

Comments
 (0)