Skip to content

Commit

Permalink
Cleanup object selector version constraint (#1011)
Browse files Browse the repository at this point in the history
  • Loading branch information
LucaBernstein authored Nov 11, 2024
1 parent e38e7d1 commit 70f830c
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 40 deletions.
5 changes: 1 addition & 4 deletions cmd/gardener-extension-provider-azure/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,8 @@ func NewControllerManagerCommand(ctx context.Context) *cobra.Command {
Namespace: os.Getenv("WEBHOOK_CONFIG_NAMESPACE"),
}

gardenerVersion = new(string)
controllerSwitches = azurecmd.ControllerSwitchOptions()
webhookSwitches = azurecmd.WebhookSwitchOptions(gardenerVersion)
webhookSwitches = azurecmd.WebhookSwitchOptions()
webhookOptions = webhookcmd.NewAddToManagerOptions(
azure.Name,
genericactuator.ShootWebhooksResourceName,
Expand Down Expand Up @@ -215,8 +214,6 @@ func NewControllerManagerCommand(ctx context.Context) *cobra.Command {
}

log.Info("Adding controllers to manager")
*gardenerVersion = generalOpts.Completed().GardenerVersion

configFileOpts.Completed().ApplyETCDStorage(&azurecontrolplaneexposure.DefaultAddOptions.ETCDStorage)
configFileOpts.Completed().ApplyHealthCheckConfig(&healthcheck.DefaultAddOptions.HealthCheckConfig)
healthCheckCtrlOpts.Completed().Apply(&healthcheck.DefaultAddOptions.Controller)
Expand Down
4 changes: 2 additions & 2 deletions pkg/cmd/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,12 @@ func ControllerSwitchOptions() *controllercmd.SwitchOptions {
}

// WebhookSwitchOptions are the webhookcmd.SwitchOptions for the provider webhooks.
func WebhookSwitchOptions(gardenerVersion *string) *webhookcmd.SwitchOptions {
func WebhookSwitchOptions() *webhookcmd.SwitchOptions {
return webhookcmd.NewSwitchOptions(
webhookcmd.Switch(extensionsnetworkwebhook.WebhookName, networkwebhook.AddToManager),
webhookcmd.Switch(acceleratednetworkwebhook.WebhookName, acceleratednetworkwebhook.AddToManager),
webhookcmd.Switch(infrastructurewebhook.WebhookName, infrastructurewebhook.AddToManager),
webhookcmd.Switch(extensionscontrolplanewebhook.WebhookName, controlplanewebhook.AddToManager(gardenerVersion)),
webhookcmd.Switch(extensionscontrolplanewebhook.WebhookName, controlplanewebhook.AddToManager),
webhookcmd.Switch(extensionscontrolplanewebhook.ExposureWebhookName, controlplaneexposurewebhook.AddToManager),
webhookcmd.Switch(extensionscloudproviderwebhook.WebhookName, cloudproviderwebhook.AddToManager),
webhookcmd.Switch(topology.WebhookName, topology.AddToManager),
Expand Down
49 changes: 15 additions & 34 deletions pkg/webhook/controlplane/add.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@
package controlplane

import (
"fmt"

"github.com/Masterminds/semver/v3"
extensionswebhook "github.com/gardener/gardener/extensions/pkg/webhook"
"github.com/gardener/gardener/extensions/pkg/webhook/controlplane"
"github.com/gardener/gardener/extensions/pkg/webhook/controlplane/genericmutator"
Expand All @@ -27,43 +24,27 @@ import (

var (
logger = log.Log.WithName("azure-controlplane-webhook")
// TODO(LucaBernstein): Clean up the gardener version check after October/2024.
versionConstraintGreaterEqual198 *semver.Constraints
)

func init() {
var err error
versionConstraintGreaterEqual198, err = semver.NewConstraint(">= 1.98")
utilruntime.Must(err)
}

// AddToManager creates a webhook and adds it to the manager.
func AddToManager(gardenerVersion *string) func(mgr manager.Manager) (*extensionswebhook.Webhook, error) {
return func(mgr manager.Manager) (*extensionswebhook.Webhook, error) {
var objectSelector *metav1.LabelSelector
if gardenerVersion != nil && len(*gardenerVersion) > 0 {
version, err := semver.NewVersion(*gardenerVersion)
if err != nil {
return nil, fmt.Errorf("failed to parse gardener version: %v", err)
}
if versionConstraintGreaterEqual198.Check(version) {
objectSelector = &metav1.LabelSelector{MatchLabels: map[string]string{v1beta1constants.LabelExtensionProviderMutatedByControlplaneWebhook: "true"}}
}
}

logger.Info("Adding webhook to manager")
fciCodec := oscutils.NewFileContentInlineCodec()
return controlplane.New(mgr, controlplane.Args{
Kind: controlplane.KindShoot,
Provider: azure.Type,
Types: []extensionswebhook.Type{
{Obj: &appsv1.Deployment{}},
{Obj: &vpaautoscalingv1.VerticalPodAutoscaler{}},
{Obj: &extensionsv1alpha1.OperatingSystemConfig{}},
},
ObjectSelector: objectSelector,
Mutator: genericmutator.NewMutator(mgr, NewEnsurer(mgr, logger), oscutils.NewUnitSerializer(),
kubelet.NewConfigCodec(fciCodec), fciCodec, logger),
})
}
func AddToManager(mgr manager.Manager) (*extensionswebhook.Webhook, error) {
logger.Info("Adding webhook to manager")
fciCodec := oscutils.NewFileContentInlineCodec()
return controlplane.New(mgr, controlplane.Args{
Kind: controlplane.KindShoot,
Provider: azure.Type,
Types: []extensionswebhook.Type{
{Obj: &appsv1.Deployment{}},
{Obj: &vpaautoscalingv1.VerticalPodAutoscaler{}},
{Obj: &extensionsv1alpha1.OperatingSystemConfig{}},
},
ObjectSelector: &metav1.LabelSelector{MatchLabels: map[string]string{v1beta1constants.LabelExtensionProviderMutatedByControlplaneWebhook: "true"}},
Mutator: genericmutator.NewMutator(mgr, NewEnsurer(mgr, logger), oscutils.NewUnitSerializer(),
kubelet.NewConfigCodec(fciCodec), fciCodec, logger),
})
}

0 comments on commit 70f830c

Please sign in to comment.