Skip to content

Commit 1a75c3a

Browse files
Adding support for multi-NIC network in GKE cluster and node pool. (#8385) (#5949)
Signed-off-by: Modular Magician <[email protected]>
1 parent c7d6ffe commit 1a75c3a

File tree

9 files changed

+401
-17
lines changed

9 files changed

+401
-17
lines changed

.changelog/8385.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note: enhancement
2+
container: added multi-NIC network for GKE cluster and node pool.
3+
```

go.mod

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,20 @@ require (
2424
github.com/mitchellh/hashstructure v1.1.0
2525
github.com/sirupsen/logrus v1.8.1
2626
golang.org/x/net v0.12.0
27-
golang.org/x/oauth2 v0.9.0
28-
google.golang.org/api v0.130.0
29-
google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529
30-
google.golang.org/grpc v1.56.1
27+
golang.org/x/oauth2 v0.10.0
28+
google.golang.org/api v0.132.0
29+
google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98
30+
google.golang.org/grpc v1.56.2
3131
google.golang.org/protobuf v1.31.0
3232
)
3333

3434
require (
3535
bitbucket.org/creachadair/stringset v0.0.8 // indirect
36-
cloud.google.com/go v0.110.2 // indirect
37-
cloud.google.com/go/compute v1.19.3 // indirect
36+
cloud.google.com/go v0.110.4 // indirect
37+
cloud.google.com/go/compute v1.20.1 // indirect
3838
cloud.google.com/go/compute/metadata v0.2.3 // indirect
3939
cloud.google.com/go/iam v1.1.0 // indirect
40-
cloud.google.com/go/longrunning v0.5.0 // indirect
40+
cloud.google.com/go/longrunning v0.5.1 // indirect
4141
github.com/agext/levenshtein v1.2.2 // indirect
4242
github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
4343
github.com/cenkalti/backoff v2.2.1+incompatible // indirect
@@ -57,7 +57,7 @@ require (
5757
github.com/google/s2a-go v0.1.4 // indirect
5858
github.com/google/uuid v1.3.0 // indirect
5959
github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect
60-
github.com/googleapis/gax-go/v2 v2.11.0 // indirect
60+
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
6161
github.com/hashicorp/go-checkpoint v0.5.0 // indirect
6262
github.com/hashicorp/go-hclog v1.2.1 // indirect
6363
github.com/hashicorp/go-plugin v1.4.8 // indirect
@@ -89,7 +89,7 @@ require (
8989
golang.org/x/text v0.11.0 // indirect
9090
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
9191
google.golang.org/appengine v1.6.7 // indirect
92-
google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc // indirect
93-
google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc // indirect
92+
google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 // indirect
93+
google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130 // indirect
9494
gopkg.in/yaml.v2 v2.4.0 // indirect
9595
)

go.sum

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,14 @@ cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys=
66
cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY=
77
cloud.google.com/go v0.110.2 h1:sdFPBr6xG9/wkBbfhmUz/JmZC7X6LavQgcrVINrKiVA=
88
cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw=
9+
cloud.google.com/go v0.110.4 h1:1JYyxKMN9hd5dR2MYTPWkGUgcoxVVhg0LKNKEo0qvmk=
10+
cloud.google.com/go v0.110.4/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI=
911
cloud.google.com/go/bigtable v1.19.0 h1:wiq9LT0kukfInzvy1joMDijCw/OD1UChpSbORXYn0LI=
1012
cloud.google.com/go/bigtable v1.19.0/go.mod h1:xl5kPa8PTkJjdBxg6qdGH88464nNqmbISHSRU+D2yFE=
1113
cloud.google.com/go/compute v1.19.3 h1:DcTwsFgGev/wV5+q8o2fzgcHOaac+DKGC91ZlvpsQds=
1214
cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI=
15+
cloud.google.com/go/compute v1.20.1 h1:6aKEtlUiwEpJzM001l0yFkpXmUVXaN8W+fbkb2AZNbg=
16+
cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM=
1317
cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
1418
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
1519
cloud.google.com/go/iam v0.13.0 h1:+CmB+K0J/33d0zSQ9SlFWUeCCEn5XJA0ZMZ3pHE9u8k=
@@ -20,6 +24,8 @@ cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXW
2024
cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo=
2125
cloud.google.com/go/longrunning v0.5.0 h1:DK8BH0+hS+DIvc9a2TPnteUievsTCH4ORMAASSb7JcQ=
2226
cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc=
27+
cloud.google.com/go/longrunning v0.5.1 h1:Fr7TXftcqTudoyRJa113hyaqlGdiBQkp0Gq7tErFDWI=
28+
cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc=
2329
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
2430
github.com/GoogleCloudPlatform/declarative-resource-client-library v1.44.0 h1:hASUAck0/5j84kejIHGJjipjUzFHiN5edNMobKwj2HA=
2531
github.com/GoogleCloudPlatform/declarative-resource-client-library v1.44.0/go.mod h1:pL2Qt5HT+x6xrTd806oMiM3awW6kNIXB/iiuClz6m6k=
@@ -150,8 +156,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvki
150156
github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w=
151157
github.com/googleapis/gax-go/v2 v2.11.0 h1:9V9PWXEsWnPpQhu/PeQIkS4eGzMlTLGgt80cUUI8Ki4=
152158
github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI=
153-
github.com/googleapis/gax-go/v2 v2.11.0 h1:9V9PWXEsWnPpQhu/PeQIkS4eGzMlTLGgt80cUUI8Ki4=
154-
github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI=
159+
github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
160+
github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU=
155161
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw=
156162
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y=
157163
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
@@ -353,6 +359,8 @@ golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4Iltr
353359
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
354360
golang.org/x/oauth2 v0.9.0 h1:BPpt2kU7oMRq3kCHAA1tbSEshXRw1LpG2ztgDwrzuAs=
355361
golang.org/x/oauth2 v0.9.0/go.mod h1:qYgFZaFiu6Wg24azG8bdV52QJXJGbZzIIsRCdVKzbLw=
362+
golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8=
363+
golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
356364
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
357365
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
358366
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -416,6 +424,8 @@ golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3j
416424
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
417425
google.golang.org/api v0.130.0 h1:A50ujooa1h9iizvfzA4rrJr2B7uRmWexwbekQ2+5FPQ=
418426
google.golang.org/api v0.130.0/go.mod h1:J/LCJMYSDFvAVREGCbrESb53n4++NMBDetSHGL5I5RY=
427+
google.golang.org/api v0.132.0 h1:8t2/+qZ26kAOGSmOiHwVycqVaDg7q3JDILrNi/Z6rvc=
428+
google.golang.org/api v0.132.0/go.mod h1:AeTBC6GpJnJSRJjktDcPX0QwtS8pGYZOV6MSuSCusw0=
419429
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
420430
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
421431
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
@@ -428,10 +438,16 @@ google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfG
428438
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
429439
google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc h1:8DyZCyvI8mE1IdLy/60bS+52xfymkE72wv1asokgtao=
430440
google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64=
441+
google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 h1:Au6te5hbKUV8pIYWHqOUZ1pva5qK/rwbIhoXEUB9Lu8=
442+
google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:O9kGHb51iE/nOGvQaDUuadVYqovW56s5emA88lQnj6Y=
431443
google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc h1:kVKPf/IiYSBWEWtkIn6wZXwWGCnLKcC8oWfZvXjsGnM=
432444
google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig=
445+
google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130 h1:XVeBY8d/FaK4848myy41HBqnDwvxeV3zMZhwN1TvAMU=
446+
google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:mPBs5jNgx2GuQGvFwUvVKqtn6HsUw9nP64BedgvqEsQ=
433447
google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529 h1:DEH99RbiLZhMxrpEJCZ0A+wdTe0EOgou/poSLx9vWf4=
434448
google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA=
449+
google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U=
450+
google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM=
435451
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
436452
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
437453
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
@@ -443,6 +459,8 @@ google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG
443459
google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ=
444460
google.golang.org/grpc v1.56.1 h1:z0dNfjIl0VpaZ9iSVjA6daGatAYwPGstTjt5vkRMFkQ=
445461
google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s=
462+
google.golang.org/grpc v1.56.2 h1:fVRFRnXvU+x6C4IlHZewvJOVHoOv1TUuQyoRsYnB4bI=
463+
google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s=
446464
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
447465
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
448466
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=

google-beta/resource_container_cluster_test.go

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,28 @@ func TestAccContainerCluster_withILBSubsetting(t *testing.T) {
318318
})
319319
}
320320

321+
func TestAccContainerCluster_withMultiNetworking(t *testing.T) {
322+
t.Parallel()
323+
324+
clusterName := fmt.Sprintf("tf-test-cluster-%s", acctest.RandString(t, 10))
325+
326+
acctest.VcrTest(t, resource.TestCase{
327+
PreCheck: func() { acctest.AccTestPreCheck(t) },
328+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
329+
CheckDestroy: testAccCheckContainerClusterDestroyProducer(t),
330+
Steps: []resource.TestStep{
331+
{
332+
Config: testAccContainerCluster_enableMultiNetworking(clusterName),
333+
},
334+
{
335+
ResourceName: "google_container_cluster.cluster",
336+
ImportState: true,
337+
ImportStateVerify: true,
338+
},
339+
},
340+
})
341+
}
342+
321343
func TestAccContainerCluster_withMasterAuthConfig_NoCert(t *testing.T) {
322344
t.Parallel()
323345

@@ -392,6 +414,63 @@ func TestAccContainerCluster_withAuthenticatorGroupsConfig(t *testing.T) {
392414
})
393415
}
394416

417+
func testAccContainerCluster_enableMultiNetworking(clusterName string) string {
418+
return fmt.Sprintf(`
419+
resource "google_compute_network" "container_network" {
420+
name = "%s-nw"
421+
auto_create_subnetworks = false
422+
}
423+
424+
resource "google_compute_subnetwork" "container_subnetwork" {
425+
name = google_compute_network.container_network.name
426+
network = google_compute_network.container_network.name
427+
ip_cidr_range = "10.0.36.0/24"
428+
region = "us-central1"
429+
private_ip_google_access = true
430+
431+
secondary_ip_range {
432+
range_name = "pod"
433+
ip_cidr_range = "10.0.0.0/19"
434+
}
435+
436+
secondary_ip_range {
437+
range_name = "svc"
438+
ip_cidr_range = "10.0.32.0/22"
439+
}
440+
441+
secondary_ip_range {
442+
range_name = "another-pod"
443+
ip_cidr_range = "10.1.32.0/22"
444+
}
445+
446+
lifecycle {
447+
ignore_changes = [
448+
# The auto nodepool creates a secondary range which diffs this resource.
449+
secondary_ip_range,
450+
]
451+
}
452+
}
453+
454+
resource "google_container_cluster" "cluster" {
455+
name = "%s"
456+
location = "us-central1"
457+
initial_node_count = 1
458+
459+
network = google_compute_network.container_network.name
460+
subnetwork = google_compute_subnetwork.container_subnetwork.name
461+
ip_allocation_policy {
462+
cluster_secondary_range_name = google_compute_subnetwork.container_subnetwork.secondary_ip_range[0].range_name
463+
services_secondary_range_name = google_compute_subnetwork.container_subnetwork.secondary_ip_range[1].range_name
464+
}
465+
release_channel {
466+
channel = "RAPID"
467+
}
468+
enable_multi_networking = true
469+
datapath_provider = "ADVANCED_DATAPATH"
470+
}
471+
`, clusterName, clusterName)
472+
}
473+
395474
func TestAccContainerCluster_withNetworkPolicyEnabled(t *testing.T) {
396475
t.Parallel()
397476

google-beta/resource_container_node_pool_test.go

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,32 @@ func TestAccContainerNodePool_withNetworkConfig(t *testing.T) {
520520
})
521521
}
522522

523+
func TestAccContainerNodePool_withMultiNicNetworkConfig(t *testing.T) {
524+
t.Parallel()
525+
526+
randstr := acctest.RandString(t, 10)
527+
cluster := fmt.Sprintf("tf-test-cluster-%s", randstr)
528+
np := fmt.Sprintf("tf-test-np-%s", randstr)
529+
network := fmt.Sprintf("tf-test-net-%s", randstr)
530+
531+
acctest.VcrTest(t, resource.TestCase{
532+
PreCheck: func() { acctest.AccTestPreCheck(t) },
533+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
534+
CheckDestroy: testAccCheckContainerClusterDestroyProducer(t),
535+
Steps: []resource.TestStep{
536+
{
537+
Config: testAccContainerNodePool_withMultiNicNetworkConfig(cluster, np, network),
538+
},
539+
{
540+
ResourceName: "google_container_cluster.cluster",
541+
ImportState: true,
542+
ImportStateVerify: true,
543+
ImportStateVerifyIgnore: []string{"network_config.0.create_pod_range"},
544+
},
545+
},
546+
})
547+
}
548+
523549
func TestAccContainerNodePool_withEnablePrivateNodesToggle(t *testing.T) {
524550
t.Parallel()
525551

@@ -2592,6 +2618,114 @@ resource "google_container_node_pool" "with_pco_disabled" {
25922618
`, network, cluster, np, np, np)
25932619
}
25942620

