-
Spike
-
Resolution: Won't Do
-
Blocker
-
None
-
None
Value Statement
ACM is a platform aligned operator, supporting managed clusters running N-2 through N+1 versions of OCP for a given release N.
Any plugins that wish to leverage multicluster support provided by ACM may want to support all API versions of CRDs provided by their operators that may be encountered across the fleet.
For example, suppose operator FOO(N) wants to integrate with ACM(N) and also provides support for N-2 through N+1 when installed on OCP.
- ACM(N) could be managing an OCP(N-2) cluster. And this cluster could have FOO(N-3) installed on it, because FOO supports N+1.
- ACM(N) could be managing an OCP(N+1) cluster, and this cluster could have FOO(N+2) installed on it, because FOO supports N-2.
Overall, FOO(N) running in a multicluster context should support CRD API versions spanning those provided by FOO(N-3) to FOO(N+2). The number of possible API versions to support would vary depending on the deprecation and removal policy.
For the kubevirt-plugin, support is only generally only for the matching N version of OCP, so the range is smaller: N-2 to N+1
ACM can assist plugins in providing multicluster support by providing functions to determine which API versions are available on a given managed cluster.
Definition of Done for Spike
- Prototype a function that can return the available API versions given a cluster, group, and kind
- The caller should be able to provide a default version that is returned without performing any communication to a managed cluster for the single-cluster case. This is to avoid branching in the calling code.
- Prototype use of this function for the kubevirt-plugin for the VirtualMachineSnapshots kind in the snapshot.kubevirt.io group
- Copy types for older versions from @kubevirt-ui/kubevirt-api
- If UI changes are needed, forward-port them from previous releases of the kubevirt-plugin
- Demonstrate creating snapshots with different API versions from the tree view running in a multicluster contextÂ