Skip to content

Commit ebd02a2

Browse files
committed
Reverting GEP 735 from implemented to provisional
API review for v0.5.0 raised some important questions that we didn't have great answers for. This temporarily removes this change until we can more clearly answer the questions and/or adjust the approach.
1 parent da74c81 commit ebd02a2

File tree

8 files changed

+1
-327
lines changed

8 files changed

+1
-327
lines changed

apis/v1alpha2/shared_types.go

-51
Original file line numberDiff line numberDiff line change
@@ -465,57 +465,6 @@ type AnnotationKey string
465465
// +kubebuilder:validation:MaxLength=4096
466466
type AnnotationValue string
467467

468-
// AddressRouteMatches defines AddressMatch rules for inbound traffic according to
469-
// source and/or destination address of a packet or connection.
470-
type AddressRouteMatches struct {
471-
// SourceAddresses indicates the originating (source) network
472-
// addresses which are valid for routing traffic.
473-
//
474-
// Support: Extended
475-
SourceAddresses []AddressMatch `json:"sourceAddresses"`
476-
477-
// DestinationAddresses indicates the destination network addresses
478-
// which are valid for routing traffic.
479-
//
480-
// Support: Extended
481-
DestinationAddresses []AddressMatch `json:"destinationAddresses"`
482-
}
483-
484-
// AddressMatch defines matching rules for network addresses by type.
485-
type AddressMatch struct {
486-
// Type of the address, either IPAddress or NamedAddress.
487-
//
488-
// If NamedAddress is used this is a custom and specific value for each
489-
// implementation to handle (and add validation for) according to their
490-
// own needs.
491-
//
492-
// For IPAddress the implementor may expect either IPv4 or IPv6.
493-
//
494-
// Support: Core (IPAddress)
495-
// Support: Custom (NamedAddress)
496-
//
497-
// +optional
498-
// +kubebuilder:validation:Enum=IPAddress;NamedAddress
499-
// +kubebuilder:default=IPAddress
500-
Type *AddressType `json:"type,omitempty"`
501-
502-
// Value of the address. The validity of the values will depend
503-
// on the type and support by the controller.
504-
//
505-
// If implementations support proxy-protocol (see:
506-
// https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) they
507-
// must respect the connection metadata from proxy-protocol
508-
// in the match logic implemented for these address values.
509-
//
510-
// Examples: `1.2.3.4`, `128::1`, `my-named-address`.
511-
//
512-
// Support: Core
513-
//
514-
// +kubebuilder:validation:MinLength=1
515-
// +kubebuilder:validation:MaxLength=253
516-
Value string `json:"value"`
517-
}
518-
519468
// AddressType defines how a network address is represented as a text string.
520469
type AddressType string
521470

apis/v1alpha2/tcproute_types.go

-7
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,6 @@ type TCPRouteStatus struct {
5959

6060
// TCPRouteRule is the configuration for a given rule.
6161
type TCPRouteRule struct {
62-
// Matches are rules for routing traffic to backends based on addresses.
63-
//
64-
// +optional
65-
// +kubebuilder:validation:MaxItems=16
66-
// <gateway:experimental>
67-
Matches []AddressRouteMatches `json:"matches,omitempty"`
68-
6962
// BackendRefs defines the backend(s) where matching requests should be
7063
// sent. If unspecified or invalid (refers to a non-existent resource or a
7164
// Service with no endpoints), the underlying implementation MUST actively

apis/v1alpha2/udproute_types.go

-7
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,6 @@ type UDPRouteStatus struct {
5959

6060
// UDPRouteRule is the configuration for a given rule.
6161
type UDPRouteRule struct {
62-
// Matches add rules for filtering traffic to backends based on addresses.
63-
//
64-
// +optional
65-
// +kubebuilder:validation:MaxItems=16
66-
// <gateway:experimental>
67-
Matches []AddressRouteMatches `json:"matches,omitempty"`
68-
6962
// BackendRefs defines the backend(s) where matching requests should be
7063
// sent. If unspecified or invalid (refers to a non-existent resource or a
7164
// Service with no endpoints), the underlying implementation MUST actively

apis/v1alpha2/zz_generated.deepcopy.go

-63
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml

-88
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml

-88
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

site-src/geps/gep-735.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# GEP-735: TCP and UDP addresses matching
22

33
* Issue: [#735](https://github.com/kubernetes-sigs/gateway-api/issues/735)
4-
* Status: Implemented
4+
* Status: Provisional
55

66
## TLDR
77

site-src/v1alpha2/guides/tcp.md

-22
Original file line numberDiff line numberDiff line change
@@ -43,28 +43,6 @@ In this way each `TCPRoute` "attaches" itself to a different port on the
4343
`Gateway` so that the service `my-foo-service` is taking traffic for port `8080`
4444
from outside the cluster and `my-bar-service` takes the port `8090` traffic.
4545

46-
## Alternatives: Routing Using Traffic Matching
47-
48-
!!! info "Experimental Channel"
49-
50-
This functionality is currently only included in the "Experimental" channel
51-
of Gateway API. For more information on release channels, refer to the
52-
[related documentation](https://gateway-api.sigs.k8s.io/concepts/versioning/#adding-experimental-fields).
53-
54-
In addition to simply matching traffic based on a Gateway's listeners (as seen
55-
in the above examples) a `TCPRoute` can also match further on the traffic bound
56-
for that listener:
57-
58-
```
59-
{% include 'experimental/v1alpha2/traffic-matching-tcp.yaml' %}
60-
```
61-
62-
In the above example the `matches` option for the `TCPRoute` rules enables the
63-
route to only serve the traffic that matches specified destination and/or source
64-
address patterns. In this way separate `TCPRoute` objects can be responsible
65-
for routing different traffic on the same `Gateway` listener and can enable
66-
significant flexibility for pure TCP routing.
67-
6846
[tcproute]:/v1alpha2/references/spec/#gateway.networking.k8s.io/v1alpha2.TCPRoute
6947
[tcp]:https://datatracker.ietf.org/doc/html/rfc793
7048
[httproute]:/v1alpha2/references/spec/#gateway.networking.k8s.io/v1alpha2.HTTPRoute

0 commit comments

Comments
 (0)