sigs.k8s.io/gateway-api@v1.0.0/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml (about) 1 apiVersion: apiextensions.k8s.io/v1 2 kind: CustomResourceDefinition 3 metadata: 4 annotations: 5 api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/2466 6 gateway.networking.k8s.io/bundle-version: v1.0.0 7 gateway.networking.k8s.io/channel: experimental 8 creationTimestamp: null 9 name: udproutes.gateway.networking.k8s.io 10 spec: 11 group: gateway.networking.k8s.io 12 names: 13 categories: 14 - gateway-api 15 kind: UDPRoute 16 listKind: UDPRouteList 17 plural: udproutes 18 singular: udproute 19 scope: Namespaced 20 versions: 21 - additionalPrinterColumns: 22 - jsonPath: .metadata.creationTimestamp 23 name: Age 24 type: date 25 name: v1alpha2 26 schema: 27 openAPIV3Schema: 28 description: UDPRoute provides a way to route UDP traffic. When combined with 29 a Gateway listener, it can be used to forward traffic on the port specified 30 by the listener to a set of backends specified by the UDPRoute. 31 properties: 32 apiVersion: 33 description: 'APIVersion defines the versioned schema of this representation 34 of an object. Servers should convert recognized schemas to the latest 35 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 36 type: string 37 kind: 38 description: 'Kind is a string value representing the REST resource this 39 object represents. Servers may infer this from the endpoint the client 40 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 41 type: string 42 metadata: 43 type: object 44 spec: 45 description: Spec defines the desired state of UDPRoute. 46 properties: 47 parentRefs: 48 description: "ParentRefs references the resources (usually Gateways) 49 that a Route wants to be attached to. Note that the referenced parent 50 resource needs to allow this for the attachment to be complete. 51 For Gateways, that means the Gateway needs to allow attachment from 52 Routes of this kind and namespace. For Services, that means the 53 Service must either be in the same namespace for a \"producer\" 54 route, or the mesh implementation must support and allow \"consumer\" 55 routes for the referenced Service. ReferenceGrant is not applicable 56 for governing ParentRefs to Services - it is not possible to create 57 a \"producer\" route for a Service in a different namespace from 58 the Route. \n There are two kinds of parent resources with \"Core\" 59 support: \n * Gateway (Gateway conformance profile) * Service (Mesh 60 conformance profile, experimental, ClusterIP Services only) This 61 API may be extended in the future to support additional kinds of 62 parent resources. \n ParentRefs must be _distinct_. This means either 63 that: \n * They select different objects. If this is the case, 64 then parentRef entries are distinct. In terms of fields, this means 65 that the multi-part key defined by `group`, `kind`, `namespace`, 66 and `name` must be unique across all parentRef entries in the Route. 67 * They do not select different objects, but for each optional field 68 used, each ParentRef that selects the same object must set the same 69 set of optional fields to different values. If one ParentRef sets 70 a combination of optional fields, all must set the same combination. 71 \n Some examples: \n * If one ParentRef sets `sectionName`, all 72 ParentRefs referencing the same object must also set `sectionName`. 73 * If one ParentRef sets `port`, all ParentRefs referencing the same 74 object must also set `port`. * If one ParentRef sets `sectionName` 75 and `port`, all ParentRefs referencing the same object must also 76 set `sectionName` and `port`. \n It is possible to separately reference 77 multiple distinct objects that may be collapsed by an implementation. 78 For example, some implementations may choose to merge compatible 79 Gateway Listeners together. If that is the case, the list of routes 80 attached to those resources should also be merged. \n Note that 81 for ParentRefs that cross namespace boundaries, there are specific 82 rules. Cross-namespace references are only valid if they are explicitly 83 allowed by something in the namespace they are referring to. For 84 example, Gateway has the AllowedRoutes field, and ReferenceGrant 85 provides a generic way to enable other kinds of cross-namespace 86 reference. \n ParentRefs from a Route to a Service in the same 87 namespace are \"producer\" routes, which apply default routing rules 88 to inbound connections from any namespace to the Service. \n ParentRefs 89 from a Route to a Service in a different namespace are \"consumer\" 90 routes, and these routing rules are only applied to outbound connections 91 originating from the same namespace as the Route, for which the 92 intended destination of the connections are a Service targeted as 93 a ParentRef of the Route. \n " 94 items: 95 description: "ParentReference identifies an API object (usually 96 a Gateway) that can be considered a parent of this resource (usually 97 a route). There are two kinds of parent resources with \"Core\" 98 support: \n * Gateway (Gateway conformance profile) * Service 99 (Mesh conformance profile, experimental, ClusterIP Services only) 100 \n This API may be extended in the future to support additional 101 kinds of parent resources. \n The API object must be valid in 102 the cluster; the Group and Kind must be registered in the cluster 103 for this reference to be valid." 104 properties: 105 group: 106 default: gateway.networking.k8s.io 107 description: "Group is the group of the referent. When unspecified, 108 \"gateway.networking.k8s.io\" is inferred. To set the core 109 API group (such as for a \"Service\" kind referent), Group 110 must be explicitly set to \"\" (empty string). \n Support: 111 Core" 112 maxLength: 253 113 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ 114 type: string 115 kind: 116 default: Gateway 117 description: "Kind is kind of the referent. \n There are two 118 kinds of parent resources with \"Core\" support: \n * Gateway 119 (Gateway conformance profile) * Service (Mesh conformance 120 profile, experimental, ClusterIP Services only) \n Support 121 for other resources is Implementation-Specific." 122 maxLength: 63 123 minLength: 1 124 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ 125 type: string 126 name: 127 description: "Name is the name of the referent. \n Support: 128 Core" 129 maxLength: 253 130 minLength: 1 131 type: string 132 namespace: 133 description: "Namespace is the namespace of the referent. When 134 unspecified, this refers to the local namespace of the Route. 135 \n Note that there are specific rules for ParentRefs which 136 cross namespace boundaries. Cross-namespace references are 137 only valid if they are explicitly allowed by something in 138 the namespace they are referring to. For example: Gateway 139 has the AllowedRoutes field, and ReferenceGrant provides a 140 generic way to enable any other kind of cross-namespace reference. 141 \n ParentRefs from a Route to a Service in the same namespace 142 are \"producer\" routes, which apply default routing rules 143 to inbound connections from any namespace to the Service. 144 \n ParentRefs from a Route to a Service in a different namespace 145 are \"consumer\" routes, and these routing rules are only 146 applied to outbound connections originating from the same 147 namespace as the Route, for which the intended destination 148 of the connections are a Service targeted as a ParentRef of 149 the Route. \n Support: Core" 150 maxLength: 63 151 minLength: 1 152 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ 153 type: string 154 port: 155 description: "Port is the network port this Route targets. It 156 can be interpreted differently based on the type of parent 157 resource. \n When the parent resource is a Gateway, this targets 158 all listeners listening on the specified port that also support 159 this kind of Route(and select this Route). It's not recommended 160 to set `Port` unless the networking behaviors specified in 161 a Route must apply to a specific port as opposed to a listener(s) 162 whose port(s) may be changed. When both Port and SectionName 163 are specified, the name and port of the selected listener 164 must match both specified values. \n When the parent resource 165 is a Service, this targets a specific port in the Service 166 spec. When both Port (experimental) and SectionName are specified, 167 the name and port of the selected port must match both specified 168 values. \n Implementations MAY choose to support other parent 169 resources. Implementations supporting other types of parent 170 resources MUST clearly document how/if Port is interpreted. 171 \n For the purpose of status, an attachment is considered 172 successful as long as the parent resource accepts it partially. 173 For example, Gateway listeners can restrict which Routes can 174 attach to them by Route kind, namespace, or hostname. If 1 175 of 2 Gateway listeners accept attachment from the referencing 176 Route, the Route MUST be considered successfully attached. 177 If no Gateway listeners accept attachment from this Route, 178 the Route MUST be considered detached from the Gateway. \n 179 Support: Extended \n " 180 format: int32 181 maximum: 65535 182 minimum: 1 183 type: integer 184 sectionName: 185 description: "SectionName is the name of a section within the 186 target resource. In the following resources, SectionName is 187 interpreted as the following: \n * Gateway: Listener Name. 188 When both Port (experimental) and SectionName are specified, 189 the name and port of the selected listener must match both 190 specified values. * Service: Port Name. When both Port (experimental) 191 and SectionName are specified, the name and port of the selected 192 listener must match both specified values. Note that attaching 193 Routes to Services as Parents is part of experimental Mesh 194 support and is not supported for any other purpose. \n Implementations 195 MAY choose to support attaching Routes to other resources. 196 If that is the case, they MUST clearly document how SectionName 197 is interpreted. \n When unspecified (empty string), this will 198 reference the entire resource. For the purpose of status, 199 an attachment is considered successful if at least one section 200 in the parent resource accepts it. For example, Gateway listeners 201 can restrict which Routes can attach to them by Route kind, 202 namespace, or hostname. If 1 of 2 Gateway listeners accept 203 attachment from the referencing Route, the Route MUST be considered 204 successfully attached. If no Gateway listeners accept attachment 205 from this Route, the Route MUST be considered detached from 206 the Gateway. \n Support: Core" 207 maxLength: 253 208 minLength: 1 209 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ 210 type: string 211 required: 212 - name 213 type: object 214 maxItems: 32 215 type: array 216 x-kubernetes-validations: 217 - message: sectionName or port must be specified when parentRefs includes 218 2 or more references to the same parent 219 rule: 'self.all(p1, self.all(p2, p1.group == p2.group && p1.kind 220 == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) 221 || p1.__namespace__ == '''') && (!has(p2.__namespace__) || p2.__namespace__ 222 == '''')) || (has(p1.__namespace__) && has(p2.__namespace__) && 223 p1.__namespace__ == p2.__namespace__)) ? ((!has(p1.sectionName) 224 || p1.sectionName == '''') == (!has(p2.sectionName) || p2.sectionName 225 == '''') && (!has(p1.port) || p1.port == 0) == (!has(p2.port) 226 || p2.port == 0)): true))' 227 - message: sectionName or port must be unique when parentRefs includes 228 2 or more references to the same parent 229 rule: self.all(p1, self.exists_one(p2, p1.group == p2.group && p1.kind 230 == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) 231 || p1.__namespace__ == '') && (!has(p2.__namespace__) || p2.__namespace__ 232 == '')) || (has(p1.__namespace__) && has(p2.__namespace__) && 233 p1.__namespace__ == p2.__namespace__ )) && (((!has(p1.sectionName) 234 || p1.sectionName == '') && (!has(p2.sectionName) || p2.sectionName 235 == '')) || ( has(p1.sectionName) && has(p2.sectionName) && p1.sectionName 236 == p2.sectionName)) && (((!has(p1.port) || p1.port == 0) && (!has(p2.port) 237 || p2.port == 0)) || (has(p1.port) && has(p2.port) && p1.port 238 == p2.port)))) 239 rules: 240 description: Rules are a list of UDP matchers and actions. 241 items: 242 description: UDPRouteRule is the configuration for a given rule. 243 properties: 244 backendRefs: 245 description: "BackendRefs defines the backend(s) where matching 246 requests should be sent. If unspecified or invalid (refers 247 to a non-existent resource or a Service with no endpoints), 248 the underlying implementation MUST actively reject connection 249 attempts to this backend. Packet drops must respect weight; 250 if an invalid backend is requested to have 80% of the packets, 251 then 80% of packets must be dropped instead. \n Support: Core 252 for Kubernetes Service \n Support: Extended for Kubernetes 253 ServiceImport \n Support: Implementation-specific for any 254 other resource \n Support for weight: Extended" 255 items: 256 description: "BackendRef defines how a Route should forward 257 a request to a Kubernetes resource. \n Note that when a 258 namespace different than the local namespace is specified, 259 a ReferenceGrant object is required in the referent namespace 260 to allow that namespace's owner to accept the reference. 261 See the ReferenceGrant documentation for details. \n <gateway:experimental:description> 262 \n When the BackendRef points to a Kubernetes Service, implementations 263 SHOULD honor the appProtocol field if it is set for the 264 target Service Port. \n Implementations supporting appProtocol 265 SHOULD recognize the Kubernetes Standard Application Protocols 266 defined in KEP-3726. \n If a Service appProtocol isn't specified, 267 an implementation MAY infer the backend protocol through 268 its own means. Implementations MAY infer the protocol from 269 the Route type referring to the backend Service. \n If a 270 Route is not able to send traffic to the backend using the 271 specified protocol then the backend is considered invalid. 272 Implementations MUST set the \"ResolvedRefs\" condition 273 to \"False\" with the \"UnsupportedProtocol\" reason. \n 274 </gateway:experimental:description> \n Note that when the 275 BackendTLSPolicy object is enabled by the implementation, 276 there are some extra rules about validity to consider here. 277 See the fields where this struct is used for more information 278 about the exact behavior." 279 properties: 280 group: 281 default: "" 282 description: Group is the group of the referent. For example, 283 "gateway.networking.k8s.io". When unspecified or empty 284 string, core API group is inferred. 285 maxLength: 253 286 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ 287 type: string 288 kind: 289 default: Service 290 description: "Kind is the Kubernetes resource kind of 291 the referent. For example \"Service\". \n Defaults to 292 \"Service\" when not specified. \n ExternalName services 293 can refer to CNAME DNS records that may live outside 294 of the cluster and as such are difficult to reason about 295 in terms of conformance. They also may not be safe to 296 forward to (see CVE-2021-25740 for more information). 297 Implementations SHOULD NOT support ExternalName Services. 298 \n Support: Core (Services with a type other than ExternalName) 299 \n Support: Implementation-specific (Services with type 300 ExternalName)" 301 maxLength: 63 302 minLength: 1 303 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ 304 type: string 305 name: 306 description: Name is the name of the referent. 307 maxLength: 253 308 minLength: 1 309 type: string 310 namespace: 311 description: "Namespace is the namespace of the backend. 312 When unspecified, the local namespace is inferred. \n 313 Note that when a namespace different than the local 314 namespace is specified, a ReferenceGrant object is required 315 in the referent namespace to allow that namespace's 316 owner to accept the reference. See the ReferenceGrant 317 documentation for details. \n Support: Core" 318 maxLength: 63 319 minLength: 1 320 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ 321 type: string 322 port: 323 description: Port specifies the destination port number 324 to use for this resource. Port is required when the 325 referent is a Kubernetes Service. In this case, the 326 port number is the service port number, not the target 327 port. For other resources, destination port might be 328 derived from the referent resource or this field. 329 format: int32 330 maximum: 65535 331 minimum: 1 332 type: integer 333 weight: 334 default: 1 335 description: "Weight specifies the proportion of requests 336 forwarded to the referenced backend. This is computed 337 as weight/(sum of all weights in this BackendRefs list). 338 For non-zero values, there may be some epsilon from 339 the exact proportion defined here depending on the precision 340 an implementation supports. Weight is not a percentage 341 and the sum of weights does not need to equal 100. \n 342 If only one backend is specified and it has a weight 343 greater than 0, 100% of the traffic is forwarded to 344 that backend. If weight is set to 0, no traffic should 345 be forwarded for this entry. If unspecified, weight 346 defaults to 1. \n Support for this field varies based 347 on the context where used." 348 format: int32 349 maximum: 1000000 350 minimum: 0 351 type: integer 352 required: 353 - name 354 type: object 355 x-kubernetes-validations: 356 - message: Must have port for Service reference 357 rule: '(size(self.group) == 0 && self.kind == ''Service'') 358 ? has(self.port) : true' 359 maxItems: 16 360 minItems: 1 361 type: array 362 type: object 363 maxItems: 16 364 minItems: 1 365 type: array 366 required: 367 - rules 368 type: object 369 status: 370 description: Status defines the current state of UDPRoute. 371 properties: 372 parents: 373 description: "Parents is a list of parent resources (usually Gateways) 374 that are associated with the route, and the status of the route 375 with respect to each parent. When this route attaches to a parent, 376 the controller that manages the parent must add an entry to this 377 list when the controller first sees the route and should update 378 the entry as appropriate when the route or gateway is modified. 379 \n Note that parent references that cannot be resolved by an implementation 380 of this API will not be added to this list. Implementations of this 381 API can only populate Route status for the Gateways/parent resources 382 they are responsible for. \n A maximum of 32 Gateways will be represented 383 in this list. An empty list means the route has not been attached 384 to any Gateway." 385 items: 386 description: RouteParentStatus describes the status of a route with 387 respect to an associated Parent. 388 properties: 389 conditions: 390 description: "Conditions describes the status of the route with 391 respect to the Gateway. Note that the route's availability 392 is also subject to the Gateway's own status conditions and 393 listener status. \n If the Route's ParentRef specifies an 394 existing Gateway that supports Routes of this kind AND that 395 Gateway's controller has sufficient access, then that Gateway's 396 controller MUST set the \"Accepted\" condition on the Route, 397 to indicate whether the route has been accepted or rejected 398 by the Gateway, and why. \n A Route MUST be considered \"Accepted\" 399 if at least one of the Route's rules is implemented by the 400 Gateway. \n There are a number of cases where the \"Accepted\" 401 condition may not be set due to lack of controller visibility, 402 that includes when: \n * The Route refers to a non-existent 403 parent. * The Route is of a type that the controller does 404 not support. * The Route is in a namespace the controller 405 does not have access to." 406 items: 407 description: "Condition contains details for one aspect of 408 the current state of this API Resource. --- This struct 409 is intended for direct use as an array at the field path 410 .status.conditions. For example, \n type FooStatus struct{ 411 // Represents the observations of a foo's current state. 412 // Known .status.conditions.type are: \"Available\", \"Progressing\", 413 and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge 414 // +listType=map // +listMapKey=type Conditions []metav1.Condition 415 `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" 416 protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields 417 }" 418 properties: 419 lastTransitionTime: 420 description: lastTransitionTime is the last time the condition 421 transitioned from one status to another. This should 422 be when the underlying condition changed. If that is 423 not known, then using the time when the API field changed 424 is acceptable. 425 format: date-time 426 type: string 427 message: 428 description: message is a human readable message indicating 429 details about the transition. This may be an empty string. 430 maxLength: 32768 431 type: string 432 observedGeneration: 433 description: observedGeneration represents the .metadata.generation 434 that the condition was set based upon. For instance, 435 if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration 436 is 9, the condition is out of date with respect to the 437 current state of the instance. 438 format: int64 439 minimum: 0 440 type: integer 441 reason: 442 description: reason contains a programmatic identifier 443 indicating the reason for the condition's last transition. 444 Producers of specific condition types may define expected 445 values and meanings for this field, and whether the 446 values are considered a guaranteed API. The value should 447 be a CamelCase string. This field may not be empty. 448 maxLength: 1024 449 minLength: 1 450 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ 451 type: string 452 status: 453 description: status of the condition, one of True, False, 454 Unknown. 455 enum: 456 - "True" 457 - "False" 458 - Unknown 459 type: string 460 type: 461 description: type of condition in CamelCase or in foo.example.com/CamelCase. 462 --- Many .condition.type values are consistent across 463 resources like Available, but because arbitrary conditions 464 can be useful (see .node.status.conditions), the ability 465 to deconflict is important. The regex it matches is 466 (dns1123SubdomainFmt/)?(qualifiedNameFmt) 467 maxLength: 316 468 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ 469 type: string 470 required: 471 - lastTransitionTime 472 - message 473 - reason 474 - status 475 - type 476 type: object 477 maxItems: 8 478 minItems: 1 479 type: array 480 x-kubernetes-list-map-keys: 481 - type 482 x-kubernetes-list-type: map 483 controllerName: 484 description: "ControllerName is a domain/path string that indicates 485 the name of the controller that wrote this status. This corresponds 486 with the controllerName field on GatewayClass. \n Example: 487 \"example.net/gateway-controller\". \n The format of this 488 field is DOMAIN \"/\" PATH, where DOMAIN and PATH are valid 489 Kubernetes names (https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names). 490 \n Controllers MUST populate this field when writing status. 491 Controllers should ensure that entries to status populated 492 with their ControllerName are cleaned up when they are no 493 longer necessary." 494 maxLength: 253 495 minLength: 1 496 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$ 497 type: string 498 parentRef: 499 description: ParentRef corresponds with a ParentRef in the spec 500 that this RouteParentStatus struct describes the status of. 501 properties: 502 group: 503 default: gateway.networking.k8s.io 504 description: "Group is the group of the referent. When unspecified, 505 \"gateway.networking.k8s.io\" is inferred. To set the 506 core API group (such as for a \"Service\" kind referent), 507 Group must be explicitly set to \"\" (empty string). \n 508 Support: Core" 509 maxLength: 253 510 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ 511 type: string 512 kind: 513 default: Gateway 514 description: "Kind is kind of the referent. \n There are 515 two kinds of parent resources with \"Core\" support: \n 516 * Gateway (Gateway conformance profile) * Service (Mesh 517 conformance profile, experimental, ClusterIP Services 518 only) \n Support for other resources is Implementation-Specific." 519 maxLength: 63 520 minLength: 1 521 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ 522 type: string 523 name: 524 description: "Name is the name of the referent. \n Support: 525 Core" 526 maxLength: 253 527 minLength: 1 528 type: string 529 namespace: 530 description: "Namespace is the namespace of the referent. 531 When unspecified, this refers to the local namespace of 532 the Route. \n Note that there are specific rules for ParentRefs 533 which cross namespace boundaries. Cross-namespace references 534 are only valid if they are explicitly allowed by something 535 in the namespace they are referring to. For example: Gateway 536 has the AllowedRoutes field, and ReferenceGrant provides 537 a generic way to enable any other kind of cross-namespace 538 reference. \n ParentRefs from a Route to a Service in 539 the same namespace are \"producer\" routes, which apply 540 default routing rules to inbound connections from any 541 namespace to the Service. \n ParentRefs from a Route to 542 a Service in a different namespace are \"consumer\" routes, 543 and these routing rules are only applied to outbound connections 544 originating from the same namespace as the Route, for 545 which the intended destination of the connections are 546 a Service targeted as a ParentRef of the Route. \n Support: 547 Core" 548 maxLength: 63 549 minLength: 1 550 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ 551 type: string 552 port: 553 description: "Port is the network port this Route targets. 554 It can be interpreted differently based on the type of 555 parent resource. \n When the parent resource is a Gateway, 556 this targets all listeners listening on the specified 557 port that also support this kind of Route(and select this 558 Route). It's not recommended to set `Port` unless the 559 networking behaviors specified in a Route must apply to 560 a specific port as opposed to a listener(s) whose port(s) 561 may be changed. When both Port and SectionName are specified, 562 the name and port of the selected listener must match 563 both specified values. \n When the parent resource is 564 a Service, this targets a specific port in the Service 565 spec. When both Port (experimental) and SectionName are 566 specified, the name and port of the selected port must 567 match both specified values. \n Implementations MAY choose 568 to support other parent resources. Implementations supporting 569 other types of parent resources MUST clearly document 570 how/if Port is interpreted. \n For the purpose of status, 571 an attachment is considered successful as long as the 572 parent resource accepts it partially. For example, Gateway 573 listeners can restrict which Routes can attach to them 574 by Route kind, namespace, or hostname. If 1 of 2 Gateway 575 listeners accept attachment from the referencing Route, 576 the Route MUST be considered successfully attached. If 577 no Gateway listeners accept attachment from this Route, 578 the Route MUST be considered detached from the Gateway. 579 \n Support: Extended \n " 580 format: int32 581 maximum: 65535 582 minimum: 1 583 type: integer 584 sectionName: 585 description: "SectionName is the name of a section within 586 the target resource. In the following resources, SectionName 587 is interpreted as the following: \n * Gateway: Listener 588 Name. When both Port (experimental) and SectionName are 589 specified, the name and port of the selected listener 590 must match both specified values. * Service: Port Name. 591 When both Port (experimental) and SectionName are specified, 592 the name and port of the selected listener must match 593 both specified values. Note that attaching Routes to Services 594 as Parents is part of experimental Mesh support and is 595 not supported for any other purpose. \n Implementations 596 MAY choose to support attaching Routes to other resources. 597 If that is the case, they MUST clearly document how SectionName 598 is interpreted. \n When unspecified (empty string), this 599 will reference the entire resource. For the purpose of 600 status, an attachment is considered successful if at least 601 one section in the parent resource accepts it. For example, 602 Gateway listeners can restrict which Routes can attach 603 to them by Route kind, namespace, or hostname. If 1 of 604 2 Gateway listeners accept attachment from the referencing 605 Route, the Route MUST be considered successfully attached. 606 If no Gateway listeners accept attachment from this Route, 607 the Route MUST be considered detached from the Gateway. 608 \n Support: Core" 609 maxLength: 253 610 minLength: 1 611 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ 612 type: string 613 required: 614 - name 615 type: object 616 required: 617 - controllerName 618 - parentRef 619 type: object 620 maxItems: 32 621 type: array 622 required: 623 - parents 624 type: object 625 required: 626 - spec 627 type: object 628 served: true 629 storage: true 630 subresources: 631 status: {} 632 status: 633 acceptedNames: 634 kind: "" 635 plural: "" 636 conditions: null 637 storedVersions: null