Skip to content

Commit

Permalink
Add object selector to the shoot webhook
Browse files Browse the repository at this point in the history
  • Loading branch information
ialidzhikov committed Aug 27, 2024
1 parent 2b5725e commit 502768b
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 14 deletions.
8 changes: 8 additions & 0 deletions pkg/webhook/shoot/add.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
extensionswebhook "github.com/gardener/gardener/extensions/pkg/webhook"
"github.com/gardener/gardener/extensions/pkg/webhook/shoot"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"sigs.k8s.io/controller-runtime/pkg/log"
"sigs.k8s.io/controller-runtime/pkg/manager"
)
Expand All @@ -30,6 +31,13 @@ func AddToManagerWithOptions(mgr manager.Manager, _ AddOptions) (*extensionswebh
{Obj: &corev1.ConfigMap{}},
},
Mutator: NewMutator(),
ObjectSelector: &metav1.LabelSelector{
MatchLabels: map[string]string{
"app": "nginx-ingress",
"component": "controller",
"release": "addons",
},
},
})
}

Expand Down
21 changes: 7 additions & 14 deletions pkg/webhook/shoot/mutator.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import (
extensionswebhook "github.com/gardener/gardener/extensions/pkg/webhook"
"github.com/go-logr/logr"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/log"
)
Expand All @@ -39,22 +38,16 @@ func NewMutator() extensionswebhook.Mutator {

// Mutate mutates resources.
func (m *mutator) Mutate(ctx context.Context, new, _ client.Object) error {
acc, err := meta.Accessor(new)
if err != nil {
return fmt.Errorf("could not create accessor during webhook: %w", err)
configMap, ok := new.(*corev1.ConfigMap)
if !ok {
return fmt.Errorf("wrong object type %T", new)
}

// If the object does have a deletion timestamp then we don't want to mutate anything.
if acc.GetDeletionTimestamp() != nil {
if configMap.GetDeletionTimestamp() != nil {
return nil
}

switch x := new.(type) {
case *corev1.ConfigMap:
switch x.Name {
case "addons-nginx-ingress-controller":
extensionswebhook.LogMutation(logger, x.Kind, x.Namespace, x.Name)
return m.mutateNginxIngressControllerConfigMap(ctx, x)
}
}
return nil
extensionswebhook.LogMutation(logger, configMap.Kind, configMap.Namespace, configMap.Name)
return m.mutateNginxIngressControllerConfigMap(ctx, configMap)
}

0 comments on commit 502768b

Please sign in to comment.