@@ -3,9 +3,8 @@ kind: CustomResourceDefinition
33metadata :
44 annotations :
55 api-approved.kubernetes.io : https://github.com/kubernetes-sigs/gateway-api/pull/3328
6- gateway.networking.k8s.io/bundle-version : v1.3.0
6+ gateway.networking.k8s.io/bundle-version : v1.4.1
77 gateway.networking.k8s.io/channel : standard
8- creationTimestamp : null
98 name : gateways.gateway.networking.k8s.io
109spec :
1110 group : gateway.networking.k8s.io
6564 Addresses requested for this Gateway. This is optional and behavior can
6665 depend on the implementation. If a value is set in the spec and the
6766 requested address is invalid or unavailable, the implementation MUST
68- indicate this in the associated entry in GatewayStatus.Addresses .
67+ indicate this in an associated entry in GatewayStatus.Conditions .
6968
7069 The Addresses field represents a request for the address(es) on the
7170 "outside of the Gateway", that traffic bound for this Gateway will use.
@@ -120,19 +119,22 @@ spec:
120119 type : string
121120 type : object
122121 x-kubernetes-validations :
123- - message : Hostname value must only contain valid characters (matching
124- ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)
125- rule : ' self.type == '' Hostname'' ? self.value. matches(r"""^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$"""):
122+ - message : Hostname value must be empty or contain only valid characters
123+ (matching ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)
124+ rule : ' self.type == '' Hostname'' ? (!has( self.value) || self.value. matches(r"""^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$""") ):
126125 true'
127126 maxItems : 16
128127 type : array
128+ x-kubernetes-list-type : atomic
129129 x-kubernetes-validations :
130130 - message : IPAddress values must be unique
131- rule : ' self.all(a1, a1.type == '' IPAddress'' ? self.exists_one(a2,
132- a2.type == a1.type && a2.value == a1.value) : true )'
131+ rule : ' self.all(a1, a1.type == '' IPAddress'' && has(a1.value) ?
132+ self.exists_one(a2, a2.type == a1.type && has(a2.value) && a2.value
133+ == a1.value) : true )'
133134 - message : Hostname values must be unique
134- rule : ' self.all(a1, a1.type == '' Hostname'' ? self.exists_one(a2,
135- a2.type == a1.type && a2.value == a1.value) : true )'
135+ rule : ' self.all(a1, a1.type == '' Hostname'' && has(a1.value) ?
136+ self.exists_one(a2, a2.type == a1.type && has(a2.value) && a2.value
137+ == a1.value) : true )'
136138 gatewayClassName :
137139 description : |-
138140 GatewayClassName used for this Gateway. This is the name of a
@@ -488,6 +490,7 @@ spec:
488490 type : object
489491 maxItems : 8
490492 type : array
493+ x-kubernetes-list-type : atomic
491494 namespaces :
492495 default :
493496 from : Same
@@ -655,7 +658,7 @@ spec:
655658 the Protocol field is "HTTPS" or "TLS". It is invalid to set this field
656659 if the Protocol field is "HTTP", "TCP", or "UDP".
657660
658- The association of SNIs to Certificate defined in GatewayTLSConfig is
661+ The association of SNIs to Certificate defined in ListenerTLSConfig is
659662 defined based on the Hostname field for this listener.
660663
661664 The GatewayClass MUST use the longest matching SNI out of all
@@ -742,6 +745,7 @@ spec:
742745 type : object
743746 maxItems : 64
744747 type : array
748+ x-kubernetes-list-type : atomic
745749 mode :
746750 default : Terminate
747751 description : |-
@@ -894,6 +898,7 @@ spec:
894898 true'
895899 maxItems : 16
896900 type : array
901+ x-kubernetes-list-type : atomic
897902 conditions :
898903 default :
899904 - lastTransitionTime : " 1970-01-01T00:00:00Z"
@@ -1107,6 +1112,7 @@ spec:
11071112 type : object
11081113 maxItems : 8
11091114 type : array
1115+ x-kubernetes-list-type : atomic
11101116 required :
11111117 - attachedRoutes
11121118 - conditions
@@ -1171,7 +1177,7 @@ spec:
11711177 Addresses requested for this Gateway. This is optional and behavior can
11721178 depend on the implementation. If a value is set in the spec and the
11731179 requested address is invalid or unavailable, the implementation MUST
1174- indicate this in the associated entry in GatewayStatus.Addresses .
1180+ indicate this in an associated entry in GatewayStatus.Conditions .
11751181
11761182 The Addresses field represents a request for the address(es) on the
11771183 "outside of the Gateway", that traffic bound for this Gateway will use.
@@ -1226,19 +1232,22 @@ spec:
12261232 type : string
12271233 type : object
12281234 x-kubernetes-validations :
1229- - message : Hostname value must only contain valid characters (matching
1230- ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)
1231- rule : ' self.type == '' Hostname'' ? self.value. matches(r"""^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$"""):
1235+ - message : Hostname value must be empty or contain only valid characters
1236+ (matching ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)
1237+ rule : ' self.type == '' Hostname'' ? (!has( self.value) || self.value. matches(r"""^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$""") ):
12321238 true'
12331239 maxItems : 16
12341240 type : array
1241+ x-kubernetes-list-type : atomic
12351242 x-kubernetes-validations :
12361243 - message : IPAddress values must be unique
1237- rule : ' self.all(a1, a1.type == '' IPAddress'' ? self.exists_one(a2,
1238- a2.type == a1.type && a2.value == a1.value) : true )'
1244+ rule : ' self.all(a1, a1.type == '' IPAddress'' && has(a1.value) ?
1245+ self.exists_one(a2, a2.type == a1.type && has(a2.value) && a2.value
1246+ == a1.value) : true )'
12391247 - message : Hostname values must be unique
1240- rule : ' self.all(a1, a1.type == '' Hostname'' ? self.exists_one(a2,
1241- a2.type == a1.type && a2.value == a1.value) : true )'
1248+ rule : ' self.all(a1, a1.type == '' Hostname'' && has(a1.value) ?
1249+ self.exists_one(a2, a2.type == a1.type && has(a2.value) && a2.value
1250+ == a1.value) : true )'
12421251 gatewayClassName :
12431252 description : |-
12441253 GatewayClassName used for this Gateway. This is the name of a
@@ -1594,6 +1603,7 @@ spec:
15941603 type : object
15951604 maxItems : 8
15961605 type : array
1606+ x-kubernetes-list-type : atomic
15971607 namespaces :
15981608 default :
15991609 from : Same
@@ -1761,7 +1771,7 @@ spec:
17611771 the Protocol field is "HTTPS" or "TLS". It is invalid to set this field
17621772 if the Protocol field is "HTTP", "TCP", or "UDP".
17631773
1764- The association of SNIs to Certificate defined in GatewayTLSConfig is
1774+ The association of SNIs to Certificate defined in ListenerTLSConfig is
17651775 defined based on the Hostname field for this listener.
17661776
17671777 The GatewayClass MUST use the longest matching SNI out of all
@@ -1848,6 +1858,7 @@ spec:
18481858 type : object
18491859 maxItems : 64
18501860 type : array
1861+ x-kubernetes-list-type : atomic
18511862 mode :
18521863 default : Terminate
18531864 description : |-
@@ -2000,6 +2011,7 @@ spec:
20002011 true'
20012012 maxItems : 16
20022013 type : array
2014+ x-kubernetes-list-type : atomic
20032015 conditions :
20042016 default :
20052017 - lastTransitionTime : " 1970-01-01T00:00:00Z"
@@ -2213,6 +2225,7 @@ spec:
22132225 type : object
22142226 maxItems : 8
22152227 type : array
2228+ x-kubernetes-list-type : atomic
22162229 required :
22172230 - attachedRoutes
22182231 - conditions
@@ -2238,3 +2251,4 @@ status:
22382251 plural : " "
22392252 conditions : null
22402253 storedVersions : null
2254+
0 commit comments