2621+
func testAccContainerNodePool_withMultiNicNetworkConfig(cluster, np, network string) string {
2622+
return fmt.Sprintf(`
2623+
resource "google_compute_network" "container_network" {
2624+
name = "%s-1"
2625+
auto_create_subnetworks = false
2626+
}
2627+
2628+
resource "google_compute_network" "addn_net_1" {
2629+
name = "%s-2"
2630+
auto_create_subnetworks = false
2631+
}
2632+
2633+
resource "google_compute_network" "addn_net_2" {
2634+
name = "%s-3"
2635+
auto_create_subnetworks = false
2636+
}
2637+
2638+
resource "google_compute_subnetwork" "container_subnetwork" {
2639+
name = "%s-subnet-1"
2640+
network = google_compute_network.container_network.name
2641+
ip_cidr_range = "10.0.36.0/24"
2642+
region = "us-central1"
2643+
private_ip_google_access = true
2644+
2645+
secondary_ip_range {
2646+
range_name = "pod"
2647+
ip_cidr_range = "10.0.0.0/19"
2648+
}
2649+
2650+
secondary_ip_range {
2651+
range_name = "svc"
2652+
ip_cidr_range = "10.0.32.0/22"
2653+
}
2654+
2655+
lifecycle {
2656+
ignore_changes = [
2657+
# The auto nodepool creates a secondary range which diffs this resource.
2658+
secondary_ip_range,
2659+
]
2660+
}
2661+
}
2662+
2663+
resource "google_compute_subnetwork" "subnet1" {
2664+
name = "%s-subnet-2"
2665+
network = google_compute_network.addn_net_1.name
2666+
ip_cidr_range = "10.0.37.0/24"
2667+
region = "us-central1"
2668+
}
2669+
2670+
resource "google_compute_subnetwork" "subnet2" {
2671+
name = "%s-subnet-3"
2672+
network = google_compute_network.addn_net_2.name
2673+
ip_cidr_range = "10.0.38.0/24"
2674+
region = "us-central1"
2675+
}
2676+
2677+
resource "google_container_cluster" "cluster" {
2678+
name = "%s"
2679+
location = "us-central1"
2680+
initial_node_count = 1
2681+
2682+
network = google_compute_network.container_network.name
2683+
subnetwork = google_compute_subnetwork.container_subnetwork.name
2684+
ip_allocation_policy {
2685+
cluster_secondary_range_name = google_compute_subnetwork.container_subnetwork.secondary_ip_range[0].range_name
2686+
services_secondary_range_name = google_compute_subnetwork.container_subnetwork.secondary_ip_range[1].range_name
2687+
}
2688+
private_cluster_config {
2689+
enable_private_nodes = true
2690+
master_ipv4_cidr_block = "10.42.0.0/28"
2691+
}
2692+
release_channel {
2693+
channel = "RAPID"
2694+
}
2695+
enable_multi_networking = true
2696+
datapath_provider = "ADVANCED_DATAPATH"
2697+
}
2698+
2699+
resource "google_container_node_pool" "with_multi_nic" {
2700+
name = "%s-mutli-nic"
2701+
location = "us-central1"
2702+
cluster = google_container_cluster.cluster.name
2703+
node_count = 1
2704+
network_config {
2705+
create_pod_range = false
2706+
enable_private_nodes = true
2707+
pod_range = google_compute_subnetwork.container_subnetwork.secondary_ip_range[0].range_name
2708+
additional_node_network_configs {
2709+
network = google_compute_network.addn_net_1.name
2710+
subnetwork = google_compute_subnetwork.subnet1.name
2711+
}
2712+
additional_node_network_configs {
2713+
network = google_compute_network.addn_net_2.name
2714+
subnetwork = google_compute_subnetwork.subnet2.name
2715+
}
2716+
}
2717+
node_config {
2718+
machine_type = "n2-standard-8"
2719+
oauth_scopes = [
2720+
"https://www.googleapis.com/auth/cloud-platform",
2721+
]
2722+
image_type = "COS_CONTAINERD"
2723+
}
2724+
}
2725+
2726+
`, network, network, network, network, network, network, cluster, np)
2727+
}
2728+
25952729
func testAccContainerNodePool_withBootDiskKmsKey(cluster, np string) string {
25962730
return fmt.Sprintf(`
25972731
data "google_container_engine_versions" "central1a" {

0 commit comments

Comments
 (0)