-
Notifications
You must be signed in to change notification settings - Fork 35
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
leverage container-image-reference-digest from rpm-ostree for OCI updates #1272
Comments
(tangent) You don't need this anymore for quite some time, where did you find it?
Can you be more specific? What breaks? Why? |
Discussing this further with Dusty, we realized we kinda need this actually before we can even switch over It does seem like a cleaner UX to implement this. But this does also intersect with the idea I had in coreos/rpm-ostree#5120 (comment) to point the custom URL to the OCI graph. What's nice with that is that the origin configuration is the Zincati graph configuration. They're naturally coupled. But OTOH, it makes for an awkward UX because it wouldn't work, as one would have expected, to just do e.g. So overall, I lean more towards not doing that now and instead just have the actual tagged refspec in the origin, and have Zincati learn to look at |
copy/pasta from local notes. I'll remove it from them.
IIUC it's because we're using the
so if someone rebases with |
Note that a side effect of what i suggest in the description here will cause |
Nice find.
That should be quite straightforward to do. |
Ok so I started to make the code change to do this. Pulling the digest from So yes, someone can rebase to
We would need something like |
|
This pull the container digest from the rpm-ostree status, independently of what `container-image-reference` is. This value is then used to find ourselves in the update graph. This allow to rebase to a tag, (version or stream) while still allowing zincati to pick-up updates. However, if no custom description is given, rpm-ostree status won't easily show what stream the node is following: ``` [root@cosa-devsh core]# rpm-ostree status State: idle AutomaticUpdatesDriver: Zincati DriverState: active; update staged: 41.20250215.2.0; reboot delayed due to active user sessions Deployments: ostree-remote-image:fedora:docker://quay.io/fedora/fedora-coreos@sha256:e60a16be2dd7e6fdcb30e61a452ced46d0e8e473810d25f82a34eee78f6ce430 Digest: sha256:e60a16be2dd7e6fdcb30e61a452ced46d0e8e473810d25f82a34eee78f6ce430 Version: 41.20250215.2.0 (2025-02-17T11:43:37Z) Diff: 125 upgraded ● ostree-remote-image:fedora:registry:quay.io/fedora/fedora-coreos:41.20250105.2.0 Digest: sha256:c4a15145a232d882ccf2ed32d22c06c01a7cf62317eb966a98340ae4bd56dfa6 Version: 41.20250105.2.0 (2025-01-06T19:46:25Z) ``` See coreos#1272 for more details.
I would also reiterate here while I totally understand the rationale in keeping the upgrade graph in the short and even medium term, I am still skeptical that it should be required in the longer term versus something like bootc-dev/bootc#640 for transitions, and using container tags to encode barriers and control upgrades in general. The latter especially is the guidance I'd give to bootc users. |
Right yeah, I think this came up before when we were evaluating the options. It shouldn't be hard to add this to rpm-ostree. I can pick that up. |
Opened coreos/rpm-ostree#5325 for this. While I was there, also added support for finalization via OCI digest as discussed in #1241 (comment).
Not against that approach FWIW. The hooks approach has its appeal (though I think a limitation there in that specific bootc proposal is to deal with migration issues related to the container stack itself, right?). Some of my concerns in coreos/rpm-ostree#1882 I think are still relevant. At the end of the day though, we (at the bootc level) need to be able to have good support for update drivers that want to do fancier things. So FCOS exercising that path is useful too. I think also with coreos/fedora-coreos-tracker#1872, the overhead with the FCOS approach is not terrible for what you get in return (phased rollouts and barriers). Specifically the phased rollouts part (I guess in general really, but I know this one is of more interest than the graph), I would love to be able to share code there. I'm personally also open to moving away from Zincati long term if it means more sharing and retaining some of those features. |
Was discussing with @jlebon and found out that once we have switched and are using OCI for updates we'll be in a position where the analog of
sudo rpm-ostree rebase "fedora/${ARCH}/coreos/${STREAM}"
won't really work.i.e. if you
sudo rpm-ostree rebase ostree-remote-image:fedora:registry:quay.io/fedora/fedora-coreos:stable
then your zincati updates will break.I think we need to still keep this working and I think we can. Enough information is in the
rpm-ostree status --json
output:So we have the container digest as well as the name we are following so we should be able to pull off the tag from what we are following and use the digest instead.
We could actually lean in to this strategy even more by relying on it in zincati by default (i.e. not just handling a corner case but making it part of the strategy), which would allow for more information to be shown to the user without having to leverage CustomOrigin:
i.e. this:
versus:
It shows you what "stream" we are following along with the actual digest instead of relying on customOrigin.
The text was updated successfully, but these errors were encountered: