Skip to content

Commit 58ec6ae

Browse files
authored
Merge pull request #647 from yvetteli0314/master
Add syncDefaultPodRanges change for Multi-networking default Param an…
2 parents 202bcb4 + baff5fc commit 58ec6ae

File tree

26 files changed

+982
-222
lines changed

26 files changed

+982
-222
lines changed

cmd/cloud-controller-manager/gkenetworkparamsetcontroller.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ package main
33
import (
44
"context"
55
"fmt"
6+
"net"
67
"time"
78

89
cloudprovider "k8s.io/cloud-provider"
910
networkclientset "k8s.io/cloud-provider-gcp/crd/client/network/clientset/versioned"
1011
networkinformers "k8s.io/cloud-provider-gcp/crd/client/network/informers/externalversions"
1112
gkenetworkparamsetcontroller "k8s.io/cloud-provider-gcp/pkg/controller/gkenetworkparamset"
13+
"k8s.io/cloud-provider-gcp/pkg/controller/nodeipam/ipam"
1214
"k8s.io/cloud-provider-gcp/providers/gce"
1315
"k8s.io/cloud-provider/app"
1416
cloudcontrollerconfig "k8s.io/cloud-provider/app/config"
@@ -40,18 +42,50 @@ func startGkeNetworkParamsController(ccmConfig *cloudcontrollerconfig.CompletedC
4042
return nil, false, err
4143
}
4244

45+
// the CloudAllocator needs cluster cidrs for default GNP
46+
clusterCIDRs := []*net.IPNet{}
47+
if ipam.CIDRAllocatorType(ccmConfig.ComponentConfig.KubeCloudShared.CIDRAllocatorType) == ipam.CloudAllocatorType {
48+
clusterCIDRs, err = validClusterCIDR(ccmConfig.ComponentConfig.KubeCloudShared.ClusterCIDR)
49+
if err != nil {
50+
return nil, false, err
51+
}
52+
}
53+
4354
nwInfFactory := networkinformers.NewSharedInformerFactory(networkClient, 30*time.Second)
4455
nwInformer := nwInfFactory.Networking().V1().Networks()
4556
gnpInformer := nwInfFactory.Networking().V1().GKENetworkParamSets()
4657

4758
gkeNetworkParamsetController := gkenetworkparamsetcontroller.NewGKENetworkParamSetController(
59+
controllerCtx.InformerFactory.Core().V1().Nodes(),
4860
networkClient,
4961
gnpInformer,
5062
nwInformer,
5163
gceCloud,
5264
nwInfFactory,
65+
clusterCIDRs,
5366
)
5467

5568
go gkeNetworkParamsetController.Run(1, controllerCtx.Stop, controllerCtx.ControllerManagerMetrics)
5669
return nil, true, nil
5770
}
71+
72+
// validClusterCIDR process CIDR form config and validates the cluster CIDR
73+
// with stack type and returns a list of typed cidrs and error
74+
func validClusterCIDR(clusterCIDRFromFlag string) ([]*net.IPNet, error) {
75+
// failure: bad cidrs in config
76+
clusterCIDRs, dualStack, err := processCIDRs(clusterCIDRFromFlag)
77+
if err != nil {
78+
return nil, err
79+
}
80+
81+
// failure: more than one cidr but they are not configured as dual stack
82+
if len(clusterCIDRs) > 1 && !dualStack {
83+
return nil, fmt.Errorf("len of ClusterCIDRs==%v and they are not configured as dual stack (at least one from each IPFamily", len(clusterCIDRs))
84+
}
85+
86+
// failure: more than cidrs is not allowed even with dual stack
87+
if len(clusterCIDRs) > 2 {
88+
return nil, fmt.Errorf("len of clusters is:%v > more than max allowed of 2", len(clusterCIDRs))
89+
}
90+
return clusterCIDRs, nil
91+
}

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,15 @@ require (
2828
k8s.io/kubelet v0.29.0
2929
k8s.io/metrics v0.29.0
3030
k8s.io/utils v0.0.0-20230726121419-3b25d923346b
31-
sigs.k8s.io/controller-tools v0.12.0
31+
sigs.k8s.io/controller-tools v0.13.0
3232
)
3333

3434
require (
3535
cloud.google.com/go/compute/metadata v0.2.3
3636
github.com/hashicorp/go-multierror v1.1.1
3737
github.com/natefinch/atomic v1.0.1
3838
k8s.io/cloud-provider v0.29.0
39-
k8s.io/cloud-provider-gcp/crd v0.0.0-20230608185813-17ff4d5f2987
39+
k8s.io/cloud-provider-gcp/crd v0.0.0-20231206221110-9fb2d417fa43
4040
k8s.io/cloud-provider-gcp/providers v0.0.0-00010101000000-000000000000
4141
k8s.io/kubernetes v1.29.0
4242
)

go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -539,8 +539,8 @@ k8s.io/client-go v0.29.0 h1:KmlDtFcrdUzOYrBhXHgKw5ycWzc3ryPX5mQe0SkG3y8=
539539
k8s.io/client-go v0.29.0/go.mod h1:yLkXH4HKMAywcrD82KMSmfYg2DlE8mepPR4JGSo5n38=
540540
k8s.io/cloud-provider v0.29.0 h1:Qgk/jHsSKGRk/ltTlN6e7eaNuuamLROOzVBd0RPp94M=
541541
k8s.io/cloud-provider v0.29.0/go.mod h1:gBCt7YYKFV4oUcJ/0xF9lS/9il4MxKunJ+ZKvh39WGo=
542-
k8s.io/cloud-provider-gcp/crd v0.0.0-20230608185813-17ff4d5f2987 h1:tnvHnW8RW2knxRIa0Z1x1WFafKiRz4Y6tcD8N1rlLNg=
543-
k8s.io/cloud-provider-gcp/crd v0.0.0-20230608185813-17ff4d5f2987/go.mod h1:cZ2yOeXgSgSwuFDLXYX28FVLOOC99fTjuAMyVrsLTYs=
542+
k8s.io/cloud-provider-gcp/crd v0.0.0-20231206221110-9fb2d417fa43 h1:cjM5PnhRbAWMbiz7Lr59B+t5vGSOqQVVJVdCysZvPI8=
543+
k8s.io/cloud-provider-gcp/crd v0.0.0-20231206221110-9fb2d417fa43/go.mod h1:a0fK8UZd7VumJ457hG1t4Mj4Y2tUdLi68po7kwktyZQ=
544544
k8s.io/code-generator v0.29.0 h1:2LQfayGDhaIlaamXjIjEQlCMy4JNCH9lrzas4DNW1GQ=
545545
k8s.io/code-generator v0.29.0/go.mod h1:5bqIZoCxs2zTRKMWNYqyQWW/bajc+ah4rh0tMY8zdGA=
546546
k8s.io/component-base v0.29.0 h1:T7rjd5wvLnPBV1vC4zWd/iWRbV8Mdxs+nGaoaFzGw3s=
@@ -570,8 +570,8 @@ k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSn
570570
k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
571571
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0 h1:TgtAeesdhpm2SGwkQasmbeqDo8th5wOBA5h/AjTKA4I=
572572
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0/go.mod h1:VHVDI/KrK4fjnV61bE2g3sA7tiETLn8sooImelsCx3Y=
573-
sigs.k8s.io/controller-tools v0.12.0 h1:TY6CGE6+6hzO7hhJFte65ud3cFmmZW947jajXkuDfBw=
574-
sigs.k8s.io/controller-tools v0.12.0/go.mod h1:rXlpTfFHZMpZA8aGq9ejArgZiieHd+fkk/fTatY8A2M=
573+
sigs.k8s.io/controller-tools v0.13.0 h1:NfrvuZ4bxyolhDBt/rCZhDnx3M2hzlhgo5n3Iv2RykI=
574+
sigs.k8s.io/controller-tools v0.13.0/go.mod h1:5vw3En2NazbejQGCeWKRrE7q4P+CW8/klfVqP8QZkgA=
575575
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
576576
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
577577
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=

pkg/controller/gkenetworkparamset/BUILD

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,20 @@ go_library(
1111
visibility = ["//visibility:public"],
1212
deps = [
1313
"//pkg/controllermetrics",
14+
"//pkg/util/node",
1415
"//providers/gce",
1516
"//vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud",
1617
"//vendor/github.com/hashicorp/go-multierror",
1718
"//vendor/google.golang.org/api/compute/v1:compute",
19+
"//vendor/k8s.io/api/core/v1:core",
1820
"//vendor/k8s.io/apimachinery/pkg/api/errors",
1921
"//vendor/k8s.io/apimachinery/pkg/api/meta",
2022
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:meta",
2123
"//vendor/k8s.io/apimachinery/pkg/labels",
2224
"//vendor/k8s.io/apimachinery/pkg/util/runtime",
2325
"//vendor/k8s.io/apimachinery/pkg/util/wait",
26+
"//vendor/k8s.io/client-go/informers/core/v1:core",
27+
"//vendor/k8s.io/client-go/listers/core/v1:core",
2428
"//vendor/k8s.io/client-go/tools/cache",
2529
"//vendor/k8s.io/client-go/util/workqueue",
2630
"//vendor/k8s.io/cloud-provider-gcp/crd/apis/network/v1:network",
@@ -31,6 +35,8 @@ go_library(
3135
"//vendor/k8s.io/component-base/metrics/legacyregistry",
3236
"//vendor/k8s.io/component-base/metrics/prometheus/controllers",
3337
"//vendor/k8s.io/klog/v2:klog",
38+
"//vendor/k8s.io/utils/net",
39+
"//vendor/k8s.io/utils/strings/slices",
3440
],
3541
)
3642

@@ -39,14 +45,20 @@ go_test(
3945
srcs = ["gkenetworkparamset_controller_test.go"],
4046
embed = [":gkenetworkparamset"],
4147
deps = [
48+
"//pkg/util/node",
4249
"//providers/gce",
4350
"//vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/meta",
51+
"//vendor/github.com/google/go-cmp/cmp",
4452
"//vendor/github.com/onsi/gomega",
4553
"//vendor/github.com/onsi/gomega/types",
4654
"//vendor/google.golang.org/api/compute/v1:compute",
55+
"//vendor/k8s.io/api/core/v1:core",
4756
"//vendor/k8s.io/apimachinery/pkg/api/errors",
4857
"//vendor/k8s.io/apimachinery/pkg/api/meta",
4958
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:meta",
59+
"//vendor/k8s.io/client-go/informers",
60+
"//vendor/k8s.io/client-go/kubernetes/fake",
61+
"//vendor/k8s.io/client-go/tools/cache",
5062
"//vendor/k8s.io/cloud-provider-gcp/crd/apis/network/v1:network",
5163
"//vendor/k8s.io/cloud-provider-gcp/crd/client/network/clientset/versioned/fake",
5264
"//vendor/k8s.io/cloud-provider-gcp/crd/client/network/informers/externalversions",

0 commit comments

Comments
 (0)