-
Notifications
You must be signed in to change notification settings - Fork 34
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
update_agent: support rebase to OCI pullspec #1241
base: main
Are you sure you want to change the base?
Conversation
f0713e1
to
1ca8a87
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very quick look but looks good 👍🏻
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's cross-link to coreos/fedora-coreos-tracker#1823 in the commit message for the larger context.
11aa880
to
7000352
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I updated this to use ostree-remote-image
so we validate the ostree signatures, as suggested in coreos/fedora-coreos-tracker#1823 (comment)
I think this is ready for review now. I will clean up and sqash commits once the design is agreed
src/rpm_ostree/cli_status.rs
Outdated
pub fn base_revision(&self) -> String { | ||
self.base_checksum | ||
self.container_image_reference | ||
.clone() | ||
.map(|pullspec| { | ||
pullspec | ||
.strip_prefix("ostree-remote-image:fedora:docker://") | ||
.map(|s| s.to_string()) | ||
}) | ||
.flatten() | ||
.or(self.base_checksum.clone()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe it would make more sense to add an Option<String>
to the Deployement
struct to be able to have both the pullspec and the base commit ?
However the cincinnati graph does not contains checksum in the OCI case so we can't compare ostree commits when doing rebase
later anyway.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
haven't had the need for it in the Zincati context, except maybe if we want Zincati to do OCI -> OSTree ? (in that case, after calling rpm-ostree deploy
zincati will fail as the checksum won't match
OK, had some more discussion with Jlebon and travier today and there are some more things to flesh out |
Allright, I think this is ready for review now. I highlighted a couple of things I am unsure of. |
90c5b25
to
450550b
Compare
Switch boot images to use OCI for updates. This is a step towards bootable containers support and bootc rebase. See https://fedoraproject.org/wiki/Changes/CoreOSOstree2OCIUpdates Requires coreos/zincati#1241 See coreos/fedora-coreos-tracker#1823
add9bf7
to
c5e0459
Compare
src/rpm_ostree/cli_finalize.rs
Outdated
// get the latest commit but that would be racy, so let's finalize the latest | ||
// commit. | ||
if release.is_oci { | ||
cmd.arg("--allow-missing-checksum") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think probably the cleaner thing is to have rpm-ostree accept a digested pullspec the way it accepts commit checksums and it can verify that it matches the digested pullspec that was staged. Then we can drop this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, definitely, but that requires work in rpm-ostree, let's not block on it ?
Allright, I reworked this PR a bunch following the review comments, that ended up being pretty substantial changes. Overview :
TestingHere are my notes to test this out it case someone wants to experiment: Start a VM with Zincati disabled : Rebase to an OCI image in graph (recent enough to get
Now import Zincati build with this PR then:
Zincati should now pick up an OCI update through the OCI graph Getting zincati custom build in the COSA VMWhile we can make a custom FCOS build with an override to get our Zincati build inside, it will be erased by the content of the OCI image with a rebase, so here is how I did, after building zincati and copy the binary into
In the meantime, I'll squash this and try to make commits that make sense :) |
d3a9096
to
6043d0b
Compare
6043d0b
to
a221fbc
Compare
a99b5bf
to
5b17cae
Compare
When going through the update graph, Zincati searches for a node that matches the current deployement, as the starting point for the update. If the graph does not contains a matching node, zincati errors silently. While this should almost never happen, it's useful to print a warning to explain the situation if we hit that case.
Add support for local OCI deployements, no longer erroring out. Use the `ostree-ext` crate to parse the ostree image reference properly. This will allow zincati to query the OCI graph and rebase to OCI images for updates. Also change the base-commit-meta object to support the OCI case where this is actually an escaped serialized OCI manifest. Use the `oci-spec` crate to deserialize it and extract the core os stream info from the base OCI annotations. This works around coreos/rpm-ostree#5196
71ad09b
to
6f2313f
Compare
Local deployements are now unserialized with a enum being either `Checksum` or `Pullspec`. This will cue the cincinnati client to request the OCI graph in the pullspec case. [1] The custom-origin-description, if set, is passed along the rebase call, and the custom-url is updated to match the new pullspec. [2] Finally, update the polkit policy to allow Zincati to do a rebase operation. [1] Requires coreos/fedora-coreos-cincinnati#99 and coreos/rpm-ostree#5120
6f2313f
to
eb6f05e
Compare
Switch boot images to use OCI for updates. This is a step towards bootable containers support and bootc rebase. See https://fedoraproject.org/wiki/Changes/CoreOSOstree2OCIUpdates Requires coreos/zincati#1241 See coreos/fedora-coreos-tracker#1823
Add a configuration knob in
update
to optionnaly use OCI pullspec instead of ostree checksums.This will default to false.
Requires coreos/fedora-coreos-cincinnati#99 and coreos/rpm-ostree#5120