Skip to content

Commit

Permalink
Merge pull request #2071 from mmamczur/multi-networking-informers
Browse files Browse the repository at this point in the history
Multi networking informers
  • Loading branch information
k8s-ci-robot authored Apr 24, 2023
2 parents 2953063 + 3f0201e commit 1d148a8
Show file tree
Hide file tree
Showing 59 changed files with 4,940 additions and 19 deletions.
11 changes: 10 additions & 1 deletion cmd/glbc/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ import (
"k8s.io/client-go/tools/leaderelection/resourcelock"
"k8s.io/client-go/tools/record"
firewallcrclient "k8s.io/cloud-provider-gcp/crd/client/gcpfirewall/clientset/versioned"
networkclient "k8s.io/cloud-provider-gcp/crd/client/network/clientset/versioned"
backendconfigclient "k8s.io/ingress-gce/pkg/backendconfig/client/clientset/versioned"
frontendconfigclient "k8s.io/ingress-gce/pkg/frontendconfig/client/clientset/versioned"
ingparamsclient "k8s.io/ingress-gce/pkg/ingparams/client/clientset/versioned"
Expand Down Expand Up @@ -168,6 +169,14 @@ func main() {
}
}

var networkClient networkclient.Interface
if flags.F.EnableMultiNetworking {
networkClient, err = networkclient.NewForConfig(kubeConfig)
if err != nil {
klog.Fatalf("Failed to create Network client: %v", err)
}
}

