design/20240518.push-to-multiple-registries.md
This checklist contains actions which must be completed before a PR implementing this design can be merged.
The cert-manager project, along with its sub-projects, currently utilizes the quay.io/jetstack registry for pushing OCI (Open Container Initiative) artifacts. This originates from the project's beginnings under Jetstack. However, to reflect the project's growth and establish a more neutral and independent identity, this proposal recommends adding a new OCI artifact registry location without the Jetstack branding.
The primary motivation for this enhancement is to reinforce the independence and neutrality of the cert-manager project. Originally developed by Jetstack, cert-manager currently pushes OCI artifacts to the quay.io/jetstack registry. As the project has grown and evolved into a community-driven initiative, it is essential to establish a neutral artifact repository that better represents the project's diverse and independent nature.
As a new user of cert-manager, I want to find clear documentation that directs me to the appropriate registry for downloading OCI artifacts, so that I can easily set up and use cert-manager in my environment without confusion about which registry to use.
Details:
As an existing user of cert-manager, I want to continue receiving updates from the quay.io/jetstack registry while gradually transitioning to the new registry, so that my current setup remains functional without immediate changes, giving me time to update my configurations.
Details:
Risk: The new registry might introduce security vulnerabilities, such as unauthorized access to artifacts.
Mitigation:
To implement the transition to a new OCI artifact registry, our existing CI/CD pipeline will be updated to push artifacts to both the existing quay.io/jetstack registry and the new registry. This dual-publishing approach ensures continuity and minimizes disruption for current users. We are considering multiple options for the new registry, with "ghcr.io/cert-manager" (GitHub Container Registry) and "quay.io/cert-manager" being the primary candidates. The final registry will be chosen based on community feedback on this proposal. Regardless of the registry, we will also need to update the CI pipeline to authenticate with the new registry, ensuring secure and seamless artifact uploads.
Within projects using makefile modules we may need to make changes to the OCI publish module to handle cases where we need different auth for different registries. After this, the pushing to multiple destinations is already supported by this module and would be a simple change to the config of each repos.
A new E2E tests run should be performed by our nightly automation that runs the E2E suite against the new registry, to ensure that everything is working as expected.
Once the images are being dual published, the official documentation and Helm chart will be updated to reflect the new repository.
By using existing automation that runs the E2E test suite each night we can add automated tests that will pull from the new registry. This tests multiple versions so is a good baseline that the image can be pulled.
Since this proposal has no code changes, it does not have any feature flags. However its graduation should be managed. To accomplish this we should do the following:
Alpha/Beta:
GA:
The criteria for graduation will be a based off maintainer confidence in the new registry, informed by the E2E test runs using the new registries and any feedback from early adopters.
Once we are happy to make this GA the Helm chart will be updated to use the new registry, this will mean that for users using the official Helm chart the change will be automatic. For other users nothing will break by them using the old registry, so they can update their deployment at their own convenience. Furthermore a user could choose to set the registry back to quay.io/jetstack in their Helm configuration if they so choose.
N/A
N/A
N/A
N/A
N/A
N/A
N/A
This proposal does not remove or break any functionality for users. For maintainers, pushing to multiple repositories would make gathering pull metrics more complex.
There are many competing container registries, the two currently in contention (ghcr and quay) were selected because we already have access and availability to push there. They also offer their services for free for open source projects such as ours.