kubevirt / community

Community content
https://kubevirt.io
46 stars 101 forks source link

instancetype: Add ControllerRevision upgrade proposal #289

Closed lyarwood closed 3 weeks ago

lyarwood commented 2 months ago

What this PR does / why we need it:

VirtualMachines referencing instance types or preferences have ControllerRevisions created containing a point in time copy of the referenced resource. See the user guide for more on this:

https://kubevirt.io/user-guide/virtual_machines/instancetypes/#versioning

While this allows KubeVirt to always produce the same VirtualMachineInstance at run time regardless of changes to the original resource it does currently mean that KubeVirt has to support older versions of the instancetype.kubevirt.io CRDs for the lifetime of these VirtualMachines.

This proposal outlines a solution to this by upgrading older ControllerRevisions during a VirtualMachine resync by the vm-controller.

Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged): Fixes #

Special notes for your reviewer:

The original design proposal is here: https://github.com/kubevirt/community/pull/226

An old WIP series (drafted before sick leave) is here : https://github.com/kubevirt/kubevirt/pull/10545

Checklist

This checklist is not enforcing, but it's a reminder of items that could be relevant to every PR. Approvers are expected to review this list.

Release note:

NONE
kubevirt-bot commented 2 months ago

Skipping CI for Draft Pull Request. If you want CI signal for your change, please convert it to an actual PR. You can still manually trigger a test run with /test all

kubevirt-bot commented 2 months ago

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: Once this PR has been reviewed and has the lgtm label, please assign vladikr for approval. For more information see the Kubernetes Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files: - **[OWNERS](https://github.com/kubevirt/community/blob/main/OWNERS)** Approvers can indicate their approval by writing `/approve` in a comment Approvers can cancel approval by writing `/approve cancel` in a comment