Skip to content

Commit 3fc8cbe

Browse files
authored
Merge pull request #7401 from farodin91/add-strategy-to-topology
✨ Add Cluster topology field for MachineDeployment Strategy
2 parents b31775b + 16dcbcd commit 3fc8cbe

File tree

9 files changed

+98
-1
lines changed

9 files changed

+98
-1
lines changed

api/v1alpha4/conversion.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ func (src *Cluster) ConvertTo(dstRaw conversion.Hub) error {
7070
dst.Spec.Topology.Workers.MachineDeployments[i].NodeVolumeDetachTimeout = restored.Spec.Topology.Workers.MachineDeployments[i].NodeVolumeDetachTimeout
7171
dst.Spec.Topology.Workers.MachineDeployments[i].NodeDeletionTimeout = restored.Spec.Topology.Workers.MachineDeployments[i].NodeDeletionTimeout
7272
dst.Spec.Topology.Workers.MachineDeployments[i].MinReadySeconds = restored.Spec.Topology.Workers.MachineDeployments[i].MinReadySeconds
73+
dst.Spec.Topology.Workers.MachineDeployments[i].Strategy = restored.Spec.Topology.Workers.MachineDeployments[i].Strategy
7374
dst.Spec.Topology.Workers.MachineDeployments[i].MachineHealthCheck = restored.Spec.Topology.Workers.MachineDeployments[i].MachineHealthCheck
7475
}
7576
}

api/v1alpha4/zz_generated.conversion.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1beta1/cluster_types.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,11 @@ type MachineDeploymentTopology struct {
206206
// +optional
207207
MinReadySeconds *int32 `json:"minReadySeconds,omitempty"`
208208

209+
// The deployment strategy to use to replace existing machines with
210+
// new ones.
211+
// +optional
212+
Strategy *MachineDeploymentStrategy `json:"strategy,omitempty"`
213+
209214
// Variables can be used to customize the MachineDeployment through patches.
210215
// +optional
211216
Variables *MachineDeploymentVariables `json:"variables,omitempty"`

api/v1beta1/zz_generated.deepcopy.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1beta1/zz_generated.openapi.go

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crd/bases/cluster.x-k8s.io_clusters.yaml

Lines changed: 69 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/controllers/topology/cluster/desired_state.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,7 @@ func computeMachineDeployment(_ context.Context, s *scope.Scope, desiredControlP
603603
Spec: clusterv1.MachineDeploymentSpec{
604604
ClusterName: s.Current.Cluster.Name,
605605
MinReadySeconds: machineDeploymentTopology.MinReadySeconds,
606+
Strategy: machineDeploymentTopology.Strategy,
606607
Template: clusterv1.MachineTemplateSpec{
607608
ObjectMeta: clusterv1.ObjectMeta{
608609
Labels: mergeMap(machineDeploymentTopology.Metadata.Labels, machineDeploymentBlueprint.Metadata.Labels),

internal/controllers/topology/cluster/desired_state_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1329,6 +1329,9 @@ func TestComputeMachineDeployment(t *testing.T) {
13291329
nodeVolumeDetachTimeout := metav1.Duration{Duration: 10 * time.Second}
13301330
nodeDeletionTimeout := metav1.Duration{Duration: 10 * time.Second}
13311331
minReadySeconds := int32(5)
1332+
strategy := clusterv1.MachineDeploymentStrategy{
1333+
Type: clusterv1.OnDeleteMachineDeploymentStrategyType,
1334+
}
13321335
mdTopology := clusterv1.MachineDeploymentTopology{
13331336
Metadata: clusterv1.ObjectMeta{
13341337
Labels: map[string]string{"foo": "baz"},
@@ -1341,6 +1344,7 @@ func TestComputeMachineDeployment(t *testing.T) {
13411344
NodeVolumeDetachTimeout: &nodeVolumeDetachTimeout,
13421345
NodeDeletionTimeout: &nodeDeletionTimeout,
13431346
MinReadySeconds: &minReadySeconds,
1347+
Strategy: &strategy,
13441348
}
13451349

13461350
t.Run("Generates the machine deployment and the referenced templates", func(t *testing.T) {
@@ -1368,6 +1372,7 @@ func TestComputeMachineDeployment(t *testing.T) {
13681372
actualMd := actual.Object
13691373
g.Expect(*actualMd.Spec.Replicas).To(Equal(replicas))
13701374
g.Expect(*actualMd.Spec.MinReadySeconds).To(Equal(minReadySeconds))
1375+
g.Expect(*actualMd.Spec.Strategy).To(Equal(strategy))
13711376
g.Expect(*actualMd.Spec.Template.Spec.FailureDomain).To(Equal(failureDomain))
13721377
g.Expect(*actualMd.Spec.Template.Spec.NodeDrainTimeout).To(Equal(nodeDrainTimeout))
13731378
g.Expect(*actualMd.Spec.Template.Spec.NodeDeletionTimeout).To(Equal(nodeDeletionTimeout))

test/e2e/data/infrastructure-docker/v1beta1/main/bases/cluster-with-topology.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ spec:
2929
minReadySeconds: 5
3030
replicas: ${WORKER_MACHINE_COUNT}
3131
failureDomain: fd4
32+
strategy:
33+
rollingUpdate:
34+
maxSurge: "20%"
35+
maxUnavailable: 0
3236
variables:
3337
# We set an empty value to use the default tag kubeadm init is using.
3438
- name: etcdImageTag

0 commit comments

Comments
 (0)