diff --git a/internal/k8s/reconciler/gateway.go b/internal/k8s/reconciler/gateway.go index 053e4a4fb..1f93a0b3c 100644 --- a/internal/k8s/reconciler/gateway.go +++ b/internal/k8s/reconciler/gateway.go @@ -469,7 +469,12 @@ func (g *K8sGateway) ensureDeploymentExists(ctx context.Context) error { if err != nil { return err } - mutated = apigwv1alpha1.MergeDeployment(deployment, mutated, currentDeployment.Spec.Replicas) + + var currentReplicas *int32 + if currentDeployment != nil { + currentReplicas = currentDeployment.Spec.Replicas + } + mutated = apigwv1alpha1.MergeDeployment(deployment, mutated, currentReplicas) if updated, err := g.client.CreateOrUpdateDeployment(ctx, mutated, func() error { return g.client.SetControllerOwnership(g.gateway, mutated) diff --git a/internal/k8s/reconciler/gateway_test.go b/internal/k8s/reconciler/gateway_test.go index fa0136536..390fa339b 100644 --- a/internal/k8s/reconciler/gateway_test.go +++ b/internal/k8s/reconciler/gateway_test.go @@ -474,6 +474,7 @@ func TestGatewayTrackSync(t *testing.T) { Client: client, }) gateway.gateway.Status = gateway.Status() + client.EXPECT().GetDeployment(gomock.Any(), gomock.Any()).Return(nil, nil) client.EXPECT().CreateOrUpdateDeployment(gomock.Any(), gomock.Any(), gomock.Any()).Return(true, nil) require.NoError(t, gateway.TrackSync(context.Background(), func() (bool, error) { return false, nil @@ -495,6 +496,7 @@ func TestGatewayTrackSync(t *testing.T) { }, }) + client.EXPECT().GetDeployment(gomock.Any(), gomock.Any()).Return(nil, nil) client.EXPECT().CreateOrUpdateDeployment(gomock.Any(), gomock.Any(), gomock.Any()).Return(false, nil) client.EXPECT().UpdateStatus(gomock.Any(), gateway.gateway).Return(nil) require.NoError(t, gateway.TrackSync(context.Background(), func() (bool, error) { @@ -510,6 +512,7 @@ func TestGatewayTrackSync(t *testing.T) { }), Client: client, }) + client.EXPECT().GetDeployment(gomock.Any(), gomock.Any()).Return(nil, nil) client.EXPECT().CreateOrUpdateDeployment(gomock.Any(), gomock.Any(), gomock.Any()).Return(false, expected) require.True(t, errors.Is(gateway.TrackSync(context.Background(), func() (bool, error) { return false, nil @@ -522,6 +525,7 @@ func TestGatewayTrackSync(t *testing.T) { }), Client: client, }) + client.EXPECT().GetDeployment(gomock.Any(), gomock.Any()).Return(nil, nil) client.EXPECT().CreateOrUpdateDeployment(gomock.Any(), gomock.Any(), gomock.Any()).Return(false, nil) client.EXPECT().UpdateStatus(gomock.Any(), gateway.gateway).Return(expected) require.Equal(t, expected, gateway.TrackSync(context.Background(), func() (bool, error) { @@ -535,6 +539,8 @@ func TestGatewayTrackSync(t *testing.T) { }), Client: client, }) + + client.EXPECT().GetDeployment(gomock.Any(), gomock.Any()).Return(nil, nil) client.EXPECT().CreateOrUpdateDeployment(gomock.Any(), gomock.Any(), gomock.Any()).Return(false, nil) client.EXPECT().UpdateStatus(gomock.Any(), gateway.gateway).Return(nil) require.NoError(t, gateway.TrackSync(context.Background(), func() (bool, error) { @@ -548,6 +554,7 @@ func TestGatewayTrackSync(t *testing.T) { }), Client: client, }) + client.EXPECT().GetDeployment(gomock.Any(), gomock.Any()).Return(nil, nil) client.EXPECT().CreateOrUpdateDeployment(gomock.Any(), gomock.Any(), gomock.Any()).Return(false, nil) client.EXPECT().UpdateStatus(gomock.Any(), gateway.gateway).Return(nil) require.NoError(t, gateway.TrackSync(context.Background(), func() (bool, error) {