Skip to content

Commit d4af75d

Browse files
hsmadenikola-jokic
andauthored
Delete config secret when listener pod gets deleted (#4033)
Co-authored-by: Nikola Jokic <[email protected]>
1 parent e335f53 commit d4af75d

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

controllers/actions.github.com/autoscalinglistener_controller.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,19 @@ func (r *AutoscalingListenerReconciler) Reconcile(ctx context.Context, req ctrl.
260260
log.Error(err, "Unable to delete the listener pod", "namespace", listenerPod.Namespace, "name", listenerPod.Name)
261261
return ctrl.Result{}, err
262262
}
263+
264+
// delete the listener config secret as well, so it gets recreated when the listener pod is recreated, with any new data if it exists
265+
var configSecret corev1.Secret
266+
err := r.Get(ctx, types.NamespacedName{Namespace: autoscalingListener.Namespace, Name: scaleSetListenerConfigName(autoscalingListener)}, &configSecret)
267+
switch {
268+
case err == nil && configSecret.DeletionTimestamp.IsZero():
269+
log.Info("Deleting the listener config secret")
270+
if err := r.Delete(ctx, &configSecret); err != nil {
271+
return ctrl.Result{}, fmt.Errorf("failed to delete listener config secret: %w", err)
272+
}
273+
case !kerrors.IsNotFound(err):
274+
return ctrl.Result{}, fmt.Errorf("failed to get the listener config secret: %w", err)
275+
}
263276
}
264277
return ctrl.Result{}, nil
265278
case cs.State.Running != nil:

controllers/actions.github.com/autoscalinglistener_controller_test.go

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ var _ = Describe("Test AutoScalingListener controller", func() {
339339
autoscalingListenerTestInterval).Should(BeEquivalentTo(rulesForListenerRole([]string{updated.Spec.EphemeralRunnerSetName})), "Role should be updated")
340340
})
341341

342-
It("It should re-create pod whenever listener container is terminated", func() {
342+
It("It should re-create pod and config secret whenever listener container is terminated", func() {
343343
// Waiting for the pod is created
344344
pod := new(corev1.Pod)
345345
Eventually(
@@ -355,7 +355,18 @@ var _ = Describe("Test AutoScalingListener controller", func() {
355355
autoscalingListenerTestInterval,
356356
).Should(BeEquivalentTo(autoscalingListener.Name), "Pod should be created")
357357

358+
secret := new(corev1.Secret)
359+
Eventually(
360+
func() error {
361+
return k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerConfigName(autoscalingListener), Namespace: autoscalingListener.Namespace}, secret)
362+
},
363+
autoscalingListenerTestTimeout,
364+
autoscalingListenerTestInterval,
365+
).Should(Succeed(), "Config secret should be created")
366+
358367
oldPodUID := string(pod.UID)
368+
oldSecretUID := string(secret.UID)
369+
359370
updated := pod.DeepCopy()
360371
updated.Status.ContainerStatuses = []corev1.ContainerStatus{
361372
{
@@ -384,6 +395,21 @@ var _ = Describe("Test AutoScalingListener controller", func() {
384395
autoscalingListenerTestTimeout,
385396
autoscalingListenerTestInterval,
386397
).ShouldNot(BeEquivalentTo(oldPodUID), "Pod should be re-created")
398+
399+
// Check if config secret is re-created
400+
Eventually(
401+
func() (string, error) {
402+
secret := new(corev1.Secret)
403+
err := k8sClient.Get(ctx, client.ObjectKey{Name: scaleSetListenerConfigName(autoscalingListener), Namespace: autoscalingListener.Namespace}, secret)
404+
if err != nil {
405+
return "", err
406+
}
407+
408+
return string(secret.UID), nil
409+
},
410+
autoscalingListenerTestTimeout,
411+
autoscalingListenerTestInterval,
412+
).ShouldNot(BeEquivalentTo(oldSecretUID), "Config secret should be re-created")
387413
})
388414
})
389415
})

0 commit comments

Comments
 (0)