ingClassEnabled := flags.F.EnableIngressGAFields && app.IngressClassEnabled(kubeClient)
var ingParamsClient ingparamsclient.Interface
if ingClassEnabled {
Expand Down Expand Up @@ -213,7 +222,7 @@ func main() {
EnableL4ILBDualStack: flags.F.EnableL4ILBDualStack,
EnableL4NetLBDualStack: flags.F.EnableL4NetLBDualStack,
}
ctx := ingctx.NewControllerContext(kubeConfig, kubeClient, backendConfigClient, frontendConfigClient, firewallCRClient, svcNegClient, ingParamsClient, svcAttachmentClient, cloud, namer, kubeSystemUID, ctxConfig)
ctx := ingctx.NewControllerContext(kubeConfig, kubeClient, backendConfigClient, frontendConfigClient, firewallCRClient, svcNegClient, ingParamsClient, svcAttachmentClient, networkClient, cloud, namer, kubeSystemUID, ctxConfig)
go app.RunHTTPServer(ctx.HealthCheck)

if !flags.F.LeaderElection.LeaderElect {
Expand Down
49 changes: 36 additions & 13 deletions pkg/context/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ import (
"k8s.io/client-go/tools/record"
firewallclient "k8s.io/cloud-provider-gcp/crd/client/gcpfirewall/clientset/versioned"
informerfirewall "k8s.io/cloud-provider-gcp/crd/client/gcpfirewall/informers/externalversions/gcpfirewall/v1beta1"
networkclient "k8s.io/cloud-provider-gcp/crd/client/network/clientset/versioned"
informernetwork "k8s.io/cloud-provider-gcp/crd/client/network/informers/externalversions/network/v1"
informergkenetworkparamset "k8s.io/cloud-provider-gcp/crd/client/network/informers/externalversions/network/v1alpha1"
"k8s.io/cloud-provider-gcp/providers/gce"
sav1 "k8s.io/ingress-gce/pkg/apis/serviceattachment/v1"
sav1beta1 "k8s.io/ingress-gce/pkg/apis/serviceattachment/v1beta1"
Expand Down Expand Up @@ -82,19 +85,21 @@ type ControllerContext struct {
ControllerContextConfig
ASMConfigController *cmconfig.ConfigMapConfigController

IngressInformer cache.SharedIndexInformer
ServiceInformer cache.SharedIndexInformer
BackendConfigInformer cache.SharedIndexInformer
FrontendConfigInformer cache.SharedIndexInformer
PodInformer cache.SharedIndexInformer
NodeInformer cache.SharedIndexInformer
EndpointSliceInformer cache.SharedIndexInformer
ConfigMapInformer cache.SharedIndexInformer
SvcNegInformer cache.SharedIndexInformer
IngClassInformer cache.SharedIndexInformer
IngParamsInformer cache.SharedIndexInformer
SAInformer cache.SharedIndexInformer
FirewallInformer cache.SharedIndexInformer
IngressInformer cache.SharedIndexInformer
ServiceInformer cache.SharedIndexInformer
BackendConfigInformer cache.SharedIndexInformer
FrontendConfigInformer cache.SharedIndexInformer
PodInformer cache.SharedIndexInformer
NodeInformer cache.SharedIndexInformer
EndpointSliceInformer cache.SharedIndexInformer
ConfigMapInformer cache.SharedIndexInformer
SvcNegInformer cache.SharedIndexInformer
IngClassInformer cache.SharedIndexInformer
IngParamsInformer cache.SharedIndexInformer
SAInformer cache.SharedIndexInformer
FirewallInformer cache.SharedIndexInformer
NetworkInformer cache.SharedIndexInformer
GKENetworkParamsInformer cache.SharedIndexInformer

ControllerMetrics *metrics.ControllerMetrics

Expand Down Expand Up @@ -141,6 +146,7 @@ func NewControllerContext(
svcnegClient svcnegclient.Interface,
ingParamsClient ingparamsclient.Interface,
saClient serviceattachmentclient.Interface,
networkClient networkclient.Interface,
cloud *gce.Cloud,
clusterNamer *namer.Namer,
kubeSystemUID types.UID,
Expand Down Expand Up @@ -182,6 +188,11 @@ func NewControllerContext(
context.SAInformer = informerserviceattachment.NewServiceAttachmentInformer(saClient, config.Namespace, config.ResyncPeriod, utils.NewNamespaceIndexer())
}

if networkClient != nil {
context.NetworkInformer = informernetwork.NewNetworkInformer(networkClient, config.ResyncPeriod, utils.NewNamespaceIndexer())
context.GKENetworkParamsInformer = informergkenetworkparamset.NewGKENetworkParamSetInformer(networkClient, config.ResyncPeriod, utils.NewNamespaceIndexer())
}

if flags.F.GKEClusterType == ClusterTypeRegional {
context.RegionalCluster = true
}
Expand Down Expand Up @@ -270,6 +281,12 @@ func (ctx *ControllerContext) HasSynced() bool {
if ctx.SAInformer != nil {
funcs = append(funcs, ctx.SAInformer.HasSynced)
}
if ctx.NetworkInformer != nil {
funcs = append(funcs, ctx.NetworkInformer.HasSynced)
}
if ctx.GKENetworkParamsInformer != nil {
funcs = append(funcs, ctx.GKENetworkParamsInformer.HasSynced)
}

if ctx.FirewallInformer != nil {
funcs = append(funcs, ctx.FirewallInformer.HasSynced)
Expand Down Expand Up @@ -358,6 +375,12 @@ func (ctx *ControllerContext) Start(stopCh chan struct{}) {
if ctx.SAInformer != nil {
go ctx.SAInformer.Run(stopCh)
}
if ctx.NetworkInformer != nil {
go ctx.NetworkInformer.Run(stopCh)
}
if ctx.GKENetworkParamsInformer != nil {
go ctx.GKENetworkParamsInformer.Run(stopCh)
}
// Export ingress usage metrics.
go ctx.ControllerMetrics.Run(stopCh)
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/controller/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ func newLoadBalancerController() *LoadBalancerController {
DefaultBackendSvcPort: test.DefaultBeSvcPort,
HealthCheckPath: "/",
}
ctx := context.NewControllerContext(nil, kubeClient, backendConfigClient, nil, nil, nil, nil, nil, fakeGCE, namer, "" /*kubeSystemUID*/, ctxConfig)
ctx := context.NewControllerContext(nil, kubeClient, backendConfigClient, nil, nil, nil, nil, nil, nil, fakeGCE, namer, "" /*kubeSystemUID*/, ctxConfig)
lbc := NewLoadBalancerController(ctx, stopCh)
// TODO(rramkumar): Fix this so we don't have to override with our fake
lbc.instancePool = instancegroups.NewManager(&instancegroups.ManagerConfig{
Expand Down
2 changes: 1 addition & 1 deletion pkg/firewalls/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ func newFirewallController() *FirewallController {
ResyncPeriod: 1 * time.Minute,
DefaultBackendSvcPort: test.DefaultBeSvcPort,
}
ctx := context.NewControllerContext(nil, kubeClient, backendConfigClient, nil, firewallClient, nil, nil, nil, fakeGCE, defaultNamer, "" /*kubeSystemUID*/, ctxConfig)
ctx := context.NewControllerContext(nil, kubeClient, backendConfigClient, nil, firewallClient, nil, nil, nil, nil, fakeGCE, defaultNamer, "" /*kubeSystemUID*/, ctxConfig)
fwc := NewFirewallController(ctx, []string{"30000-32767"}, false, false)
fwc.hasSynced = func() bool { return true }

Expand Down
2 changes: 2 additions & 0 deletions pkg/flags/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ var (
EnableMultipleIGs bool
EnableServiceMetrics bool
EnableNEGLabelPropagation bool
EnableMultiNetworking bool
MaxIGSize int
EnableDegradedMode bool
EnableDualStackNEG bool
Expand Down Expand Up @@ -269,6 +270,7 @@ L7 load balancing. CSV values accepted. Example: -node-port-ranges=80,8080,400-5
flag.BoolVar(&F.EnableL4ILBDualStack, "enable-l4ilb-dual-stack", false, "Enable Dual-Stack handling for L4 Internal Load Balancers")
flag.BoolVar(&F.EnableL4NetLBDualStack, "enable-l4netlb-dual-stack", false, "Enable Dual-Stack handling for L4 External Load Balancers")
flag.BoolVar(&F.EnableMultipleIGs, "enable-multiple-igs", false, "Enable using multiple unmanaged instance groups")
flag.BoolVar(&F.EnableMultiNetworking, "enable-multi-networking", false, "Enable support for multi-networking L4 load balancers.")
flag.IntVar(&F.MaxIGSize, "max-ig-size", 1000, "Max number of instances in Instance Group")
flag.DurationVar(&F.MetricsExportInterval, "metrics-export-interval", 10*time.Minute, `Period for calculating and exporting metrics related to state of managed objects.`)
flag.DurationVar(&F.NegMetricsExportInterval, "neg-metrics-export-interval", 5*time.Second, `Period for calculating and exporting internal neg controller metrics, not usage.`)
Expand Down
2 changes: 1 addition & 1 deletion pkg/l4lb/l4controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -759,7 +759,7 @@ func newServiceController(t *testing.T, fakeGCE *gce.Cloud) *L4Controller {
ResyncPeriod: 1 * time.Minute,
NumL4Workers: 5,
}
ctx := context.NewControllerContext(nil, kubeClient, nil, nil, nil, nil, nil, nil, fakeGCE, namer, "" /*kubeSystemUID*/, ctxConfig)
ctx := context.NewControllerContext(nil, kubeClient, nil, nil, nil, nil, nil, nil, nil, fakeGCE, namer, "" /*kubeSystemUID*/, ctxConfig)
// Add some nodes so that NEG linker kicks in during ILB creation.
nodes, err := test.CreateAndInsertNodes(ctx.Cloud, []string{"instance-1"}, vals.ZoneName)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion pkg/l4lb/l4netlbcontroller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ func buildContext(vals gce.TestClusterValues) *ingctx.ControllerContext {
NumL4NetLBWorkers: 5,
MaxIGSize: 1000,
}
return ingctx.NewControllerContext(nil, kubeClient, nil, nil, nil, nil, nil, nil, fakeGCE, namer, "" /*kubeSystemUID*/, ctxConfig)
return ingctx.NewControllerContext(nil, kubeClient, nil, nil, nil, nil, nil, nil, nil, fakeGCE, namer, "" /*kubeSystemUID*/, ctxConfig)
}

func newL4NetLBServiceController() *L4NetLBController {
Expand Down
2 changes: 1 addition & 1 deletion pkg/psc/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1094,7 +1094,7 @@ func newTestController(clusterType string) *Controller {

flags.F.GKEClusterName = ClusterName
flags.F.GKEClusterType = clusterType
ctx := context.NewControllerContext(nil, kubeClient, nil, nil, nil, nil, nil, saClient, gceClient, resourceNamer, kubeSystemUID, ctxConfig)
ctx := context.NewControllerContext(nil, kubeClient, nil, nil, nil, nil, nil, saClient, nil, gceClient, resourceNamer, kubeSystemUID, ctxConfig)

return NewController(ctx)
}
Expand Down
179 changes: 179 additions & 0 deletions vendor/k8s.io/cloud-provider-gcp/crd/apis/network/v1/annotations.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions vendor/k8s.io/cloud-provider-gcp/crd/apis/network/v1/doc.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 1d148a8

Please sign in to comment.