Skip to content

Commit

Permalink
disable network overlay for cilium by default
Browse files Browse the repository at this point in the history
  • Loading branch information
DockToFuture committed Nov 24, 2022
1 parent eb851f7 commit b3b3df5
Show file tree
Hide file tree
Showing 20 changed files with 1,868 additions and 65 deletions.
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ require (
github.com/gardener/etcd-druid v0.12.3
github.com/gardener/gardener v1.59.0
github.com/gardener/gardener-extension-networking-calico v1.27.0
github.com/gardener/gardener-extension-networking-cilium v1.18.0
github.com/gardener/machine-controller-manager v0.45.0
github.com/go-logr/logr v1.2.3
github.com/golang/mock v1.6.0
Expand Down Expand Up @@ -48,7 +49,6 @@ require (
github.com/cyphar/filepath-securejoin v0.2.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/dsnet/compress v0.0.1 // indirect
github.com/elazarl/goproxy v0.0.0-20191011121108-aa519ddbe484 // indirect
github.com/emicklei/go-restful/v3 v3.8.0 // indirect
github.com/evanphx/json-patch v4.12.0+incompatible // indirect
github.com/evanphx/json-patch/v5 v5.6.0 // indirect
Expand Down Expand Up @@ -81,7 +81,6 @@ require (
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kr/pretty v0.3.0 // indirect
github.com/kubernetes-csi/external-snapshotter/v2 v2.1.4 // indirect
github.com/magiconair/properties v1.8.6 // indirect
github.com/mailru/easyjson v0.7.6 // indirect
Expand All @@ -106,6 +105,7 @@ require (
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.32.1 // indirect
github.com/prometheus/procfs v0.7.3 // indirect
github.com/rogpeppe/go-internal v1.6.1 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/spf13/afero v1.8.2 // indirect
github.com/spf13/cast v1.4.1 // indirect
Expand Down
6 changes: 2 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,6 @@ github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdf
github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
github.com/elazarl/goproxy v0.0.0-20191011121108-aa519ddbe484 h1:pEtiCjIXx3RvGjlUJuCNxNOw0MNblyR9Wi+vJGBFh+8=
github.com/elazarl/goproxy v0.0.0-20191011121108-aa519ddbe484/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8=
github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw=
Expand Down Expand Up @@ -177,6 +175,8 @@ github.com/gardener/gardener v1.59.0 h1:9T8C2lPwaFTKxUi3afpVjmbao/uDcn5lfYRmFqMF
github.com/gardener/gardener v1.59.0/go.mod h1:4vopE/Pg4LJud1CRg80rAcp94v83MJIgktlHNcSKO84=
github.com/gardener/gardener-extension-networking-calico v1.27.0 h1:L51BcYbrcpQjmGl+E9HsW+xcJVZOfjbe403DRDwuUME=
github.com/gardener/gardener-extension-networking-calico v1.27.0/go.mod h1:MURFRmYPHiXSfmJ82S3nXH3qGcszeYQwhMVKn/J5XoU=
github.com/gardener/gardener-extension-networking-cilium v1.18.0 h1:LNBMqVAkltHBDkP+C5Vq/dFgve/YOG8MIvTJJuWWCtU=
github.com/gardener/gardener-extension-networking-cilium v1.18.0/go.mod h1:bXE/CwHLju+AMsqYXdFIQTt1r+GRHOTW8hJ9EIR84Z0=
github.com/gardener/hvpa-controller/api v0.5.0 h1:f4F3O7YUrenwh4S3TgPREPiB287JjjUiUL18OqPLyAA=
github.com/gardener/hvpa-controller/api v0.5.0/go.mod h1:QQl3ELkCaki+8RhXl0FZMfvnm0WCGwGJlGmrxJj6lvM=
github.com/gardener/machine-controller-manager v0.45.0 h1:rpf0PHRXJMGY93oMruNP+tnMawKJXhhzCACyNJsT8Lo=
Expand Down Expand Up @@ -387,7 +387,6 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
Expand Down Expand Up @@ -506,7 +505,6 @@ github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0
github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
Expand Down
91 changes: 70 additions & 21 deletions pkg/admission/mutator/shoot.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ import (
"fmt"

calicov1alpha1 "github.com/gardener/gardener-extension-networking-calico/pkg/apis/calico/v1alpha1"
ciliumv1alpha1 "github.com/gardener/gardener-extension-networking-cilium/pkg/apis/cilium/v1alpha1"

"github.com/gardener/gardener-extension-networking-calico/pkg/calico"
"github.com/gardener/gardener-extension-networking-cilium/pkg/cilium"

extensionswebhook "github.com/gardener/gardener/extensions/pkg/webhook"
gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1"
Expand All @@ -44,46 +48,81 @@ func (s *shoot) InjectScheme(scheme *runtime.Scheme) error {

// Mutate mutates the given shoot object.
func (s *shoot) Mutate(ctx context.Context, new, old client.Object) error {
overlay := &calicov1alpha1.Overlay{Enabled: false}

shoot, ok := new.(*gardencorev1beta1.Shoot)
if !ok {
return fmt.Errorf("wrong object type %T", new)
}

networkConfig, err := s.decodeNetworkingConfig(shoot.Spec.Networking.ProviderConfig)
if err != nil {
return err
}
switch shoot.Spec.Networking.Type {
case calico.ReleaseName:
overlay := &calicov1alpha1.Overlay{Enabled: false}
networkConfig, err := s.decodeCalicoNetworkConfig(shoot.Spec.Networking.ProviderConfig)
if err != nil {
return err
}

if old == nil && networkConfig.Overlay == nil {
networkConfig.Overlay = overlay
}
if old == nil && networkConfig.Overlay == nil {
networkConfig.Overlay = overlay
}

if old != nil && networkConfig.Overlay == nil {
oldShoot, ok := old.(*gardencorev1beta1.Shoot)
if !ok {
return fmt.Errorf("wrong object type %T", old)
if old != nil && networkConfig.Overlay == nil {
oldShoot, ok := old.(*gardencorev1beta1.Shoot)
if !ok {
return fmt.Errorf("wrong object type %T", old)
}
if oldShoot.DeletionTimestamp != nil {
return nil
}
oldNetworkConfig, err := s.decodeCalicoNetworkConfig(oldShoot.Spec.Networking.ProviderConfig)
if err != nil {
return err
}
if oldNetworkConfig.Overlay != nil {
networkConfig.Overlay = oldNetworkConfig.Overlay
}
}
if oldShoot.DeletionTimestamp != nil {
return nil
shoot.Spec.Networking.ProviderConfig = &runtime.RawExtension{
Object: networkConfig,
}
oldNetworkConfig, err := s.decodeNetworkingConfig(oldShoot.Spec.Networking.ProviderConfig)

case cilium.ReleaseName:
overlay := &ciliumv1alpha1.Overlay{Enabled: false}

networkConfig, err := s.decodeCiliumNetworkConfig(shoot.Spec.Networking.ProviderConfig)
if err != nil {
return err
}
if oldNetworkConfig.Overlay != nil {
networkConfig.Overlay = oldNetworkConfig.Overlay

if old == nil && networkConfig.Overlay == nil {
networkConfig.Overlay = overlay
}

if old != nil && networkConfig.Overlay == nil {
oldShoot, ok := old.(*gardencorev1beta1.Shoot)
if !ok {
return fmt.Errorf("wrong object type %T", old)
}
if oldShoot.DeletionTimestamp != nil {
return nil
}
oldNetworkConfig, err := s.decodeCiliumNetworkConfig(oldShoot.Spec.Networking.ProviderConfig)
if err != nil {
return err
}
if oldNetworkConfig.Overlay != nil {
networkConfig.Overlay = oldNetworkConfig.Overlay
}
}
shoot.Spec.Networking.ProviderConfig = &runtime.RawExtension{
Object: networkConfig,
}
}
shoot.Spec.Networking.ProviderConfig = &runtime.RawExtension{
Object: networkConfig,
}

return nil
}

func (s *shoot) decodeNetworkingConfig(network *runtime.RawExtension) (*calicov1alpha1.NetworkConfig, error) {
func (s *shoot) decodeCalicoNetworkConfig(network *runtime.RawExtension) (*calicov1alpha1.NetworkConfig, error) {
networkConfig := &calicov1alpha1.NetworkConfig{}
if network != nil && network.Raw != nil {
if _, _, err := s.decoder.Decode(network.Raw, nil, networkConfig); err != nil {
Expand All @@ -92,3 +131,13 @@ func (s *shoot) decodeNetworkingConfig(network *runtime.RawExtension) (*calicov1
}
return networkConfig, nil
}

func (s *shoot) decodeCiliumNetworkConfig(network *runtime.RawExtension) (*ciliumv1alpha1.NetworkConfig, error) {
networkConfig := &ciliumv1alpha1.NetworkConfig{}
if network != nil && network.Raw != nil {
if _, _, err := s.decoder.Decode(network.Raw, nil, networkConfig); err != nil {
return nil, err
}
}
return networkConfig, nil
}
35 changes: 1 addition & 34 deletions pkg/admission/mutator/webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,11 @@
package mutator

import (
"github.com/gardener/gardener-extension-networking-calico/pkg/calico"
"github.com/gardener/gardener-extension-provider-gcp/pkg/gcp"
extensionspredicate "github.com/gardener/gardener/extensions/pkg/predicate"
extensionswebhook "github.com/gardener/gardener/extensions/pkg/webhook"
gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1"

"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/event"
"sigs.k8s.io/controller-runtime/pkg/log"
"sigs.k8s.io/controller-runtime/pkg/manager"
"sigs.k8s.io/controller-runtime/pkg/predicate"
Expand All @@ -43,39 +40,9 @@ func New(mgr manager.Manager) (*extensionswebhook.Webhook, error) {
Provider: gcp.Type,
Name: Name,
Path: "/webhooks/mutate",
Predicates: []predicate.Predicate{extensionspredicate.GardenCoreProviderType(gcp.Type), createGCPPredicate()},
Predicates: []predicate.Predicate{extensionspredicate.GardenCoreProviderType(gcp.Type)},
Mutators: map[extensionswebhook.Mutator][]extensionswebhook.Type{
NewShootMutator(): {{Obj: &gardencorev1beta1.Shoot{}}},
},
})
}

func createGCPPredicate() predicate.Funcs {
f := func(obj client.Object) bool {
if obj == nil {
return false
}

shoot, ok := obj.(*gardencorev1beta1.Shoot)
if !ok {
return false
}

return shoot.Spec.Networking.Type == calico.ReleaseName
}

return predicate.Funcs{
CreateFunc: func(event event.CreateEvent) bool {
return f(event.Object)
},
UpdateFunc: func(event event.UpdateEvent) bool {
return f(event.ObjectNew)
},
GenericFunc: func(event event.GenericEvent) bool {
return f(event.Object)
},
DeleteFunc: func(event event.DeleteEvent) bool {
return f(event.Object)
},
}
}
Loading

0 comments on commit b3b3df5

Please sign in to comment.