Skip to content

Commit

Permalink
Don't redeploy worker on Shoot deletion
Browse files Browse the repository at this point in the history
```improvement operator
During deletion of a Shoot, the `gardenlet` does not redeploy the `Worker` extension resource anymore, as this sometimes caused leaking resources that blocked the deletion of the Shoot's namespace.
```
  • Loading branch information
timebertt authored and vpnachev committed Jul 31, 2020
1 parent 6dd8803 commit 9d111b2
Showing 1 changed file with 0 additions and 31 deletions.
31 changes: 0 additions & 31 deletions pkg/gardenlet/controller/shoot/shoot_control_delete.go
Expand Up @@ -52,7 +52,6 @@ func (c *Controller) runDeleteShootFlow(o *operation.Operation) *gardencorev1bet
kubeAPIServerDeploymentFound = true
kubeControllerManagerDeploymentFound = true
controlPlaneDeploymentNeeded bool
workerDeploymentNeeded bool
tasksWithErrors []string
err error
)
Expand Down Expand Up @@ -169,10 +168,6 @@ func (c *Controller) runDeleteShootFlow(o *operation.Operation) *gardencorev1bet
controlPlaneDeploymentNeeded, err = needsControlPlaneDeployment(o, kubeAPIServerDeploymentFound)
return err
}),
errors.ToExecute("Check whether worker deployment is needed", func() error {
workerDeploymentNeeded, err = needsWorkerDeployment(o)
return err
}),
)

if err != nil {
Expand Down Expand Up @@ -250,16 +245,6 @@ func (c *Controller) runDeleteShootFlow(o *operation.Operation) *gardencorev1bet

// Redeploy the worker extensions, and kube-controller-manager to make sure all components that depend on the
// cloud provider secret are restarted in case it has changed.
computeShootOSConfig = g.Add(flow.Task{
Name: "Computing operating system specific configuration for shoot workers",
Fn: flow.TaskFn(botanist.ComputeShootOperatingSystemConfig).RetryUntilTimeout(defaultInterval, defaultTimeout).DoIf(cleanupShootResources && workerDeploymentNeeded && !shootNamespaceInDeletion),
Dependencies: flow.NewTaskIDs(deploySecrets, waitUntilControlPlaneReady, initializeShootClients),
})
deployWorker = g.Add(flow.Task{
Name: "Configuring shoot worker pools",
Fn: flow.TaskFn(botanist.DeployWorker).RetryUntilTimeout(defaultInterval, defaultTimeout).DoIf(cleanupShootResources && workerDeploymentNeeded && !shootNamespaceInDeletion),
Dependencies: flow.NewTaskIDs(deploySecrets, deployCloudProviderSecret, initializeShootClients, computeShootOSConfig),
})
deployKubeControllerManager = g.Add(flow.Task{
Name: "Deploying Kubernetes controller manager",
Fn: flow.TaskFn(botanist.DeployKubeControllerManager).DoIf(cleanupShootResources && kubeControllerManagerDeploymentFound && !shootNamespaceInDeletion).RetryUntilTimeout(defaultInterval, defaultTimeout),
Expand Down Expand Up @@ -297,7 +282,6 @@ func (c *Controller) runDeleteShootFlow(o *operation.Operation) *gardencorev1bet
initializeShootClients,
cleanExtendedAPIs,
deployControlPlane,
deployWorker,
deployKubeControllerManager,
waitForControllersToBeActive,
)
Expand Down Expand Up @@ -574,21 +558,6 @@ func needsControlPlaneDeployment(o *operation.Operation, kubeAPIServerDeployment
return false, nil
}

func needsWorkerDeployment(o *operation.Operation) (bool, error) {
var (
client = o.K8sSeedClient.DirectClient()
namespace = o.Shoot.SeedNamespace
name = o.Shoot.Info.Name
)

// If the `Worker` resource does no longer exist then we don't want to re-deploy it.
exists, err := extensionResourceStillExists(client, &extensionsv1alpha1.Worker{}, namespace, name)
if err != nil {
return false, err
}
return exists, nil
}

func extensionResourceStillExists(c client.Client, obj runtime.Object, namespace, name string) (bool, error) {
if err := c.Get(context.TODO(), kutil.Key(namespace, name), obj); err != nil {
if apierrors.IsNotFound(err) {
Expand Down

0 comments on commit 9d111b2

Please sign in to comment.