@@ -50,6 +50,7 @@ see-also:
50
50
- [ Endpoint Controller (classic)] ( #endpoint-controller-classic )
51
51
- [ Roll Out Plan] ( #roll-out-plan )
52
52
- [ Graduation Criteria] ( #graduation-criteria )
53
+ - [ Splitting IP address type for better dual stack support] ( #splitting-ip-address-type-for-better-dual-stack-support )
53
54
- [ Alternatives] ( #alternatives )
54
55
- [ FAQ] ( #faq )
55
56
<!-- /toc -->
@@ -127,7 +128,15 @@ type AddressType string
127
128
128
129
const (
129
130
// AddressTypeIP represents an IP Address.
131
+ // This address type has been deprecated and has been replaced by the IPv4
132
+ // and IPv6 adddress types. New resources with this address type will be
133
+ // considered invalid. This will be fully removed in 1.18.
134
+ // +deprecated
130
135
AddressTypeIP = AddressType("IP")
136
+ // AddressTypeIPv4 represents an IPv4 Address.
137
+ AddressTypeIPv4 = AddressType(corev1.IPv4Protocol)
138
+ // AddressTypeIPv6 represents an IPv6 Address.
139
+ AddressTypeIPv6 = AddressType(corev1.IPv6Protocol)
131
140
// AddressTypeFQDN represents a FQDN.
132
141
AddressTypeFQDN = AddressType("FQDN")
133
142
)
@@ -435,12 +444,30 @@ In order to graduate to beta, we will:
435
444
- Verify performance/scalability via testing. (Scale tested to 50k endpoints in
436
445
4k node cluster)
437
446
- Get performance fixes identified in scale testing merged.
447
+ - Split ` IP ` address type into new ` IPv4 ` and ` IPv6 ` address types.
438
448
- Implement dual-stack EndpointSlice support in kube-proxy.
439
449
- Implement e2e tests that ensure both Endpoints and EndpointSlices are tested.
440
450
- Add support for ` endpointslice.kubernetes.io/managed-by ` label.
441
451
- Add FQDN addressType.
442
452
- Add support for optional appProtocol field on ` EndpointPort ` .
443
453
454
+ ### Splitting IP address type for better dual stack support
455
+
456
+ Although the initial vision for the ` IP ` address type was to be inclusive of
457
+ both IPv4 and IPv6 addresses, that ended up complicating workflows in consumers
458
+ like kube-proxy. In that case, and we anticipate many more, the consumer is only
459
+ interested in a specific IP family for an endpoint. Both Endpoints and Services
460
+ have moved toward using different resources per IP family. It only makes sense
461
+ to mirror that behavior with EndpointSlices.
462
+
463
+ With that in mind, the proposed changes for beta will involve the following:
464
+
465
+ 1 . Add 2 additional address types: ` IPv4 ` and ` IPv6 ` .
466
+ 2 . Update the EndpointSlice controller to only create EndpointSlices with these
467
+ address types.
468
+ 3 . Deprecate the ` IP ` address type, making it invalid for new EndpointSlices in
469
+ 1.17 before becoming fully invalid in 1.18.
470
+
444
471
## Alternatives
445
472
446
473
1 . increase the etcd size limits
0 commit comments