sigs.k8s.io/cluster-api@v1.7.1/docs/book/src/developer/providers/migrations/v0.4-to-v1.0.md (about)

     1  # Cluster API v0.4 compared to v1.0
     2  
     3  ## Minimum Go version
     4  
     5  - The Go version used by Cluster API is still Go 1.16+
     6  
     7  ## Controller Runtime version
     8  
     9  - The Controller Runtime version is now v0.10.+
    10  
    11  ## Controller Tools version (if used)
    12  
    13  - The Controller Tools version is now v0.7.+
    14  
    15  ## Kind version
    16  
    17  - The KIND version used for this release is still v0.11.x
    18  
    19  ## Conversion from v1alpha3 and v1alpha4 to v1beta1 types
    20  
    21  The core ClusterAPI providers will support upgrade from v1alpha3 **and** v1alpha4 to v1beta1. Thus, conversions of API types
    22  from v1alpha3 and v1alpha4 to v1beta1 have been implemented. If other providers also want to support the upgrade from v1alpha3 **and**
    23  v1alpha4, the same conversions have to be implemented.
    24  
    25  ## Certificates
    26  
    27  The `serving-cert` certificates now have organization set to `k8s-sig-cluster-lifecycle`.
    28  
    29  ## Removed items
    30  
    31  ### API Fields
    32  
    33  - **ClusterTopologyLabelName**, a ClusterClass related constant has been deprecated and removed. This label has been replaced by `ClusterTopologyOwnedLabel`.
    34  
    35  - **MachineNodeNameIndex** has been removed from the common types in favor of `api/v1beta1/index.MachineNodeNameField`.
    36  
    37  - **MachineProviderNameIndex** has been removed from common types in favor of `api/v1beta1/index.MachineProviderIDField`.
    38  
    39  ### Clusterctl
    40  
    41  - **clusterctl config provider** has been removed in favor of `clusterctl generate provider`.
    42  
    43  - **clusterctl config cluster** has been removed in favor of `clusterctl generate cluster`.
    44  
    45  ### Utils and other
    46  
    47  - **TemplateSuffix** has been removed in favor of `api/v1alpha4.TemplatePrefix`.
    48  - **AddMachineNodeIndex** has been removed in favor of `api/v1alpha4/index.ByMachineNode`
    49  - **GetMachineFromNode** has been removed. This functionality is now private in the controllers package.
    50  - **ConverReferenceAPIContract** has been removed in favor of `UpdateReferenceAPIContract` in the util/conversion package.
    51  - **ParseMajorMinorPatch** has been removed in favor of `ParseMajorMinorPatch` in the util/version package.
    52  - **GetMachinesForCluster** has been removed in favor of `GetFilteredMachinesForCluster` in the util/collection package.
    53  - **GetControlPlaneMachines** has been removed in favor of `FromMachines(machine).Filter(collections.ControlPlaneMachines(cluster.Name))`  in the util/collection package.
    54  - **GetControlPlaneMachinesFromList** has been removed in favor of `FromMachineList(machines).Filter(collections.ControlPlaneMachines(cluster.Name))` in the util/collection package.
    55  - **GetCRDMetadataFromGVK** has been removed in favor of `GetGVKMetadata`.
    56  - Ensure your template resources support `template.meta` fields. Refer to the [cluster][cluster-contract] and
    57    [machine][machine-contract] provider contract docs for more information. This is not required, but is recommended for
    58    consistency across the infrastructure providers as Cluster API graduates and opens up use cases where coordinating
    59    controllers can use labels and annotations from template infrastructure resources to do external provisioning or
    60    provide configuration information, e.g. [IPAM support for vSphere / bare-metal][capv-ipam]. 
    61  - Labels and annotations from KubeadmControlPlane, MachineDeployment and MachineSet and their `.spec.template.metadata` fields are now selectively propagated to objects controlled by their respective controllers. Refer to [metadata-propagation] for more information.
    62  
    63  ## ⚠ LeaderElectionResourceLock change ⚠
    64  
    65  The v1beta1 release uses "leases" instead of "configmapsleases" as the LeaderElectionResourceLock for all managers leader election including the core controllers, bootstrap and control plane kubeadm and the Docker provider.
    66  This has no user facing impact on brand-new clusters created as v1beta1.
    67  For Cluster API running clusters upgraded through clusterctl this should be ok given that we stop the old controllers.
    68  Users relying on custom upgrades procedures should ensure a migration to v1alpha4 (multilock "configmapsleases") first, which will acquire a leader lock on both resources. After that, they can proceed migrating to v1beta1 ("leases"). As an additional safety step, these users should ensure the old controllers are stopped before running the new ones with the new lock mechanism.
    69  Otherwise, your controller might end up with multiple running instances that each acquired leadership through different resource locks during upgrades and thus act on the same resources concurrently.
    70  
    71  
    72  [cluster-contract]: ./../cluster-infrastructure.md
    73  [machine-contract]: ./../machine-infrastructure.md
    74  [metadata-propagation]: ../../../developer/architecture/controllers/metadata-propagation.md
    75  [capv-ipam]: https://github.com/kubernetes-sigs/cluster-api-provider-vsphere/pull/1210