Cluster Topology
The Cluster API driver for Magnum makes use of the Cluster topology feature of the Cluster API project. This allows it to delegate all of the work around building resources such as the OpenStackCluster
, MachineDeployments
and everything else managed entire by the Cluster API instead of the driver creating all of these resources.
In order to do this, the driver creates a ClusterClass
resource which is called magnum-v{VERSION}
where {VERSION}
is the current version of the driver because of the following reasons:
- This allows us to have multiple different versions of the
ClusterClass
because it is an immutable resource. - This prevents causing a rollout of existing clusters should a change happen to the underlying
ClusterClass
.
It's important to note that there are only one scenarios where the spec.topology.class
for a given Cluster
will be modified and this will be when a cluster upgrade is done. This is because there is an expectation by the user that a rolling restart operation will occur if a cluster upgrade is requested. No other action should be allowed to change the spec.topology.class
of a Cluster
.
For users, it's important to keep in mind that if they want to use a newer ClusterClass
in order to make sure of a new feature available in a newer ClusterClass
, they can simply do an upgrade within Magnum to the same cluster template and it will actually force an update of the spec.topology.class
, which might then naturally cause a full rollout to occur.