github.com/ironcore-dev/gardener-extension-provider-ironcore@v0.3.2-0.20240314231816-8336447fb9a0/pkg/webhook/controlplane/add.go (about)

     1  // SPDX-FileCopyrightText: 2023 SAP SE or an SAP affiliate company and IronCore contributors
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package controlplane
     5  
     6  import (
     7  	extensionswebhook "github.com/gardener/gardener/extensions/pkg/webhook"
     8  	"github.com/gardener/gardener/extensions/pkg/webhook/controlplane"
     9  	"github.com/gardener/gardener/extensions/pkg/webhook/controlplane/genericmutator"
    10  	extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1"
    11  	"github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/kubelet"
    12  	oscutils "github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/utils"
    13  	appsv1 "k8s.io/api/apps/v1"
    14  	vpaautoscalingv1 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1"
    15  	"sigs.k8s.io/controller-runtime/pkg/log"
    16  	"sigs.k8s.io/controller-runtime/pkg/manager"
    17  
    18  	"github.com/ironcore-dev/gardener-extension-provider-ironcore/pkg/ironcore"
    19  )
    20  
    21  var (
    22  	logger = log.Log.WithName("ironcore-controlplane-webhook")
    23  	// GardenletManagesMCM specifies whether the machine-controller-manager should be managed.
    24  	GardenletManagesMCM bool
    25  )
    26  
    27  // AddToManager creates a webhook and adds it to the manager.
    28  func AddToManager(mgr manager.Manager) (*extensionswebhook.Webhook, error) {
    29  	logger.Info("Adding webhook to manager")
    30  	fciCodec := oscutils.NewFileContentInlineCodec()
    31  	return controlplane.New(mgr, controlplane.Args{
    32  		Kind:     controlplane.KindShoot,
    33  		Provider: ironcore.Type,
    34  		Types: []extensionswebhook.Type{
    35  			{Obj: &appsv1.Deployment{}},
    36  			{Obj: &vpaautoscalingv1.VerticalPodAutoscaler{}},
    37  			{Obj: &extensionsv1alpha1.OperatingSystemConfig{}},
    38  		},
    39  		Mutator: genericmutator.NewMutator(mgr, NewEnsurer(logger, GardenletManagesMCM), oscutils.NewUnitSerializer(),
    40  			kubelet.NewConfigCodec(fciCodec), fciCodec, logger),
    41  	})
    42  }