diff --git a/cloud/services/container/nodepools/reconcile.go b/cloud/services/container/nodepools/reconcile.go index 8216c83fb..3df3a826a 100644 --- a/cloud/services/container/nodepools/reconcile.go +++ b/cloud/services/container/nodepools/reconcile.go @@ -355,9 +355,12 @@ func (s *Service) checkDiffAndPrepareUpdateConfig(existingNodePool *containerpb. desiredNodePool := scope.ConvertToSdkNodePool(*s.scope.GCPManagedMachinePool, *s.scope.MachinePool, isRegional, s.scope.GCPManagedControlPlane.Spec.ClusterName) // Node version - if s.scope.NodePoolVersion() != nil && *s.scope.NodePoolVersion() != infrav1exp.ConvertFromSdkNodeVersion(existingNodePool.Version) { - needUpdate = true - updateNodePoolRequest.NodeVersion = *s.scope.NodePoolVersion() + if s.scope.NodePoolVersion() != nil { + desiredNodePoolVersion := infrav1exp.ConvertFromSdkNodeVersion(*s.scope.NodePoolVersion()) + if desiredNodePoolVersion != infrav1exp.ConvertFromSdkNodeVersion(existingNodePool.Version) { + needUpdate = true + updateNodePoolRequest.NodeVersion = desiredNodePoolVersion + } } // Kubernetes labels if !cmp.Equal(desiredNodePool.Config.GetLabels(), existingNodePool.Config.Labels) { diff --git a/exp/api/v1beta1/types.go b/exp/api/v1beta1/types.go index 3e9245da7..19e29c0f6 100644 --- a/exp/api/v1beta1/types.go +++ b/exp/api/v1beta1/types.go @@ -110,7 +110,7 @@ func ConvertToSdkAutoscaling(autoscaling *NodePoolAutoScaling) *containerpb.Node // ConvertFromSdkNodeVersion converts GCP SDK node version to k8s version. func ConvertFromSdkNodeVersion(sdkNodeVersion string) string { // For example, the node version returned from GCP SDK can be 1.27.2-gke.2100, we want to convert it to 1.27.2 - return strings.Split(sdkNodeVersion, "-")[0] + return strings.Replace(strings.Split(sdkNodeVersion, "-")[0], "v", "", 1) } // ConvertToSdkCgroupMode converts GCP SDK node version to k8s version.