Skip to content

Commit 5617939

Browse files
committed
Adding the ability to enable dual stacks.
Subnets are one of the resources that control the ability to use a dual stack (IPV4 and IPV6). These are required to be set on resource creation, and they cannot be altered post creation. The user has the option to set the stack type for each subnet (IPV4_ONLY, IPV4_IPV6, or IPV6_ONLY). The default will be IPV4_ONLY.
1 parent ab66a2c commit 5617939

File tree

4 files changed

+73
-0
lines changed

4 files changed

+73
-0
lines changed

api/v1beta1/types.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,22 @@ type SubnetSpec struct {
240240
// +kubebuilder:default=PRIVATE_RFC_1918
241241
// +optional
242242
Purpose *string `json:"purpose,omitempty"`
243+
244+
// StackType: The stack type for the subnet. If set to IPV4_ONLY, new VMs in
245+
// the subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new VMs in
246+
// the subnet can be assigned both IPv4 and IPv6 addresses. If not specified,
247+
// IPV4_ONLY is used. This field can be both set at resource creation time and
248+
// updated using patch.
249+
//
250+
// Possible values:
251+
// "IPV4_IPV6" - New VMs in this subnet can have both IPv4 and IPv6
252+
// addresses.
253+
// "IPV4_ONLY" - New VMs in this subnet will only be assigned IPv4 addresses.
254+
// "IPV6_ONLY" - New VMs in this subnet will only be assigned IPv6 addresses.
255+
// +kubebuilder:validation:Enum=IPV4_ONLY;IPV4_IPV6;IPV6_ONLY
256+
// +kubebuilder:default=IPV4_ONLY
257+
// +optional
258+
StackType string `json:"stackType,omitempty"`
243259
}
244260

245261
// String returns a string representation of the subnet.

config/crd/bases/infrastructure.cluster.x-k8s.io_gcpclusters.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,25 @@ spec:
248248
SecondaryCidrBlocks defines secondary CIDR ranges,
249249
from which secondary IP ranges of a VM may be allocated
250250
type: object
251+
stackType:
252+
default: IPV4_ONLY
253+
description: |-
254+
StackType: The stack type for the subnet. If set to IPV4_ONLY, new VMs in
255+
the subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new VMs in
256+
the subnet can be assigned both IPv4 and IPv6 addresses. If not specified,
257+
IPV4_ONLY is used. This field can be both set at resource creation time and
258+
updated using patch.
259+
260+
Possible values:
261+
"IPV4_IPV6" - New VMs in this subnet can have both IPv4 and IPv6
262+
addresses.
263+
"IPV4_ONLY" - New VMs in this subnet will only be assigned IPv4 addresses.
264+
"IPV6_ONLY" - New VMs in this subnet will only be assigned IPv6 addresses.
265+
enum:
266+
- IPV4_ONLY
267+
- IPV4_IPV6
268+
- IPV6_ONLY
269+
type: string
251270
type: object
252271
type: array
253272
type: object

config/crd/bases/infrastructure.cluster.x-k8s.io_gcpclustertemplates.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,25 @@ spec:
265265
SecondaryCidrBlocks defines secondary CIDR ranges,
266266
from which secondary IP ranges of a VM may be allocated
267267
type: object
268+
stackType:
269+
default: IPV4_ONLY
270+
description: |-
271+
StackType: The stack type for the subnet. If set to IPV4_ONLY, new VMs in
272+
the subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new VMs in
273+
the subnet can be assigned both IPv4 and IPv6 addresses. If not specified,
274+
IPV4_ONLY is used. This field can be both set at resource creation time and
275+
updated using patch.
276+
277+
Possible values:
278+
"IPV4_IPV6" - New VMs in this subnet can have both IPv4 and IPv6
279+
addresses.
280+
"IPV4_ONLY" - New VMs in this subnet will only be assigned IPv4 addresses.
281+
"IPV6_ONLY" - New VMs in this subnet will only be assigned IPv6 addresses.
282+
enum:
283+
- IPV4_ONLY
284+
- IPV4_IPV6
285+
- IPV6_ONLY
286+
type: string
268287
type: object
269288
type: array
270289
type: object

config/crd/bases/infrastructure.cluster.x-k8s.io_gcpmanagedclusters.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,25 @@ spec:
244244
SecondaryCidrBlocks defines secondary CIDR ranges,
245245
from which secondary IP ranges of a VM may be allocated
246246
type: object
247+
stackType:
248+
default: IPV4_ONLY
249+
description: |-
250+
StackType: The stack type for the subnet. If set to IPV4_ONLY, new VMs in
251+
the subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new VMs in
252+
the subnet can be assigned both IPv4 and IPv6 addresses. If not specified,
253+
IPV4_ONLY is used. This field can be both set at resource creation time and
254+
updated using patch.
255+
256+
Possible values:
257+
"IPV4_IPV6" - New VMs in this subnet can have both IPv4 and IPv6
258+
addresses.
259+
"IPV4_ONLY" - New VMs in this subnet will only be assigned IPv4 addresses.
260+
"IPV6_ONLY" - New VMs in this subnet will only be assigned IPv6 addresses.
261+
enum:
262+
- IPV4_ONLY
263+
- IPV4_IPV6
264+
- IPV6_ONLY
265+
type: string
247266
type: object
248267
type: array
249268
type: object

0 commit comments

Comments
 (0)