diff --git a/k8s/crds/kops.k8s.io_clusters.yaml b/k8s/crds/kops.k8s.io_clusters.yaml index 9275741cd2..aec4ef2488 100644 --- a/k8s/crds/kops.k8s.io_clusters.yaml +++ b/k8s/crds/kops.k8s.io_clusters.yaml @@ -598,6 +598,11 @@ spec: clusterName: description: ClusterName is the instance prefix for the cluster. type: string + concurrentNodeSyncs: + description: 'ConcurrentNodeSyncs is the number of workers concurrently + synchronizing nodes. (default: 1)' + format: int32 + type: integer configureCloudRoutes: description: ConfigureCloudRoutes enables CIDRs allocated with to be configured on the cloud provider. diff --git a/pkg/apis/kops/componentconfig.go b/pkg/apis/kops/componentconfig.go index 314c894b1c..7b828a0d14 100644 --- a/pkg/apis/kops/componentconfig.go +++ b/pkg/apis/kops/componentconfig.go @@ -716,6 +716,8 @@ type CloudControllerManagerConfig struct { CPURequest *resource.Quantity `json:"cpuRequest,omitempty"` // NodeStatusUpdateFrequency is the duration between node status updates. (default: 5m) NodeStatusUpdateFrequency *metav1.Duration `json:"nodeStatusUpdateFrequency,omitempty" flag:"node-status-update-frequency"` + // ConcurrentNodeSyncs is the number of workers concurrently synchronizing nodes. (default: 1) + ConcurrentNodeSyncs *int32 `json:"concurrentNodeSyncs,omitempty" flag:"concurrent-node-syncs"` } // KubeSchedulerConfig is the configuration for the kube-scheduler diff --git a/pkg/apis/kops/v1alpha2/componentconfig.go b/pkg/apis/kops/v1alpha2/componentconfig.go index 646ae78032..7572f38482 100644 --- a/pkg/apis/kops/v1alpha2/componentconfig.go +++ b/pkg/apis/kops/v1alpha2/componentconfig.go @@ -722,6 +722,8 @@ type CloudControllerManagerConfig struct { CPURequest *resource.Quantity `json:"cpuRequest,omitempty"` // NodeStatusUpdateFrequency is the duration between node status updates. (default: 5m) NodeStatusUpdateFrequency *metav1.Duration `json:"nodeStatusUpdateFrequency,omitempty" flag:"node-status-update-frequency"` + // ConcurrentNodeSyncs is the number of workers concurrently synchronizing nodes. (default: 1) + ConcurrentNodeSyncs *int32 `json:"concurrentNodeSyncs,omitempty" flag:"concurrent-node-syncs"` } // KubeSchedulerConfig is the configuration for the kube-scheduler diff --git a/pkg/apis/kops/v1alpha2/zz_generated.conversion.go b/pkg/apis/kops/v1alpha2/zz_generated.conversion.go index a70ea606d0..a204e33004 100644 --- a/pkg/apis/kops/v1alpha2/zz_generated.conversion.go +++ b/pkg/apis/kops/v1alpha2/zz_generated.conversion.go @@ -2234,6 +2234,7 @@ func autoConvert_v1alpha2_CloudControllerManagerConfig_To_kops_CloudControllerMa out.EnableLeaderMigration = in.EnableLeaderMigration out.CPURequest = in.CPURequest out.NodeStatusUpdateFrequency = in.NodeStatusUpdateFrequency + out.ConcurrentNodeSyncs = in.ConcurrentNodeSyncs return nil } @@ -2267,6 +2268,7 @@ func autoConvert_kops_CloudControllerManagerConfig_To_v1alpha2_CloudControllerMa out.EnableLeaderMigration = in.EnableLeaderMigration out.CPURequest = in.CPURequest out.NodeStatusUpdateFrequency = in.NodeStatusUpdateFrequency + out.ConcurrentNodeSyncs = in.ConcurrentNodeSyncs return nil } diff --git a/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go b/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go index c83853e09d..06d3462a83 100644 --- a/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go +++ b/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go @@ -870,6 +870,11 @@ func (in *CloudControllerManagerConfig) DeepCopyInto(out *CloudControllerManager *out = new(v1.Duration) **out = **in } + if in.ConcurrentNodeSyncs != nil { + in, out := &in.ConcurrentNodeSyncs, &out.ConcurrentNodeSyncs + *out = new(int32) + **out = **in + } return } diff --git a/pkg/apis/kops/v1alpha3/componentconfig.go b/pkg/apis/kops/v1alpha3/componentconfig.go index ea57398015..813c021f56 100644 --- a/pkg/apis/kops/v1alpha3/componentconfig.go +++ b/pkg/apis/kops/v1alpha3/componentconfig.go @@ -713,6 +713,8 @@ type CloudControllerManagerConfig struct { CPURequest *resource.Quantity `json:"cpuRequest,omitempty"` // NodeStatusUpdateFrequency is the duration between node status updates. (default: 5m) NodeStatusUpdateFrequency *metav1.Duration `json:"nodeStatusUpdateFrequency,omitempty" flag:"node-status-update-frequency"` + // ConcurrentNodeSyncs is the number of workers concurrently synchronizing nodes. (default: 1) + ConcurrentNodeSyncs *int32 `json:"concurrentNodeSyncs,omitempty" flag:"concurrent-node-syncs"` } // KubeSchedulerConfig is the configuration for the kube-scheduler diff --git a/pkg/apis/kops/v1alpha3/zz_generated.conversion.go b/pkg/apis/kops/v1alpha3/zz_generated.conversion.go index 0dc4b30de7..08065fac73 100644 --- a/pkg/apis/kops/v1alpha3/zz_generated.conversion.go +++ b/pkg/apis/kops/v1alpha3/zz_generated.conversion.go @@ -2336,6 +2336,7 @@ func autoConvert_v1alpha3_CloudControllerManagerConfig_To_kops_CloudControllerMa out.EnableLeaderMigration = in.EnableLeaderMigration out.CPURequest = in.CPURequest out.NodeStatusUpdateFrequency = in.NodeStatusUpdateFrequency + out.ConcurrentNodeSyncs = in.ConcurrentNodeSyncs return nil } @@ -2369,6 +2370,7 @@ func autoConvert_kops_CloudControllerManagerConfig_To_v1alpha3_CloudControllerMa out.EnableLeaderMigration = in.EnableLeaderMigration out.CPURequest = in.CPURequest out.NodeStatusUpdateFrequency = in.NodeStatusUpdateFrequency + out.ConcurrentNodeSyncs = in.ConcurrentNodeSyncs return nil } diff --git a/pkg/apis/kops/v1alpha3/zz_generated.deepcopy.go b/pkg/apis/kops/v1alpha3/zz_generated.deepcopy.go index 07cad0064e..b96bd35fbf 100644 --- a/pkg/apis/kops/v1alpha3/zz_generated.deepcopy.go +++ b/pkg/apis/kops/v1alpha3/zz_generated.deepcopy.go @@ -781,6 +781,11 @@ func (in *CloudControllerManagerConfig) DeepCopyInto(out *CloudControllerManager *out = new(v1.Duration) **out = **in } + if in.ConcurrentNodeSyncs != nil { + in, out := &in.ConcurrentNodeSyncs, &out.ConcurrentNodeSyncs + *out = new(int32) + **out = **in + } return } diff --git a/pkg/apis/kops/zz_generated.deepcopy.go b/pkg/apis/kops/zz_generated.deepcopy.go index eb94664ad0..89d5332b00 100644 --- a/pkg/apis/kops/zz_generated.deepcopy.go +++ b/pkg/apis/kops/zz_generated.deepcopy.go @@ -878,6 +878,11 @@ func (in *CloudControllerManagerConfig) DeepCopyInto(out *CloudControllerManager *out = new(v1.Duration) **out = **in } + if in.ConcurrentNodeSyncs != nil { + in, out := &in.ConcurrentNodeSyncs, &out.ConcurrentNodeSyncs + *out = new(int32) + **out = **in + } return } diff --git a/tests/integration/update_cluster/complex/data/aws_s3_object_cluster-completed.spec_content b/tests/integration/update_cluster/complex/data/aws_s3_object_cluster-completed.spec_content index f3c8476ebf..57149b7972 100644 --- a/tests/integration/update_cluster/complex/data/aws_s3_object_cluster-completed.spec_content +++ b/tests/integration/update_cluster/complex/data/aws_s3_object_cluster-completed.spec_content @@ -35,6 +35,7 @@ spec: allocateNodeCIDRs: true clusterCIDR: 100.96.0.0/11 clusterName: complex.example.com + concurrentNodeSyncs: 5 configureCloudRoutes: false enableLeaderMigration: true image: registry.k8s.io/provider-aws/cloud-controller-manager:v1.24.15 diff --git a/tests/integration/update_cluster/complex/data/aws_s3_object_complex.example.com-addons-aws-cloud-controller.addons.k8s.io-k8s-1.18_content b/tests/integration/update_cluster/complex/data/aws_s3_object_complex.example.com-addons-aws-cloud-controller.addons.k8s.io-k8s-1.18_content index 4331accd17..53e72fd62e 100644 --- a/tests/integration/update_cluster/complex/data/aws_s3_object_complex.example.com-addons-aws-cloud-controller.addons.k8s.io-k8s-1.18_content +++ b/tests/integration/update_cluster/complex/data/aws_s3_object_complex.example.com-addons-aws-cloud-controller.addons.k8s.io-k8s-1.18_content @@ -35,6 +35,7 @@ spec: - --allocate-node-cidrs=true - --cluster-cidr=100.96.0.0/11 - --cluster-name=complex.example.com + - --concurrent-node-syncs=5 - --configure-cloud-routes=false - --enable-leader-migration=true - --leader-elect=true diff --git a/tests/integration/update_cluster/complex/data/aws_s3_object_complex.example.com-addons-bootstrap_content b/tests/integration/update_cluster/complex/data/aws_s3_object_complex.example.com-addons-bootstrap_content index 6ddf20e448..ec7302ed0a 100644 --- a/tests/integration/update_cluster/complex/data/aws_s3_object_complex.example.com-addons-bootstrap_content +++ b/tests/integration/update_cluster/complex/data/aws_s3_object_complex.example.com-addons-bootstrap_content @@ -113,7 +113,7 @@ spec: version: 9.99.0 - id: k8s-1.18 manifest: aws-cloud-controller.addons.k8s.io/k8s-1.18.yaml - manifestHash: 9f2124a3cd64512b87897b80a3e8eea5bd3bff91ff77102394b1fdcb86c98686 + manifestHash: 82074c9f079b6bf85b323acce3f6c18ccc49d62d3c59656ecdd28198ed48729d name: aws-cloud-controller.addons.k8s.io selector: k8s-addon: aws-cloud-controller.addons.k8s.io diff --git a/tests/integration/update_cluster/complex/in-legacy-v1alpha2.yaml b/tests/integration/update_cluster/complex/in-legacy-v1alpha2.yaml index cb8fce4724..00214db35f 100644 --- a/tests/integration/update_cluster/complex/in-legacy-v1alpha2.yaml +++ b/tests/integration/update_cluster/complex/in-legacy-v1alpha2.yaml @@ -25,6 +25,8 @@ spec: - 1.1.1.0/24 - pl-44444444 channel: stable + cloudControllerManager: + concurrentNodeSyncs: 5 cloudProvider: aws cloudLabels: Owner: John Doe diff --git a/tests/integration/update_cluster/complex/in-v1alpha2.yaml b/tests/integration/update_cluster/complex/in-v1alpha2.yaml index 69447acfd0..4a33490a9f 100644 --- a/tests/integration/update_cluster/complex/in-v1alpha2.yaml +++ b/tests/integration/update_cluster/complex/in-v1alpha2.yaml @@ -25,6 +25,8 @@ spec: - 1.1.1.0/24 - pl-44444444 channel: stable + cloudControllerManager: + concurrentNodeSyncs: 5 cloudProvider: aws cloudLabels: Owner: John Doe