-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create container repo tags for each FCOS release #1367
Comments
Transferring this to the FCOS tracker for more discussion there. |
For reference, older builds are currently available in the raw builds browser (e.g. stable):
Of course, we should very clearly be pushing these things to at least some registry with these tags as you say. Perhaps we could push tags, but with auto-expiration dates by default to discourage using very old images. (OTOH, we aren't garbage collecting the full cosa builds either; one can still access "Fedora CoreOS 31.20191210.3.0 — 3 years ago") |
Long-term, we need to enact the GC policy agreed upon in #99. And I don't see why container images wouldn't be part of that. In that context, it probably makes more sense to not rely on auto-expiring tags and instead have the GC centralized by whatever process will execute it at the cosa build level. Short-term, some aggressive auto-expiring tags (e.g. 3 months?) sounds like a reasonable way to give some breathing room to users opting into the experimental stuff. |
Another option here is to move older images to e.g.
|
This was discussed in the Fedora CoreOS community meeting today. We discussed the merits of different options but ultimately ran out of time. A few of us agreed to meet and bring back a proposal to the community:
|
In the meeting @jlebon @cgwalters @bgilbert and I had today we came up with this proposal:
|
+1 That proposal sounds fantastic guys. Thanks!! |
Will there also be major version tags updated with each stable release (such as |
No. Fedora CoreOS has a stream update model that's more like a rolling release. The version numbers in each build ID are mostly informational (see explanation of build ID here). They're not intended to be used for pinning on a particular set of content for an extended period of time. |
OK, looking at #1263 I think having tagged versions in the repository is a dependency. This was actually noted in #1263 (comment) A corollary to that is that we cannot GC the version tags beyond the oldest build that acts as an upgrade barrier to the oldest release for which we want to support upgrades. This is a bit subtle, but simplifying imagine that we have releases 34, 35, 36, 37), where there's a barrier for each release. Fedora 34 was released almost two years ago. Let's assume that we don't care about people updating from 34 to 35 anymore - everyone should be on at least 35. Hence, we can GC the tags for 34 and 35 at this point, but not 36 or 37. |
Ah yeah, good catch on the upgrade barriers. Isn't it the case though that we could GC all old releases except for the barrier releases? |
Updated proposal to skip pruning barrier releases as discussed in today's community meeting. |
So there's two models to implementing tagging:
The nice thing about the latter is there's one less thing running operationally. I did a bit of looking and quay.io does have a programmatic API to set the expiration for an image: https://access.redhat.com/documentation/en-us/red_hat_quay/3.9/html/red_hat_quay_api_guide/red_hat_quay_application_programming_interface_api#changetag So we could tweak our upload process to do this. Or I guess, have the controller just set one if it sees an image without. |
We touched on this in #1367 (comment):
|
Note that quay.io has two modes of implementing expiration - one via a label, and one via API. The label one is obviously super dangerous for copying the image and honestly is just overall a bad idea IMO. I'm talking about the API driven one. |
That's definitely interesting and not something I was aware of before. I don't think I understand how the link enables you to change the expiration date of the image, though. Is there an example somewhere on the internet of how to make an API call to do it? |
OK now I see there is a field for |
This tag the manifest with the full version number. First step for coreos/fedora-coreos-tracker#1367
This tag the manifest with the full version number. First step for coreos/fedora-coreos-tracker#1367
This script calls skopeo delete to prune image from a remote directory. Currently only supports the FCOS tag structure. If no duration is specified, no image will be pruned. See coreos/fedora-coreos-tracker#1367 See coreos/fedora-coreos-pipeline#995
This script calls skopeo delete to prune image from a remote directory. Currently only supports the FCOS tag structure. If no duration is specified, no image will be pruned. See coreos/fedora-coreos-tracker#1367 See coreos/fedora-coreos-pipeline#995
This script calls skopeo delete to prune image from a remote directory. Currently only supports the FCOS tag structure. If no duration is specified, no image will be pruned. See coreos/fedora-coreos-tracker#1367 See coreos/fedora-coreos-pipeline#995
This script calls skopeo delete to prune image from a remote directory. Currently only supports the FCOS tag structure. This consumes the same policy.yaml defined in coreos#3798 See coreos/fedora-coreos-tracker#1367 See coreos/fedora-coreos-pipeline#995
This script calls skopeo delete to prune image from a remote directory. Currently only supports the FCOS tag structure. This consumes the same policy.yaml defined in coreos#3798 See coreos/fedora-coreos-tracker#1367 See coreos/fedora-coreos-pipeline#995
This script calls skopeo delete to prune image from a remote directory. Currently only supports the FCOS tag structure. This consumes the same policy.yaml defined in coreos#3798 See coreos/fedora-coreos-tracker#1367 See coreos/fedora-coreos-pipeline#995
This script calls skopeo delete to prune image from a remote directory. Currently only supports the FCOS tag structure. This consumes the same policy.yaml defined in coreos#3798 See coreos/fedora-coreos-tracker#1367 See coreos/fedora-coreos-pipeline#995
This script calls skopeo delete to prune image from a remote directory. Currently only supports the FCOS tag structure. This consumes the same policy.yaml defined in coreos#3798 See coreos/fedora-coreos-tracker#1367 See coreos/fedora-coreos-pipeline#995
This script calls skopeo delete to prune image from a remote directory. Currently only supports the FCOS tag structure. This consumes the same policy.yaml defined in coreos#3798 See coreos/fedora-coreos-tracker#1367 See coreos/fedora-coreos-pipeline#995
This script calls skopeo delete to prune image from a remote directory. Currently only supports the FCOS tag structure. This consumes the same policy.yaml defined in coreos#3798 See coreos/fedora-coreos-tracker#1367 See coreos/fedora-coreos-pipeline#995
This script calls skopeo delete to prune image from a remote directory. Currently only supports the FCOS tag structure. This consumes the same policy.yaml defined in coreos#3798 See coreos/fedora-coreos-tracker#1367 See coreos/fedora-coreos-pipeline#995
This script calls skopeo delete to prune image from a remote directory. Currently only supports the FCOS tag structure. This consumes the same policy.yaml defined in #3798 See coreos/fedora-coreos-tracker#1367 See coreos/fedora-coreos-pipeline#995
This tag the manifest with the full version number. First step for coreos/fedora-coreos-tracker#1367
Landed in coreos/fedora-coreos-pipeline@a1a6db8 |
Thanks, looks like this is working: https://quay.io/repository/fedora/fedora-coreos?tab=tags |
Only targetting developpement streams for now so I can monitor and fix issues if needed. The 2 weeks policy for dev streams was decided in coreos/fedora-coreos-tracker#1367 (comment)
Only targetting developpement streams for now so I can monitor and fix issues if needed. The 2 weeks policy for dev streams was decided in coreos/fedora-coreos-tracker#1367 (comment)
Pruning dev streams after 2 weeks and stable streams after 2 months as decided in coreos/fedora-coreos-tracker#1367 (comment)
Pruning dev streams after 2 weeks and stable streams after 2 months as decided in coreos/fedora-coreos-tracker#1367 (comment)
Can we get container tags for each FCOS release so we can pin to a specific version or roll back to a specific version if we encounter issues with one of the stream layer updates?
For example coreos/butane#428 has me blocked with the current
quay.io/fedora/fedora-coreos:stable
tag being unusable. I can't pull an older image by SHA because quay.io seems to prune untagged SHAs over time which is making it hard for me to roll back until coreos/butane#428 gets addressed. I wish I could just pullquay.io/fedora/fedora-coreos:36.20221001.3.0
for example.It would be super great to have a history of each FCOS release as a container tag so we can have a safety net for rollbacks.
The text was updated successfully, but these errors were encountered: