Skip to content

Commit f57b555

Browse files
committed
Completing CEL validation for Gateway
1 parent f2b55c8 commit f57b555

File tree

8 files changed

+249
-30
lines changed

8 files changed

+249
-30
lines changed

apis/v1beta1/gateway_types.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ type GatewaySpec struct {
149149
// Support: Extended
150150
//
151151
// +optional
152+
// <gateway:validateIPAddress>
152153
// +kubebuilder:validation:MaxItems=16
153154
// +kubebuilder:validation:XValidation:message="IPAddress values must be unique",rule="self.all(a1, a1.type == 'IPAddress' ? self.exists_one(a2, a2.type == a1.type && a2.value == a1.value) : true )"
154155
// +kubebuilder:validation:XValidation:message="Hostname values must be unique",rule="self.all(a1, a1.type == 'Hostname' ? self.exists_one(a2, a2.type == a1.type && a2.value == a1.value) : true )"
@@ -486,6 +487,8 @@ type GatewayAddress struct {
486487
}
487488

488489
// GatewayStatusAddress describes an address that is bound to a Gateway.
490+
//
491+
// +kubebuilder:validation:XValidation:message="Hostname value must only contain valid characters (matching ^(\\*\\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)",rule="self.type == 'Hostname' ? self.value.matches('^(\\\\*\\\\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$'): true"
489492
type GatewayStatusAddress struct {
490493
// Type of the address.
491494
//
@@ -511,6 +514,7 @@ type GatewayStatus struct {
511514
// assigns an address from a reserved pool.
512515
//
513516
// +optional
517+
// <gateway:validateIPAddress>
514518
// +kubebuilder:validation:MaxItems=16
515519
Addresses []GatewayStatusAddress `json:"addresses,omitempty"`
516520

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

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crd/standard/gateway.networking.k8s.io_gateways.yaml

Lines changed: 74 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
apiVersion: gateway.networking.k8s.io/v1beta1
2+
kind: Gateway
3+
metadata:
4+
name: gateway-addresses
5+
spec:
6+
gatewayClassName: acme-lb
7+
addresses:
8+
- value: 1200:0000:AB00:1234:0000:2552:7777:1313
9+
- value: 21DA:D3:0:2F3B:2AA:FF:FE28:9C5A
10+
- value: "2001:db8:3c4d:15:0:d234:3eee::"
11+
- value: "1234::"
12+
- value: "1.1.1.1"
13+
- value: "1.2.3.4"
14+
- value: "0.0.0.0"
15+
- value: "9.255.255.255"
16+
- value: "11.0.0.0"
17+
- type: IPAddress
18+
value: "255.255.255.255"
19+
- type: "Hostname"
20+
value: "example.com"
21+
listeners:
22+
- protocol: HTTP
23+
port: 80
24+
name: prod-web-gw
25+
allowedRoutes:
26+
namespaces:
27+
from: Same

examples/standard/simple-gateway/gateway.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ metadata:
77
name: prod-web
88
spec:
99
gatewayClassName: acme-lb
10-
listeners:
10+
listeners:
1111
- protocol: HTTP
1212
port: 80
1313
name: prod-web-gw

0 commit comments

Comments
 (0)