Kubernetes Configuration Reference

Dynamic configuration with Kubernetes Gateway provider.

Definitions

  1. ---
  2. apiVersion: apiextensions.k8s.io/v1
  3. kind: CustomResourceDefinition
  4. metadata:
  5. annotations:
  6. controller-gen.kubebuilder.io/version: v0.5.0
  7. creationTimestamp: null
  8. name: gatewayclasses.networking.x-k8s.io
  9. spec:
  10. group: networking.x-k8s.io
  11. names:
  12. categories:
  13. - gateway-api
  14. kind: GatewayClass
  15. listKind: GatewayClassList
  16. plural: gatewayclasses
  17. shortNames:
  18. - gc
  19. singular: gatewayclass
  20. scope: Cluster
  21. versions:
  22. - additionalPrinterColumns:
  23. - jsonPath: .spec.controller
  24. name: Controller
  25. type: string
  26. - jsonPath: .metadata.creationTimestamp
  27. name: Age
  28. type: date
  29. name: v1alpha1
  30. schema:
  31. openAPIV3Schema:
  32. description: "GatewayClass describes a class of Gateways available to the
  33. user for creating Gateway resources. \n GatewayClass is a Cluster level
  34. resource."
  35. properties:
  36. apiVersion:
  37. description: 'APIVersion defines the versioned schema of this representation
  38. of an object. Servers should convert recognized schemas to the latest
  39. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  40. type: string
  41. kind:
  42. description: 'Kind is a string value representing the REST resource this
  43. object represents. Servers may infer this from the endpoint the client
  44. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  45. type: string
  46. metadata:
  47. type: object
  48. spec:
  49. description: Spec defines the desired state of GatewayClass.
  50. properties:
  51. controller:
  52. description: "Controller is a domain/path string that indicates the
  53. controller that is managing Gateways of this class. \n Example:
  54. \"acme.io/gateway-controller\". \n This field is not mutable and
  55. cannot be empty. \n The format of this field is DOMAIN \"/\" PATH,
  56. where DOMAIN and PATH are valid Kubernetes names (https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names).
  57. \n Support: Core"
  58. maxLength: 253
  59. type: string
  60. parametersRef:
  61. description: "ParametersRef is a reference to a resource that contains
  62. the configuration parameters corresponding to the GatewayClass.
  63. This is optional if the controller does not require any additional
  64. configuration. \n ParametersRef can reference a standard Kubernetes
  65. resource, i.e. ConfigMap, or an implementation-specific custom resource.
  66. The resource can be cluster-scoped or namespace-scoped. \n If the
  67. referent cannot be found, the GatewayClass's \"InvalidParameters\"
  68. status condition will be true. \n Support: Custom"
  69. properties:
  70. group:
  71. description: Group is the group of the referent.
  72. maxLength: 253
  73. minLength: 1
  74. type: string
  75. kind:
  76. description: Kind is kind of the referent.
  77. maxLength: 253
  78. minLength: 1
  79. type: string
  80. name:
  81. description: Name is the name of the referent.
  82. maxLength: 253
  83. minLength: 1
  84. type: string
  85. namespace:
  86. description: Namespace is the namespace of the referent. This
  87. field is required when scope is set to "Namespace" and ignored
  88. when scope is set to "Cluster".
  89. maxLength: 253
  90. minLength: 1
  91. type: string
  92. scope:
  93. default: Cluster
  94. description: Scope represents if the referent is a Cluster or
  95. Namespace scoped resource. This may be set to "Cluster" or "Namespace".
  96. enum:
  97. - Cluster
  98. - Namespace
  99. type: string
  100. required:
  101. - group
  102. - kind
  103. - name
  104. type: object
  105. required:
  106. - controller
  107. type: object
  108. status:
  109. default:
  110. conditions:
  111. - lastTransitionTime: "1970-01-01T00:00:00Z"
  112. message: Waiting for controller
  113. reason: Waiting
  114. status: "False"
  115. type: Admitted
  116. description: Status defines the current state of GatewayClass.
  117. properties:
  118. conditions:
  119. default:
  120. - lastTransitionTime: "1970-01-01T00:00:00Z"
  121. message: Waiting for controller
  122. reason: Waiting
  123. status: "False"
  124. type: Admitted
  125. description: "Conditions is the current status from the controller
  126. for this GatewayClass. \n Controllers should prefer to publish conditions
  127. using values of GatewayClassConditionType for the type of each Condition."
  128. items:
  129. description: "Condition contains details for one aspect of the current
  130. state of this API Resource. --- This struct is intended for direct
  131. use as an array at the field path .status.conditions. For example,
  132. type FooStatus struct{ // Represents the observations of a
  133. foo's current state. // Known .status.conditions.type are:
  134. \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
  135. \ // +patchStrategy=merge // +listType=map // +listMapKey=type
  136. \ Conditions []metav1.Condition `json:\"conditions,omitempty\"
  137. patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
  138. \n // other fields }"
  139. properties:
  140. lastTransitionTime:
  141. description: lastTransitionTime is the last time the condition
  142. transitioned from one status to another. This should be when
  143. the underlying condition changed. If that is not known, then
  144. using the time when the API field changed is acceptable.
  145. format: date-time
  146. type: string
  147. message:
  148. description: message is a human readable message indicating
  149. details about the transition. This may be an empty string.
  150. maxLength: 32768
  151. type: string
  152. observedGeneration:
  153. description: observedGeneration represents the .metadata.generation
  154. that the condition was set based upon. For instance, if .metadata.generation
  155. is currently 12, but the .status.conditions[x].observedGeneration
  156. is 9, the condition is out of date with respect to the current
  157. state of the instance.
  158. format: int64
  159. minimum: 0
  160. type: integer
  161. reason:
  162. description: reason contains a programmatic identifier indicating
  163. the reason for the condition's last transition. Producers
  164. of specific condition types may define expected values and
  165. meanings for this field, and whether the values are considered
  166. a guaranteed API. The value should be a CamelCase string.
  167. This field may not be empty.
  168. maxLength: 1024
  169. minLength: 1
  170. pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
  171. type: string
  172. status:
  173. description: status of the condition, one of True, False, Unknown.
  174. enum:
  175. - "True"
  176. - "False"
  177. - Unknown
  178. type: string
  179. type:
  180. description: type of condition in CamelCase or in foo.example.com/CamelCase.
  181. --- Many .condition.type values are consistent across resources
  182. like Available, but because arbitrary conditions can be useful
  183. (see .node.status.conditions), the ability to deconflict is
  184. important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
  185. maxLength: 316
  186. 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])$
  187. type: string
  188. required:
  189. - lastTransitionTime
  190. - message
  191. - reason
  192. - status
  193. - type
  194. type: object
  195. maxItems: 8
  196. type: array
  197. x-kubernetes-list-map-keys:
  198. - type
  199. x-kubernetes-list-type: map
  200. type: object
  201. type: object
  202. served: true
  203. storage: true
  204. subresources:
  205. status: {}
  206. status:
  207. acceptedNames:
  208. kind: ""
  209. plural: ""
  210. conditions: []
  211. storedVersions: []
  212. ---
  213. apiVersion: apiextensions.k8s.io/v1
  214. kind: CustomResourceDefinition
  215. metadata:
  216. annotations:
  217. controller-gen.kubebuilder.io/version: v0.5.0
  218. creationTimestamp: null
  219. name: gateways.networking.x-k8s.io
  220. spec:
  221. group: networking.x-k8s.io
  222. names:
  223. categories:
  224. - gateway-api
  225. kind: Gateway
  226. listKind: GatewayList
  227. plural: gateways
  228. shortNames:
  229. - gtw
  230. singular: gateway
  231. scope: Namespaced
  232. versions:
  233. - additionalPrinterColumns:
  234. - jsonPath: .spec.gatewayClassName
  235. name: Class
  236. type: string
  237. - jsonPath: .metadata.creationTimestamp
  238. name: Age
  239. type: date
  240. name: v1alpha1
  241. schema:
  242. openAPIV3Schema:
  243. description: "Gateway represents an instantiation of a service-traffic handling
  244. infrastructure by binding Listeners to a set of IP addresses. \n Implementations
  245. should add the `gateway-exists-finalizer.networking.x-k8s.io` finalizer
  246. on the associated GatewayClass whenever Gateway(s) is running. This ensures
  247. that a GatewayClass associated with a Gateway(s) is not deleted while in
  248. use."
  249. properties:
  250. apiVersion:
  251. description: 'APIVersion defines the versioned schema of this representation
  252. of an object. Servers should convert recognized schemas to the latest
  253. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  254. type: string
  255. kind:
  256. description: 'Kind is a string value representing the REST resource this
  257. object represents. Servers may infer this from the endpoint the client
  258. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  259. type: string
  260. metadata:
  261. type: object
  262. spec:
  263. description: Spec defines the desired state of Gateway.
  264. properties:
  265. addresses:
  266. description: "Addresses requested for this gateway. This is optional
  267. and behavior can depend on the GatewayClass. If a value is set in
  268. the spec and the requested address is invalid, the GatewayClass
  269. MUST indicate this in the associated entry in GatewayStatus.Addresses.
  270. \n If no Addresses are specified, the GatewayClass may schedule
  271. the Gateway in an implementation-defined manner, assigning an appropriate
  272. set of Addresses. \n The GatewayClass MUST bind all Listeners to
  273. every GatewayAddress that it assigns to the Gateway. \n Support:
  274. Core"
  275. items:
  276. description: GatewayAddress describes an address that can be bound
  277. to a Gateway.
  278. properties:
  279. type:
  280. default: IPAddress
  281. description: "Type of the address. \n Support: Extended"
  282. enum:
  283. - IPAddress
  284. - NamedAddress
  285. type: string
  286. value:
  287. description: "Value of the address. The validity of the values
  288. will depend on the type and support by the controller. \n
  289. Examples: `1.2.3.4`, `128::1`, `my-ip-address`."
  290. maxLength: 253
  291. minLength: 1
  292. type: string
  293. required:
  294. - value
  295. type: object
  296. maxItems: 16
  297. type: array
  298. gatewayClassName:
  299. description: GatewayClassName used for this Gateway. This is the name
  300. of a GatewayClass resource.
  301. maxLength: 253
  302. minLength: 1
  303. type: string
  304. listeners:
  305. description: "Listeners associated with this Gateway. Listeners define
  306. logical endpoints that are bound on this Gateway's addresses. At
  307. least one Listener MUST be specified. \n An implementation MAY group
  308. Listeners by Port and then collapse each group of Listeners into
  309. a single Listener if the implementation determines that the Listeners
  310. in the group are \"compatible\". An implementation MAY also group
  311. together and collapse compatible Listeners belonging to different
  312. Gateways. \n For example, an implementation might consider Listeners
  313. to be compatible with each other if all of the following conditions
  314. are met: \n 1. Either each Listener within the group specifies the
  315. \"HTTP\" Protocol or each Listener within the group specifies
  316. either the \"HTTPS\" or \"TLS\" Protocol. \n 2. Each Listener
  317. within the group specifies a Hostname that is unique within the
  318. group. \n 3. As a special case, one Listener within a group may
  319. omit Hostname, in which case this Listener matches when no other
  320. Listener matches. \n If the implementation does collapse compatible
  321. Listeners, the hostname provided in the incoming client request
  322. MUST be matched to a Listener to find the correct set of Routes.
  323. The incoming hostname MUST be matched using the Hostname field for
  324. each Listener in order of most to least specific. That is, exact
  325. matches must be processed before wildcard matches. \n If this field
  326. specifies multiple Listeners that have the same Port value but are
  327. not compatible, the implementation must raise a \"Conflicted\" condition
  328. in the Listener status. \n Support: Core"
  329. items:
  330. description: Listener embodies the concept of a logical endpoint
  331. where a Gateway can accept network connections. Each listener
  332. in a Gateway must have a unique combination of Hostname, Port,
  333. and Protocol. This will be enforced by a validating webhook.
  334. properties:
  335. hostname:
  336. description: "Hostname specifies the virtual hostname to match
  337. for protocol types that define this concept. When unspecified,
  338. \"\", or `*`, all hostnames are matched. This field can be
  339. omitted for protocols that don't require hostname based matching.
  340. \n Hostname is the fully qualified domain name of a network
  341. host, as defined by RFC 3986. Note the following deviations
  342. from the \"host\" part of the URI as defined in the RFC: \n
  343. 1. IP literals are not allowed. 2. The `:` delimiter is not
  344. respected because ports are not allowed. \n Hostname can be
  345. \"precise\" which is a domain name without the terminating
  346. dot of a network host (e.g. \"foo.example.com\") or \"wildcard\",
  347. which is a domain name prefixed with a single wildcard label
  348. (e.g. `*.example.com`). The wildcard character `*` must appear
  349. by itself as the first DNS label and matches only a single
  350. label. \n Support: Core"
  351. maxLength: 253
  352. minLength: 1
  353. type: string
  354. port:
  355. description: "Port is the network port. Multiple listeners may
  356. use the same port, subject to the Listener compatibility rules.
  357. \n Support: Core"
  358. format: int32
  359. maximum: 65535
  360. minimum: 1
  361. type: integer
  362. protocol:
  363. description: "Protocol specifies the network protocol this listener
  364. expects to receive. The GatewayClass MUST apply the Hostname
  365. match appropriately for each protocol: \n * For the \"TLS\"
  366. protocol, the Hostname match MUST be applied to the [SNI](https://tools.ietf.org/html/rfc6066#section-3)
  367. \ server name offered by the client. * For the \"HTTP\" protocol,
  368. the Hostname match MUST be applied to the host portion of
  369. the [effective request URI](https://tools.ietf.org/html/rfc7230#section-5.5)
  370. \ or the [:authority pseudo-header](https://tools.ietf.org/html/rfc7540#section-8.1.2.3)
  371. * For the \"HTTPS\" protocol, the Hostname match MUST be applied
  372. at both the TLS and HTTP protocol layers. \n Support: Core"
  373. type: string
  374. routes:
  375. description: "Routes specifies a schema for associating routes
  376. with the Listener using selectors. A Route is a resource capable
  377. of servicing a request and allows a cluster operator to expose
  378. a cluster resource (i.e. Service) by externally-reachable
  379. URL, load-balance traffic and terminate SSL/TLS. Typically,
  380. a route is a \"HTTPRoute\" or \"TCPRoute\" in group \"networking.x-k8s.io\",
  381. however, an implementation may support other types of resources.
  382. \n The Routes selector MUST select a set of objects that are
  383. compatible with the application protocol specified in the
  384. Protocol field. \n Although a client request may technically
  385. match multiple route rules, only one rule may ultimately receive
  386. the request. Matching precedence MUST be determined in order
  387. of the following criteria: \n * The most specific match. For
  388. example, the most specific HTTPRoute match is determined
  389. by the longest matching combination of hostname and path.
  390. * The oldest Route based on creation timestamp. For example,
  391. a Route with a creation timestamp of \"2020-09-08 01:02:03\"
  392. is given precedence over a Route with a creation timestamp
  393. of \"2020-09-08 01:02:04\". * If everything else is equivalent,
  394. the Route appearing first in alphabetical order (namespace/name)
  395. should be given precedence. For example, foo/bar is given
  396. precedence over foo/baz. \n All valid portions of a Route
  397. selected by this field should be supported. Invalid portions
  398. of a Route can be ignored (sometimes that will mean the full
  399. Route). If a portion of a Route transitions from valid to
  400. invalid, support for that portion of the Route should be dropped
  401. to ensure consistency. For example, even if a filter specified
  402. by a Route is invalid, the rest of the Route should still
  403. be supported. \n Support: Core"
  404. properties:
  405. group:
  406. default: networking.x-k8s.io
  407. description: "Group is the group of the route resource to
  408. select. Omitting the value or specifying the empty string
  409. indicates the networking.x-k8s.io API group. For example,
  410. use the following to select an HTTPRoute: \n routes: kind:
  411. HTTPRoute \n Otherwise, if an alternative API group is
  412. desired, specify the desired group: \n routes: group:
  413. acme.io kind: FooRoute \n Support: Core"
  414. maxLength: 253
  415. minLength: 1
  416. type: string
  417. kind:
  418. description: "Kind is the kind of the route resource to
  419. select. \n Kind MUST correspond to kinds of routes that
  420. are compatible with the application protocol specified
  421. in the Listener's Protocol field. \n If an implementation
  422. does not support or recognize this resource type, it SHOULD
  423. set the \"ResolvedRefs\" condition to false for this listener
  424. with the \"InvalidRoutesRef\" reason. \n Support: Core"
  425. type: string
  426. namespaces:
  427. default:
  428. from: Same
  429. description: "Namespaces indicates in which namespaces Routes
  430. should be selected for this Gateway. This is restricted
  431. to the namespace of this Gateway by default. \n Support:
  432. Core"
  433. properties:
  434. from:
  435. default: Same
  436. description: "From indicates where Routes will be selected
  437. for this Gateway. Possible values are: * All: Routes
  438. in all namespaces may be used by this Gateway. * Selector:
  439. Routes in namespaces selected by the selector may
  440. be used by this Gateway. * Same: Only Routes in
  441. the same namespace may be used by this Gateway. \n
  442. Support: Core"
  443. enum:
  444. - All
  445. - Selector
  446. - Same
  447. type: string
  448. selector:
  449. description: "Selector must be specified when From is
  450. set to \"Selector\". In that case, only Routes in
  451. Namespaces matching this Selector will be selected
  452. by this Gateway. This field is ignored for other values
  453. of \"From\". \n Support: Core"
  454. properties:
  455. matchExpressions:
  456. description: matchExpressions is a list of label
  457. selector requirements. The requirements are ANDed.
  458. items:
  459. description: A label selector requirement is a
  460. selector that contains values, a key, and an
  461. operator that relates the key and values.
  462. properties:
  463. key:
  464. description: key is the label key that the
  465. selector applies to.
  466. type: string
  467. operator:
  468. description: operator represents a key's relationship
  469. to a set of values. Valid operators are
  470. In, NotIn, Exists and DoesNotExist.
  471. type: string
  472. values:
  473. description: values is an array of string
  474. values. If the operator is In or NotIn,
  475. the values array must be non-empty. If the
  476. operator is Exists or DoesNotExist, the
  477. values array must be empty. This array is
  478. replaced during a strategic merge patch.
  479. items:
  480. type: string
  481. type: array
  482. required:
  483. - key
  484. - operator
  485. type: object
  486. type: array
  487. matchLabels:
  488. additionalProperties:
  489. type: string
  490. description: matchLabels is a map of {key,value}
  491. pairs. A single {key,value} in the matchLabels
  492. map is equivalent to an element of matchExpressions,
  493. whose key field is "key", the operator is "In",
  494. and the values array contains only "value". The
  495. requirements are ANDed.
  496. type: object
  497. type: object
  498. type: object
  499. selector:
  500. description: "Selector specifies a set of route labels used
  501. for selecting routes to associate with the Gateway. If
  502. this Selector is defined, only routes matching the Selector
  503. are associated with the Gateway. An empty Selector matches
  504. all routes. \n Support: Core"
  505. properties:
  506. matchExpressions:
  507. description: matchExpressions is a list of label selector
  508. requirements. The requirements are ANDed.
  509. items:
  510. description: A label selector requirement is a selector
  511. that contains values, a key, and an operator that
  512. relates the key and values.
  513. properties:
  514. key:
  515. description: key is the label key that the selector
  516. applies to.
  517. type: string
  518. operator:
  519. description: operator represents a key's relationship
  520. to a set of values. Valid operators are In,
  521. NotIn, Exists and DoesNotExist.
  522. type: string
  523. values:
  524. description: values is an array of string values.
  525. If the operator is In or NotIn, the values array
  526. must be non-empty. If the operator is Exists
  527. or DoesNotExist, the values array must be empty.
  528. This array is replaced during a strategic merge
  529. patch.
  530. items:
  531. type: string
  532. type: array
  533. required:
  534. - key
  535. - operator
  536. type: object
  537. type: array
  538. matchLabels:
  539. additionalProperties:
  540. type: string
  541. description: matchLabels is a map of {key,value} pairs.
  542. A single {key,value} in the matchLabels map is equivalent
  543. to an element of matchExpressions, whose key field
  544. is "key", the operator is "In", and the values array
  545. contains only "value". The requirements are ANDed.
  546. type: object
  547. type: object
  548. required:
  549. - kind
  550. type: object
  551. tls:
  552. description: "TLS is the TLS configuration for the Listener.
  553. This field is required if the Protocol field is \"HTTPS\"
  554. or \"TLS\" and ignored otherwise. \n The association of SNIs
  555. to Certificate defined in GatewayTLSConfig is defined based
  556. on the Hostname field for this listener. \n The GatewayClass
  557. MUST use the longest matching SNI out of all available certificates
  558. for any TLS handshake. \n Support: Core"
  559. properties:
  560. certificateRef:
  561. description: "CertificateRef is a reference to a Kubernetes
  562. object that contains a TLS certificate and private key.
  563. This certificate is used to establish a TLS handshake
  564. for requests that match the hostname of the associated
  565. listener. The referenced object MUST reside in the same
  566. namespace as Gateway. \n This field is required when mode
  567. is set to \"Terminate\" (default) and optional otherwise.
  568. \n CertificateRef can reference a standard Kubernetes
  569. resource, i.e. Secret, or an implementation-specific custom
  570. resource. \n Support: Core (Kubernetes Secrets) \n Support:
  571. Implementation-specific (Other resource types)"
  572. properties:
  573. group:
  574. description: Group is the group of the referent.
  575. maxLength: 253
  576. minLength: 1
  577. type: string
  578. kind:
  579. description: Kind is kind of the referent.
  580. maxLength: 253
  581. minLength: 1
  582. type: string
  583. name:
  584. description: Name is the name of the referent.
  585. maxLength: 253
  586. minLength: 1
  587. type: string
  588. required:
  589. - group
  590. - kind
  591. - name
  592. type: object
  593. mode:
  594. default: Terminate
  595. description: "Mode defines the TLS behavior for the TLS
  596. session initiated by the client. There are two possible
  597. modes: - Terminate: The TLS session between the downstream
  598. client and the Gateway is terminated at the Gateway.
  599. This mode requires certificateRef to be set. - Passthrough:
  600. The TLS session is NOT terminated by the Gateway. This
  601. \ implies that the Gateway can't decipher the TLS stream
  602. except for the ClientHello message of the TLS protocol.
  603. \ CertificateRef field is ignored in this mode. \n Support:
  604. Core"
  605. enum:
  606. - Terminate
  607. - Passthrough
  608. type: string
  609. options:
  610. additionalProperties:
  611. type: string
  612. description: "Options are a list of key/value pairs to give
  613. extended options to the provider. \n There variation among
  614. providers as to how ciphersuites are expressed. If there
  615. is a common subset for expressing ciphers then it will
  616. make sense to loft that as a core API construct. \n Support:
  617. Implementation-specific"
  618. type: object
  619. routeOverride:
  620. default:
  621. certificate: Deny
  622. description: "RouteOverride dictates if TLS settings can
  623. be configured via Routes or not. \n CertificateRef must
  624. be defined even if `routeOverride.certificate` is set
  625. to 'Allow' as it will be used as the default certificate
  626. for the listener. \n Support: Core"
  627. properties:
  628. certificate:
  629. default: Deny
  630. description: "Certificate dictates if TLS certificates
  631. can be configured via Routes. If set to 'Allow', a
  632. TLS certificate for a hostname defined in a Route
  633. takes precedence over the certificate defined in Gateway.
  634. \n Support: Core"
  635. enum:
  636. - Allow
  637. - Deny
  638. type: string
  639. type: object
  640. type: object
  641. required:
  642. - port
  643. - protocol
  644. - routes
  645. type: object
  646. maxItems: 64
  647. minItems: 1
  648. type: array
  649. required:
  650. - gatewayClassName
  651. - listeners
  652. type: object
  653. status:
  654. default:
  655. conditions:
  656. - lastTransitionTime: "1970-01-01T00:00:00Z"
  657. message: Waiting for controller
  658. reason: NotReconciled
  659. status: "False"
  660. type: Scheduled
  661. description: Status defines the current state of Gateway.
  662. properties:
  663. addresses:
  664. description: "Addresses lists the IP addresses that have actually
  665. been bound to the Gateway. These addresses may differ from the addresses
  666. in the Spec, e.g. if the Gateway automatically assigns an address
  667. from a reserved pool. \n These addresses should all be of type \"IPAddress\"."
  668. items:
  669. description: GatewayAddress describes an address that can be bound
  670. to a Gateway.
  671. properties:
  672. type:
  673. default: IPAddress
  674. description: "Type of the address. \n Support: Extended"
  675. enum:
  676. - IPAddress
  677. - NamedAddress
  678. type: string
  679. value:
  680. description: "Value of the address. The validity of the values
  681. will depend on the type and support by the controller. \n
  682. Examples: `1.2.3.4`, `128::1`, `my-ip-address`."
  683. maxLength: 253
  684. minLength: 1
  685. type: string
  686. required:
  687. - value
  688. type: object
  689. maxItems: 16
  690. type: array
  691. conditions:
  692. default:
  693. - lastTransitionTime: "1970-01-01T00:00:00Z"
  694. message: Waiting for controller
  695. reason: NotReconciled
  696. status: "False"
  697. type: Scheduled
  698. description: "Conditions describe the current conditions of the Gateway.
  699. \n Implementations should prefer to express Gateway conditions using
  700. the `GatewayConditionType` and `GatewayConditionReason` constants
  701. so that operators and tools can converge on a common vocabulary
  702. to describe Gateway state. \n Known condition types are: \n * \"Scheduled\"
  703. * \"Ready\""
  704. items:
  705. description: "Condition contains details for one aspect of the current
  706. state of this API Resource. --- This struct is intended for direct
  707. use as an array at the field path .status.conditions. For example,
  708. type FooStatus struct{ // Represents the observations of a
  709. foo's current state. // Known .status.conditions.type are:
  710. \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type
  711. \ // +patchStrategy=merge // +listType=map // +listMapKey=type
  712. \ Conditions []metav1.Condition `json:\"conditions,omitempty\"
  713. patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
  714. \n // other fields }"
  715. properties:
  716. lastTransitionTime:
  717. description: lastTransitionTime is the last time the condition
  718. transitioned from one status to another. This should be when
  719. the underlying condition changed. If that is not known, then
  720. using the time when the API field changed is acceptable.
  721. format: date-time
  722. type: string
  723. message:
  724. description: message is a human readable message indicating
  725. details about the transition. This may be an empty string.
  726. maxLength: 32768
  727. type: string
  728. observedGeneration:
  729. description: observedGeneration represents the .metadata.generation
  730. that the condition was set based upon. For instance, if .metadata.generation
  731. is currently 12, but the .status.conditions[x].observedGeneration
  732. is 9, the condition is out of date with respect to the current
  733. state of the instance.
  734. format: int64
  735. minimum: 0
  736. type: integer
  737. reason:
  738. description: reason contains a programmatic identifier indicating
  739. the reason for the condition's last transition. Producers
  740. of specific condition types may define expected values and
  741. meanings for this field, and whether the values are considered
  742. a guaranteed API. The value should be a CamelCase string.
  743. This field may not be empty.
  744. maxLength: 1024
  745. minLength: 1
  746. pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
  747. type: string
  748. status:
  749. description: status of the condition, one of True, False, Unknown.
  750. enum:
  751. - "True"
  752. - "False"
  753. - Unknown
  754. type: string
  755. type:
  756. description: type of condition in CamelCase or in foo.example.com/CamelCase.
  757. --- Many .condition.type values are consistent across resources
  758. like Available, but because arbitrary conditions can be useful
  759. (see .node.status.conditions), the ability to deconflict is
  760. important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
  761. maxLength: 316
  762. 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])$
  763. type: string
  764. required:
  765. - lastTransitionTime
  766. - message
  767. - reason
  768. - status
  769. - type
  770. type: object
  771. maxItems: 8
  772. type: array
  773. x-kubernetes-list-map-keys:
  774. - type
  775. x-kubernetes-list-type: map
  776. listeners:
  777. description: Listeners provide status for each unique listener port
  778. defined in the Spec.
  779. items:
  780. description: ListenerStatus is the status associated with a Listener.
  781. properties:
  782. conditions:
  783. description: Conditions describe the current condition of this
  784. listener.
  785. items:
  786. description: "Condition contains details for one aspect of
  787. the current state of this API Resource. --- This struct
  788. is intended for direct use as an array at the field path
  789. .status.conditions. For example, type FooStatus struct{
  790. \ // Represents the observations of a foo's current state.
  791. \ // Known .status.conditions.type are: \"Available\",
  792. \"Progressing\", and \"Degraded\" // +patchMergeKey=type
  793. \ // +patchStrategy=merge // +listType=map //
  794. +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\"
  795. patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
  796. \n // other fields }"
  797. properties:
  798. lastTransitionTime:
  799. description: lastTransitionTime is the last time the condition
  800. transitioned from one status to another. This should
  801. be when the underlying condition changed. If that is
  802. not known, then using the time when the API field changed
  803. is acceptable.
  804. format: date-time
  805. type: string
  806. message:
  807. description: message is a human readable message indicating
  808. details about the transition. This may be an empty string.
  809. maxLength: 32768
  810. type: string
  811. observedGeneration:
  812. description: observedGeneration represents the .metadata.generation
  813. that the condition was set based upon. For instance,
  814. if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration
  815. is 9, the condition is out of date with respect to the
  816. current state of the instance.
  817. format: int64
  818. minimum: 0
  819. type: integer
  820. reason:
  821. description: reason contains a programmatic identifier
  822. indicating the reason for the condition's last transition.
  823. Producers of specific condition types may define expected
  824. values and meanings for this field, and whether the
  825. values are considered a guaranteed API. The value should
  826. be a CamelCase string. This field may not be empty.
  827. maxLength: 1024
  828. minLength: 1
  829. pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
  830. type: string
  831. status:
  832. description: status of the condition, one of True, False,
  833. Unknown.
  834. enum:
  835. - "True"
  836. - "False"
  837. - Unknown
  838. type: string
  839. type:
  840. description: type of condition in CamelCase or in foo.example.com/CamelCase.
  841. --- Many .condition.type values are consistent across
  842. resources like Available, but because arbitrary conditions
  843. can be useful (see .node.status.conditions), the ability
  844. to deconflict is important. The regex it matches is
  845. (dns1123SubdomainFmt/)?(qualifiedNameFmt)
  846. maxLength: 316
  847. 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])$
  848. type: string
  849. required:
  850. - lastTransitionTime
  851. - message
  852. - reason
  853. - status
  854. - type
  855. type: object
  856. maxItems: 8
  857. type: array
  858. x-kubernetes-list-map-keys:
  859. - type
  860. x-kubernetes-list-type: map
  861. hostname:
  862. description: Hostname is the Listener hostname value for which
  863. this message is reporting the status.
  864. maxLength: 253
  865. minLength: 1
  866. type: string
  867. port:
  868. description: Port is the unique Listener port value for which
  869. this message is reporting the status.
  870. format: int32
  871. maximum: 65535
  872. minimum: 1
  873. type: integer
  874. protocol:
  875. description: Protocol is the Listener protocol value for which
  876. this message is reporting the status.
  877. type: string
  878. required:
  879. - conditions
  880. - port
  881. - protocol
  882. type: object
  883. maxItems: 64
  884. type: array
  885. x-kubernetes-list-map-keys:
  886. - port
  887. x-kubernetes-list-type: map
  888. type: object
  889. type: object
  890. served: true
  891. storage: true
  892. subresources:
  893. status: {}
  894. status:
  895. acceptedNames:
  896. kind: ""
  897. plural: ""
  898. conditions: []
  899. storedVersions: []
  900. ---
  901. apiVersion: apiextensions.k8s.io/v1
  902. kind: CustomResourceDefinition
  903. metadata:
  904. annotations:
  905. controller-gen.kubebuilder.io/version: v0.5.0
  906. creationTimestamp: null
  907. name: httproutes.networking.x-k8s.io
  908. spec:
  909. group: networking.x-k8s.io
  910. names:
  911. categories:
  912. - gateway-api
  913. kind: HTTPRoute
  914. listKind: HTTPRouteList
  915. plural: httproutes
  916. singular: httproute
  917. scope: Namespaced
  918. versions:
  919. - additionalPrinterColumns:
  920. - jsonPath: .spec.hostnames
  921. name: Hostnames
  922. type: string
  923. - jsonPath: .metadata.creationTimestamp
  924. name: Age
  925. type: date
  926. name: v1alpha1
  927. schema:
  928. openAPIV3Schema:
  929. description: HTTPRoute is the Schema for the HTTPRoute resource.
  930. properties:
  931. apiVersion:
  932. description: 'APIVersion defines the versioned schema of this representation
  933. of an object. Servers should convert recognized schemas to the latest
  934. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  935. type: string
  936. kind:
  937. description: 'Kind is a string value representing the REST resource this
  938. object represents. Servers may infer this from the endpoint the client
  939. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  940. type: string
  941. metadata:
  942. type: object
  943. spec:
  944. description: Spec defines the desired state of HTTPRoute.
  945. properties:
  946. gateways:
  947. default:
  948. allow: SameNamespace
  949. description: Gateways defines which Gateways can use this Route.
  950. properties:
  951. allow:
  952. default: SameNamespace
  953. description: 'Allow indicates which Gateways will be allowed to
  954. use this route. Possible values are: * All: Gateways in any
  955. namespace can use this route. * FromList: Only Gateways specified
  956. in GatewayRefs may use this route. * SameNamespace: Only Gateways
  957. in the same namespace may use this route.'
  958. enum:
  959. - All
  960. - FromList
  961. - SameNamespace
  962. type: string
  963. gatewayRefs:
  964. description: GatewayRefs must be specified when Allow is set to
  965. "FromList". In that case, only Gateways referenced in this list
  966. will be allowed to use this route. This field is ignored for
  967. other values of "Allow".
  968. items:
  969. description: GatewayReference identifies a Gateway in a specified
  970. namespace.
  971. properties:
  972. name:
  973. description: Name is the name of the referent.
  974. maxLength: 253
  975. minLength: 1
  976. type: string
  977. namespace:
  978. description: Namespace is the namespace of the referent.
  979. maxLength: 253
  980. minLength: 1
  981. type: string
  982. required:
  983. - name
  984. - namespace
  985. type: object
  986. type: array
  987. type: object
  988. hostnames:
  989. description: "Hostnames defines a set of hostname that should match
  990. against the HTTP Host header to select a HTTPRoute to process the
  991. request. Hostname is the fully qualified domain name of a network
  992. host, as defined by RFC 3986. Note the following deviations from
  993. the \"host\" part of the URI as defined in the RFC: \n 1. IPs are
  994. not allowed. 2. The `:` delimiter is not respected because ports
  995. are not allowed. \n Incoming requests are matched against the hostnames
  996. before the HTTPRoute rules. If no hostname is specified, traffic
  997. is routed based on the HTTPRouteRules. \n Hostname can be \"precise\"
  998. which is a domain name without the terminating dot of a network
  999. host (e.g. \"foo.example.com\") or \"wildcard\", which is a domain
  1000. name prefixed with a single wildcard label (e.g. `*.example.com`).
  1001. The wildcard character `*` must appear by itself as the first DNS
  1002. label and matches only a single label. You cannot have a wildcard
  1003. label by itself (e.g. Host == `*`). Requests will be matched against
  1004. the Host field in the following order: \n 1. If Host is precise,
  1005. the request matches this rule if the HTTP Host header is equal
  1006. to Host. 2. If Host is a wildcard, then the request matches this
  1007. rule if the HTTP Host header is to equal to the suffix (removing
  1008. the first label) of the wildcard rule. \n Support: Core"
  1009. items:
  1010. description: Hostname is used to specify a hostname that should
  1011. be matched.
  1012. maxLength: 253
  1013. minLength: 1
  1014. type: string
  1015. maxItems: 16
  1016. type: array
  1017. rules:
  1018. default:
  1019. - matches:
  1020. - path:
  1021. type: Prefix
  1022. value: /
  1023. description: Rules are a list of HTTP matchers, filters and actions.
  1024. items:
  1025. description: HTTPRouteRule defines semantics for matching an HTTP
  1026. request based on conditions, optionally executing additional processing
  1027. steps, and forwarding the request to an API object.
  1028. properties:
  1029. filters:
  1030. description: "Filters define the filters that are applied to
  1031. requests that match this rule. \n The effects of ordering
  1032. of multiple behaviors are currently unspecified. This can
  1033. change in the future based on feedback during the alpha stage.
  1034. \n Conformance-levels at this level are defined based on the
  1035. type of filter: \n - ALL core filters MUST be supported by
  1036. all implementations. - Implementers are encouraged to support
  1037. extended filters. - Implementation-specific custom filters
  1038. have no API guarantees across implementations. \n Specifying
  1039. a core filter multiple times has unspecified or custom conformance.
  1040. \n Support: Core"
  1041. items:
  1042. description: 'HTTPRouteFilter defines additional processing
  1043. steps that must be completed during the request or response
  1044. lifecycle. HTTPRouteFilters are meant as an extension point
  1045. to express additional processing that may be done in Gateway
  1046. implementations. Some examples include request or response
  1047. modification, implementing authentication strategies, rate-limiting,
  1048. and traffic shaping. API guarantee/conformance is defined
  1049. based on the type of the filter. TODO(hbagdi): re-render
  1050. CRDs once controller-tools supports union tags: - https://github.com/kubernetes-sigs/controller-tools/pull/298
  1051. - https://github.com/kubernetes-sigs/controller-tools/issues/461'
  1052. properties:
  1053. extensionRef:
  1054. description: "ExtensionRef is an optional, implementation-specific
  1055. extension to the \"filter\" behavior. For example,
  1056. resource \"myroutefilter\" in group \"networking.acme.io\").
  1057. ExtensionRef MUST NOT be used for core and extended
  1058. filters. \n Support: Implementation-specific"
  1059. properties:
  1060. group:
  1061. description: Group is the group of the referent.
  1062. maxLength: 253
  1063. minLength: 1
  1064. type: string
  1065. kind:
  1066. description: Kind is kind of the referent.
  1067. maxLength: 253
  1068. minLength: 1
  1069. type: string
  1070. name:
  1071. description: Name is the name of the referent.
  1072. maxLength: 253
  1073. minLength: 1
  1074. type: string
  1075. required:
  1076. - group
  1077. - kind
  1078. - name
  1079. type: object
  1080. requestHeaderModifier:
  1081. description: "RequestHeaderModifier defines a schema for
  1082. a filter that modifies request headers. \n Support:
  1083. Core"
  1084. properties:
  1085. add:
  1086. additionalProperties:
  1087. type: string
  1088. description: "Add adds the given header (name, value)
  1089. to the request before the action. It appends to
  1090. any existing values associated with the header name.
  1091. \n Input: GET /foo HTTP/1.1 my-header: foo \n
  1092. Config: add: {\"my-header\": \"bar\"} \n Output:
  1093. \ GET /foo HTTP/1.1 my-header: foo my-header:
  1094. bar \n Support: Extended"
  1095. type: object
  1096. remove:
  1097. description: "Remove the given header(s) from the
  1098. HTTP request before the action. The value of RemoveHeader
  1099. is a list of HTTP header names. Note that the header
  1100. names are case-insensitive [RFC-2616 4.2]. \n Input:
  1101. \ GET /foo HTTP/1.1 my-header1: foo my-header2:
  1102. bar my-header3: baz \n Config: remove: [\"my-header1\",
  1103. \"my-header3\"] \n Output: GET /foo HTTP/1.1 my-header2:
  1104. bar \n Support: Extended"
  1105. items:
  1106. type: string
  1107. maxItems: 16
  1108. type: array
  1109. set:
  1110. additionalProperties:
  1111. type: string
  1112. description: "Set overwrites the request with the
  1113. given header (name, value) before the action. \n
  1114. Input: GET /foo HTTP/1.1 my-header: foo \n Config:
  1115. \ set: {\"my-header\": \"bar\"} \n Output: GET
  1116. /foo HTTP/1.1 my-header: bar \n Support: Extended"
  1117. type: object
  1118. type: object
  1119. requestMirror:
  1120. description: "RequestMirror defines a schema for a filter
  1121. that mirrors requests. \n Support: Extended"
  1122. properties:
  1123. backendRef:
  1124. description: "BackendRef is a local object reference
  1125. to mirror matched requests to. If both BackendRef
  1126. and ServiceName are specified, ServiceName will
  1127. be given precedence. \n If the referent cannot be
  1128. found, the rule is not included in the route. The
  1129. controller should raise the \"ResolvedRefs\" condition
  1130. on the Gateway with the \"DegradedRoutes\" reason.
  1131. The gateway status for this route should be updated
  1132. with a condition that describes the error more specifically.
  1133. \n Support: Custom"
  1134. properties:
  1135. group:
  1136. description: Group is the group of the referent.
  1137. maxLength: 253
  1138. minLength: 1
  1139. type: string
  1140. kind:
  1141. description: Kind is kind of the referent.
  1142. maxLength: 253
  1143. minLength: 1
  1144. type: string
  1145. name:
  1146. description: Name is the name of the referent.
  1147. maxLength: 253
  1148. minLength: 1
  1149. type: string
  1150. required:
  1151. - group
  1152. - kind
  1153. - name
  1154. type: object
  1155. port:
  1156. description: "Port specifies the destination port
  1157. number to use for the backend referenced by the
  1158. ServiceName or BackendRef field. \n If unspecified,
  1159. the destination port in the request is used when
  1160. forwarding to a backendRef or serviceName."
  1161. format: int32
  1162. maximum: 65535
  1163. minimum: 1
  1164. type: integer
  1165. serviceName:
  1166. description: "ServiceName refers to the name of the
  1167. Service to mirror matched requests to. When specified,
  1168. this takes the place of BackendRef. If both BackendRef
  1169. and ServiceName are specified, ServiceName will
  1170. be given precedence. \n If the referent cannot be
  1171. found, the rule is not included in the route. The
  1172. controller should raise the \"ResolvedRefs\" condition
  1173. on the Gateway with the \"DegradedRoutes\" reason.
  1174. The gateway status for this route should be updated
  1175. with a condition that describes the error more specifically.
  1176. \n Support: Core"
  1177. maxLength: 253
  1178. type: string
  1179. type: object
  1180. type:
  1181. description: "Type identifies the type of filter to apply.
  1182. As with other API fields, types are classified into
  1183. three conformance levels: \n - Core: Filter types and
  1184. their corresponding configuration defined by \"Support:
  1185. Core\" in this package, e.g. \"RequestHeaderModifier\".
  1186. All implementations must support core filters. \n
  1187. - Extended: Filter types and their corresponding configuration
  1188. defined by \"Support: Extended\" in this package,
  1189. e.g. \"RequestMirror\". Implementers are encouraged
  1190. to support extended filters. \n - Custom: Filters that
  1191. are defined and supported by specific vendors. In
  1192. the future, filters showing convergence in behavior
  1193. across multiple implementations will be considered
  1194. for inclusion in extended or core conformance levels.
  1195. Filter-specific configuration for such filters is
  1196. specified using the ExtensionRef field. `Type` should
  1197. be set to \"ExtensionRef\" for custom filters. \n
  1198. Implementers are encouraged to define custom implementation
  1199. types to extend the core API with implementation-specific
  1200. behavior."
  1201. enum:
  1202. - RequestHeaderModifier
  1203. - RequestMirror
  1204. - ExtensionRef
  1205. type: string
  1206. required:
  1207. - type
  1208. type: object
  1209. maxItems: 16
  1210. type: array
  1211. forwardTo:
  1212. description: ForwardTo defines the backend(s) where matching
  1213. requests should be sent. If unspecified, the rule performs
  1214. no forwarding. If unspecified and no filters are specified
  1215. that would result in a response being sent, a 503 error code
  1216. is returned.
  1217. items:
  1218. description: HTTPRouteForwardTo defines how a HTTPRoute should
  1219. forward a request.
  1220. properties:
  1221. backendRef:
  1222. description: "BackendRef is a reference to a backend to
  1223. forward matched requests to. If both BackendRef and
  1224. ServiceName are specified, ServiceName will be given
  1225. precedence. \n If the referent cannot be found, the
  1226. route must be dropped from the Gateway. The controller
  1227. should raise the \"ResolvedRefs\" condition on the Gateway
  1228. with the \"DegradedRoutes\" reason. The gateway status
  1229. for this route should be updated with a condition that
  1230. describes the error more specifically. \n Support: Custom"
  1231. properties:
  1232. group:
  1233. description: Group is the group of the referent.
  1234. maxLength: 253
  1235. minLength: 1
  1236. type: string
  1237. kind:
  1238. description: Kind is kind of the referent.
  1239. maxLength: 253
  1240. minLength: 1
  1241. type: string
  1242. name:
  1243. description: Name is the name of the referent.
  1244. maxLength: 253
  1245. minLength: 1
  1246. type: string
  1247. required:
  1248. - group
  1249. - kind
  1250. - name
  1251. type: object
  1252. filters:
  1253. description: "Filters defined at this-level should be
  1254. executed if and only if the request is being forwarded
  1255. to the backend defined here. \n Support: Custom (For
  1256. broader support of filters, use the Filters field in
  1257. HTTPRouteRule.)"
  1258. items:
  1259. description: 'HTTPRouteFilter defines additional processing
  1260. steps that must be completed during the request or
  1261. response lifecycle. HTTPRouteFilters are meant as
  1262. an extension point to express additional processing
  1263. that may be done in Gateway implementations. Some
  1264. examples include request or response modification,
  1265. implementing authentication strategies, rate-limiting,
  1266. and traffic shaping. API guarantee/conformance is
  1267. defined based on the type of the filter. TODO(hbagdi):
  1268. re-render CRDs once controller-tools supports union
  1269. tags: - https://github.com/kubernetes-sigs/controller-tools/pull/298
  1270. - https://github.com/kubernetes-sigs/controller-tools/issues/461'
  1271. properties:
  1272. extensionRef:
  1273. description: "ExtensionRef is an optional, implementation-specific
  1274. extension to the \"filter\" behavior. For example,
  1275. resource \"myroutefilter\" in group \"networking.acme.io\").
  1276. ExtensionRef MUST NOT be used for core and extended
  1277. filters. \n Support: Implementation-specific"
  1278. properties:
  1279. group:
  1280. description: Group is the group of the referent.
  1281. maxLength: 253
  1282. minLength: 1
  1283. type: string
  1284. kind:
  1285. description: Kind is kind of the referent.
  1286. maxLength: 253
  1287. minLength: 1
  1288. type: string
  1289. name:
  1290. description: Name is the name of the referent.
  1291. maxLength: 253
  1292. minLength: 1
  1293. type: string
  1294. required:
  1295. - group
  1296. - kind
  1297. - name
  1298. type: object
  1299. requestHeaderModifier:
  1300. description: "RequestHeaderModifier defines a schema
  1301. for a filter that modifies request headers. \n
  1302. Support: Core"
  1303. properties:
  1304. add:
  1305. additionalProperties:
  1306. type: string
  1307. description: "Add adds the given header (name,
  1308. value) to the request before the action. It
  1309. appends to any existing values associated
  1310. with the header name. \n Input: GET /foo
  1311. HTTP/1.1 my-header: foo \n Config: add:
  1312. {\"my-header\": \"bar\"} \n Output: GET
  1313. /foo HTTP/1.1 my-header: foo my-header:
  1314. bar \n Support: Extended"
  1315. type: object
  1316. remove:
  1317. description: "Remove the given header(s) from
  1318. the HTTP request before the action. The value
  1319. of RemoveHeader is a list of HTTP header names.
  1320. Note that the header names are case-insensitive
  1321. [RFC-2616 4.2]. \n Input: GET /foo HTTP/1.1
  1322. \ my-header1: foo my-header2: bar my-header3:
  1323. baz \n Config: remove: [\"my-header1\",
  1324. \"my-header3\"] \n Output: GET /foo HTTP/1.1
  1325. \ my-header2: bar \n Support: Extended"
  1326. items:
  1327. type: string
  1328. maxItems: 16
  1329. type: array
  1330. set:
  1331. additionalProperties:
  1332. type: string
  1333. description: "Set overwrites the request with
  1334. the given header (name, value) before the
  1335. action. \n Input: GET /foo HTTP/1.1 my-header:
  1336. foo \n Config: set: {\"my-header\": \"bar\"}
  1337. \n Output: GET /foo HTTP/1.1 my-header:
  1338. bar \n Support: Extended"
  1339. type: object
  1340. type: object
  1341. requestMirror:
  1342. description: "RequestMirror defines a schema for
  1343. a filter that mirrors requests. \n Support: Extended"
  1344. properties:
  1345. backendRef:
  1346. description: "BackendRef is a local object reference
  1347. to mirror matched requests to. If both BackendRef
  1348. and ServiceName are specified, ServiceName
  1349. will be given precedence. \n If the referent
  1350. cannot be found, the rule is not included
  1351. in the route. The controller should raise
  1352. the \"ResolvedRefs\" condition on the Gateway
  1353. with the \"DegradedRoutes\" reason. The gateway
  1354. status for this route should be updated with
  1355. a condition that describes the error more
  1356. specifically. \n Support: Custom"
  1357. properties:
  1358. group:
  1359. description: Group is the group of the referent.
  1360. maxLength: 253
  1361. minLength: 1
  1362. type: string
  1363. kind:
  1364. description: Kind is kind of the referent.
  1365. maxLength: 253
  1366. minLength: 1
  1367. type: string
  1368. name:
  1369. description: Name is the name of the referent.
  1370. maxLength: 253
  1371. minLength: 1
  1372. type: string
  1373. required:
  1374. - group
  1375. - kind
  1376. - name
  1377. type: object
  1378. port:
  1379. description: "Port specifies the destination
  1380. port number to use for the backend referenced
  1381. by the ServiceName or BackendRef field. \n
  1382. If unspecified, the destination port in the
  1383. request is used when forwarding to a backendRef
  1384. or serviceName."
  1385. format: int32
  1386. maximum: 65535
  1387. minimum: 1
  1388. type: integer
  1389. serviceName:
  1390. description: "ServiceName refers to the name
  1391. of the Service to mirror matched requests
  1392. to. When specified, this takes the place of
  1393. BackendRef. If both BackendRef and ServiceName
  1394. are specified, ServiceName will be given precedence.
  1395. \n If the referent cannot be found, the rule
  1396. is not included in the route. The controller
  1397. should raise the \"ResolvedRefs\" condition
  1398. on the Gateway with the \"DegradedRoutes\"
  1399. reason. The gateway status for this route
  1400. should be updated with a condition that describes
  1401. the error more specifically. \n Support: Core"
  1402. maxLength: 253
  1403. type: string
  1404. type: object
  1405. type:
  1406. description: "Type identifies the type of filter
  1407. to apply. As with other API fields, types are
  1408. classified into three conformance levels: \n -
  1409. Core: Filter types and their corresponding configuration
  1410. defined by \"Support: Core\" in this package,
  1411. e.g. \"RequestHeaderModifier\". All implementations
  1412. must support core filters. \n - Extended: Filter
  1413. types and their corresponding configuration defined
  1414. by \"Support: Extended\" in this package, e.g.
  1415. \"RequestMirror\". Implementers are encouraged
  1416. to support extended filters. \n - Custom: Filters
  1417. that are defined and supported by specific vendors.
  1418. \ In the future, filters showing convergence
  1419. in behavior across multiple implementations
  1420. will be considered for inclusion in extended or
  1421. core conformance levels. Filter-specific configuration
  1422. for such filters is specified using the ExtensionRef
  1423. field. `Type` should be set to \"ExtensionRef\"
  1424. for custom filters. \n Implementers are encouraged
  1425. to define custom implementation types to extend
  1426. the core API with implementation-specific behavior."
  1427. enum:
  1428. - RequestHeaderModifier
  1429. - RequestMirror
  1430. - ExtensionRef
  1431. type: string
  1432. required:
  1433. - type
  1434. type: object
  1435. maxItems: 16
  1436. type: array
  1437. port:
  1438. description: "Port specifies the destination port number
  1439. to use for the backend referenced by the ServiceName
  1440. or BackendRef field. If unspecified, the destination
  1441. port in the request is used when forwarding to a backendRef
  1442. or serviceName. \n Support: Core"
  1443. format: int32
  1444. maximum: 65535
  1445. minimum: 1
  1446. type: integer
  1447. serviceName:
  1448. description: "ServiceName refers to the name of the Service
  1449. to forward matched requests to. When specified, this
  1450. takes the place of BackendRef. If both BackendRef and
  1451. ServiceName are specified, ServiceName will be given
  1452. precedence. \n If the referent cannot be found, the
  1453. route must be dropped from the Gateway. The controller
  1454. should raise the \"ResolvedRefs\" condition on the Gateway
  1455. with the \"DegradedRoutes\" reason. The gateway status
  1456. for this route should be updated with a condition that
  1457. describes the error more specifically. \n The protocol
  1458. to use should be specified with the AppProtocol field
  1459. on Service resources. This field was introduced in Kubernetes
  1460. 1.18. If using an earlier version of Kubernetes, a `networking.x-k8s.io/app-protocol`
  1461. annotation on the BackendPolicy resource may be used
  1462. to define the protocol. If the AppProtocol field is
  1463. available, this annotation should not be used. The AppProtocol
  1464. field, when populated, takes precedence over the annotation
  1465. in the BackendPolicy resource. For custom backends,
  1466. it is encouraged to add a semantically-equivalent field
  1467. in the Custom Resource Definition. \n Support: Core"
  1468. maxLength: 253
  1469. type: string
  1470. weight:
  1471. default: 1
  1472. description: "Weight specifies the proportion of HTTP
  1473. requests forwarded to the backend referenced by the
  1474. ServiceName or BackendRef field. This is computed as
  1475. weight/(sum of all weights in this ForwardTo list).
  1476. For non-zero values, there may be some epsilon from
  1477. the exact proportion defined here depending on the precision
  1478. an implementation supports. Weight is not a percentage
  1479. and the sum of weights does not need to equal 100. \n
  1480. If only one backend is specified and it has a weight
  1481. greater than 0, 100% of the traffic is forwarded to
  1482. that backend. If weight is set to 0, no traffic should
  1483. be forwarded for this entry. If unspecified, weight
  1484. defaults to 1. \n Support: Core"
  1485. format: int32
  1486. maximum: 1000000
  1487. minimum: 0
  1488. type: integer
  1489. type: object
  1490. maxItems: 16
  1491. type: array
  1492. matches:
  1493. default:
  1494. - path:
  1495. type: Prefix
  1496. value: /
  1497. description: "Matches define conditions used for matching the
  1498. rule against incoming HTTP requests. Each match is independent,
  1499. i.e. this rule will be matched if **any** one of the matches
  1500. is satisfied. \n For example, take the following matches configuration:
  1501. \n ``` matches: - path: value: \"/foo\" headers: values:
  1502. \ version: \"2\" - path: value: \"/v2/foo\" ``` \n
  1503. For a request to match against this rule, a request should
  1504. satisfy EITHER of the two conditions: \n - path prefixed with
  1505. `/foo` AND contains the header `version: \"2\"` - path prefix
  1506. of `/v2/foo` \n See the documentation for HTTPRouteMatch on
  1507. how to specify multiple match conditions that should be ANDed
  1508. together. \n If no matches are specified, the default is a
  1509. prefix path match on \"/\", which has the effect of matching
  1510. every HTTP request. \n Each client request MUST map to a maximum
  1511. of one route rule. If a request matches multiple rules, matching
  1512. precedence MUST be determined in order of the following criteria,
  1513. continuing on ties: \n * The longest matching hostname. *
  1514. The longest matching path. * The largest number of header
  1515. matches. \n If ties still exist across multiple Routes, matching
  1516. precedence MUST be determined in order of the following criteria,
  1517. continuing on ties: \n * The oldest Route based on creation
  1518. timestamp. For example, a Route with a creation timestamp
  1519. of \"2020-09-08 01:02:03\" is given precedence over a Route
  1520. with a creation timestamp of \"2020-09-08 01:02:04\". * The
  1521. Route appearing first in alphabetical order by \"<namespace>/<name>\".
  1522. For example, foo/bar is given precedence over foo/baz. \n
  1523. If ties still exist within the Route that has been given precedence,
  1524. matching precedence MUST be granted to the first matching
  1525. rule meeting the above criteria."
  1526. items:
  1527. description: "HTTPRouteMatch defines the predicate used to
  1528. match requests to a given action. Multiple match types are
  1529. ANDed together, i.e. the match will evaluate to true only
  1530. if all conditions are satisfied. \n For example, the match
  1531. below will match a HTTP request only if its path starts
  1532. with `/foo` AND it contains the `version: \"1\"` header:
  1533. \n ``` match: path: value: \"/foo\" headers: values:
  1534. \ version: \"1\" ```"
  1535. properties:
  1536. extensionRef:
  1537. description: "ExtensionRef is an optional, implementation-specific
  1538. extension to the \"match\" behavior. For example, resource
  1539. \"myroutematcher\" in group \"networking.acme.io\".
  1540. If the referent cannot be found, the rule is not included
  1541. in the route. The controller should raise the \"ResolvedRefs\"
  1542. condition on the Gateway with the \"DegradedRoutes\"
  1543. reason. The gateway status for this route should be
  1544. updated with a condition that describes the error more
  1545. specifically. \n Support: Custom"
  1546. properties:
  1547. group:
  1548. description: Group is the group of the referent.
  1549. maxLength: 253
  1550. minLength: 1
  1551. type: string
  1552. kind:
  1553. description: Kind is kind of the referent.
  1554. maxLength: 253
  1555. minLength: 1
  1556. type: string
  1557. name:
  1558. description: Name is the name of the referent.
  1559. maxLength: 253
  1560. minLength: 1
  1561. type: string
  1562. required:
  1563. - group
  1564. - kind
  1565. - name
  1566. type: object
  1567. headers:
  1568. description: Headers specifies a HTTP request header matcher.
  1569. properties:
  1570. type:
  1571. default: Exact
  1572. description: "Type specifies how to match against
  1573. the value of the header. \n Support: Core (Exact)
  1574. \n Support: Custom (RegularExpression, ImplementationSpecific)
  1575. \n Since RegularExpression PathType has custom conformance,
  1576. implementations can support POSIX, PCRE or any other
  1577. dialects of regular expressions. Please read the
  1578. implementation's documentation to determine the
  1579. supported dialect. \n HTTP Header name matching
  1580. MUST be case-insensitive (RFC 2616 - section 4.2)."
  1581. enum:
  1582. - Exact
  1583. - RegularExpression
  1584. - ImplementationSpecific
  1585. type: string
  1586. values:
  1587. additionalProperties:
  1588. type: string
  1589. description: "Values is a map of HTTP Headers to be
  1590. matched. It MUST contain at least one entry. \n
  1591. The HTTP header field name to match is the map key,
  1592. and the value of the HTTP header is the map value.
  1593. HTTP header field name matching MUST be case-insensitive.
  1594. \n Multiple match values are ANDed together, meaning,
  1595. a request must match all the specified headers to
  1596. select the route."
  1597. type: object
  1598. required:
  1599. - values
  1600. type: object
  1601. path:
  1602. default:
  1603. type: Prefix
  1604. value: /
  1605. description: Path specifies a HTTP request path matcher.
  1606. If this field is not specified, a default prefix match
  1607. on the "/" path is provided.
  1608. properties:
  1609. type:
  1610. default: Prefix
  1611. description: "Type specifies how to match against
  1612. the path Value. \n Support: Core (Exact, Prefix)
  1613. \n Support: Custom (RegularExpression, ImplementationSpecific)
  1614. \n Since RegularExpression PathType has custom conformance,
  1615. implementations can support POSIX, PCRE or any other
  1616. dialects of regular expressions. Please read the
  1617. implementation's documentation to determine the
  1618. supported dialect."
  1619. enum:
  1620. - Exact
  1621. - Prefix
  1622. - RegularExpression
  1623. - ImplementationSpecific
  1624. type: string
  1625. value:
  1626. default: /
  1627. description: Value of the HTTP path to match against.
  1628. type: string
  1629. type: object
  1630. queryParams:
  1631. description: QueryParams specifies a HTTP query parameter
  1632. matcher.
  1633. properties:
  1634. type:
  1635. default: Exact
  1636. description: "Type specifies how to match against
  1637. the value of the query parameter. \n Support: Extended
  1638. (Exact) \n Support: Custom (RegularExpression, ImplementationSpecific)
  1639. \n Since RegularExpression QueryParamMatchType has
  1640. custom conformance, implementations can support
  1641. POSIX, PCRE or any other dialects of regular expressions.
  1642. Please read the implementation's documentation to
  1643. determine the supported dialect."
  1644. enum:
  1645. - Exact
  1646. - RegularExpression
  1647. - ImplementationSpecific
  1648. type: string
  1649. values:
  1650. additionalProperties:
  1651. type: string
  1652. description: "Values is a map of HTTP query parameters
  1653. to be matched. It MUST contain at least one entry.
  1654. \n The query parameter name to match is the map
  1655. key, and the value of the query parameter is the
  1656. map value. \n Multiple match values are ANDed together,
  1657. meaning, a request must match all the specified
  1658. query parameters to select the route. \n HTTP query
  1659. parameter matching MUST be case-sensitive for both
  1660. keys and values. (See https://tools.ietf.org/html/rfc7230#section-2.7.3).
  1661. \n Note that the query parameter key MUST always
  1662. be an exact match by string comparison."
  1663. type: object
  1664. required:
  1665. - values
  1666. type: object
  1667. type: object
  1668. maxItems: 8
  1669. type: array
  1670. type: object
  1671. maxItems: 16
  1672. type: array
  1673. tls:
  1674. description: "TLS defines the TLS certificate to use for Hostnames
  1675. defined in this Route. This configuration only takes effect if the
  1676. AllowRouteOverride field is set to true in the associated Gateway
  1677. resource. \n Collisions can happen if multiple HTTPRoutes define
  1678. a TLS certificate for the same hostname. In such a case, conflict
  1679. resolution guiding principles apply, specifically, if hostnames
  1680. are same and two different certificates are specified then the certificate
  1681. in the oldest resource wins. \n Please note that HTTP Route-selection
  1682. takes place after the TLS Handshake (ClientHello). Due to this,
  1683. TLS certificate defined here will take precedence even if the request
  1684. has the potential to match multiple routes (in case multiple HTTPRoutes
  1685. share the same hostname). \n Support: Core"
  1686. properties:
  1687. certificateRef:
  1688. description: "CertificateRef is a reference to a Kubernetes object
  1689. that contains a TLS certificate and private key. This certificate
  1690. is used to establish a TLS handshake for requests that match
  1691. the hostname of the associated HTTPRoute. The referenced object
  1692. MUST reside in the same namespace as HTTPRoute. \n This field
  1693. is required when the TLS configuration mode of the associated
  1694. Gateway listener is set to \"Passthrough\". \n CertificateRef
  1695. can reference a standard Kubernetes resource, i.e. Secret, or
  1696. an implementation-specific custom resource. \n Support: Core
  1697. (Kubernetes Secrets) \n Support: Implementation-specific (Other
  1698. resource types)"
  1699. properties:
  1700. group:
  1701. description: Group is the group of the referent.
  1702. maxLength: 253
  1703. minLength: 1
  1704. type: string
  1705. kind:
  1706. description: Kind is kind of the referent.
  1707. maxLength: 253
  1708. minLength: 1
  1709. type: string
  1710. name:
  1711. description: Name is the name of the referent.
  1712. maxLength: 253
  1713. minLength: 1
  1714. type: string
  1715. required:
  1716. - group
  1717. - kind
  1718. - name
  1719. type: object
  1720. required:
  1721. - certificateRef
  1722. type: object
  1723. type: object
  1724. status:
  1725. description: Status defines the current state of HTTPRoute.
  1726. properties:
  1727. gateways:
  1728. description: "Gateways is a list of Gateways that are associated with
  1729. the route, and the status of the route with respect to each Gateway.
  1730. When a Gateway selects this route, the controller that manages the
  1731. Gateway must add an entry to this list when the controller first
  1732. sees the route and should update the entry as appropriate when the
  1733. route is modified. \n A maximum of 100 Gateways will be represented
  1734. in this list. If this list is full, there may be additional Gateways
  1735. using this Route that are not included in the list. An empty list
  1736. means the route has not been admitted by any Gateway."
  1737. items:
  1738. description: RouteGatewayStatus describes the status of a route
  1739. with respect to an associated Gateway.
  1740. properties:
  1741. conditions:
  1742. description: Conditions describes the status of the route with
  1743. respect to the Gateway. The "Admitted" condition must always
  1744. be specified by controllers to indicate whether the route
  1745. has been admitted or rejected by the Gateway, and why. Note
  1746. that the route's availability is also subject to the Gateway's
  1747. own status conditions and listener status.
  1748. items:
  1749. description: "Condition contains details for one aspect of
  1750. the current state of this API Resource. --- This struct
  1751. is intended for direct use as an array at the field path
  1752. .status.conditions. For example, type FooStatus struct{
  1753. \ // Represents the observations of a foo's current state.
  1754. \ // Known .status.conditions.type are: \"Available\",
  1755. \"Progressing\", and \"Degraded\" // +patchMergeKey=type
  1756. \ // +patchStrategy=merge // +listType=map //
  1757. +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\"
  1758. patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
  1759. \n // other fields }"
  1760. properties:
  1761. lastTransitionTime:
  1762. description: lastTransitionTime is the last time the condition
  1763. transitioned from one status to another. This should
  1764. be when the underlying condition changed. If that is
  1765. not known, then using the time when the API field changed
  1766. is acceptable.
  1767. format: date-time
  1768. type: string
  1769. message:
  1770. description: message is a human readable message indicating
  1771. details about the transition. This may be an empty string.
  1772. maxLength: 32768
  1773. type: string
  1774. observedGeneration:
  1775. description: observedGeneration represents the .metadata.generation
  1776. that the condition was set based upon. For instance,
  1777. if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration
  1778. is 9, the condition is out of date with respect to the
  1779. current state of the instance.
  1780. format: int64
  1781. minimum: 0
  1782. type: integer
  1783. reason:
  1784. description: reason contains a programmatic identifier
  1785. indicating the reason for the condition's last transition.
  1786. Producers of specific condition types may define expected
  1787. values and meanings for this field, and whether the
  1788. values are considered a guaranteed API. The value should
  1789. be a CamelCase string. This field may not be empty.
  1790. maxLength: 1024
  1791. minLength: 1
  1792. pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
  1793. type: string
  1794. status:
  1795. description: status of the condition, one of True, False,
  1796. Unknown.
  1797. enum:
  1798. - "True"
  1799. - "False"
  1800. - Unknown
  1801. type: string
  1802. type:
  1803. description: type of condition in CamelCase or in foo.example.com/CamelCase.
  1804. --- Many .condition.type values are consistent across
  1805. resources like Available, but because arbitrary conditions
  1806. can be useful (see .node.status.conditions), the ability
  1807. to deconflict is important. The regex it matches is
  1808. (dns1123SubdomainFmt/)?(qualifiedNameFmt)
  1809. maxLength: 316
  1810. 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])$
  1811. type: string
  1812. required:
  1813. - lastTransitionTime
  1814. - message
  1815. - reason
  1816. - status
  1817. - type
  1818. type: object
  1819. maxItems: 8
  1820. type: array
  1821. x-kubernetes-list-map-keys:
  1822. - type
  1823. x-kubernetes-list-type: map
  1824. gatewayRef:
  1825. description: GatewayRef is a reference to a Gateway object that
  1826. is associated with the route.
  1827. properties:
  1828. controller:
  1829. description: "Controller is a domain/path string that indicates
  1830. the controller implementing the Gateway. This corresponds
  1831. with the controller field on GatewayClass. \n Example:
  1832. \"acme.io/gateway-controller\". \n The format of this
  1833. field is DOMAIN \"/\" PATH, where DOMAIN and PATH are
  1834. valid Kubernetes names (https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names)."
  1835. maxLength: 253
  1836. type: string
  1837. name:
  1838. description: Name is the name of the referent.
  1839. maxLength: 253
  1840. minLength: 1
  1841. type: string
  1842. namespace:
  1843. description: Namespace is the namespace of the referent.
  1844. maxLength: 253
  1845. minLength: 1
  1846. type: string
  1847. required:
  1848. - name
  1849. - namespace
  1850. type: object
  1851. required:
  1852. - gatewayRef
  1853. type: object
  1854. maxItems: 100
  1855. type: array
  1856. required:
  1857. - gateways
  1858. type: object
  1859. type: object
  1860. served: true
  1861. storage: true
  1862. subresources:
  1863. status: {}
  1864. status:
  1865. acceptedNames:
  1866. kind: ""
  1867. plural: ""
  1868. conditions: []
  1869. storedVersions: []
  1870. ---
  1871. apiVersion: apiextensions.k8s.io/v1
  1872. kind: CustomResourceDefinition
  1873. metadata:
  1874. annotations:
  1875. controller-gen.kubebuilder.io/version: v0.5.0
  1876. creationTimestamp: null
  1877. name: tcproutes.networking.x-k8s.io
  1878. spec:
  1879. group: networking.x-k8s.io
  1880. names:
  1881. categories:
  1882. - gateway-api
  1883. kind: TCPRoute
  1884. listKind: TCPRouteList
  1885. plural: tcproutes
  1886. singular: tcproute
  1887. scope: Namespaced
  1888. versions:
  1889. - additionalPrinterColumns:
  1890. - jsonPath: .metadata.creationTimestamp
  1891. name: Age
  1892. type: date
  1893. name: v1alpha1
  1894. schema:
  1895. openAPIV3Schema:
  1896. description: TCPRoute is the Schema for the TCPRoute resource.
  1897. properties:
  1898. apiVersion:
  1899. description: 'APIVersion defines the versioned schema of this representation
  1900. of an object. Servers should convert recognized schemas to the latest
  1901. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  1902. type: string
  1903. kind:
  1904. description: 'Kind is a string value representing the REST resource this
  1905. object represents. Servers may infer this from the endpoint the client
  1906. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  1907. type: string
  1908. metadata:
  1909. type: object
  1910. spec:
  1911. description: Spec defines the desired state of TCPRoute.
  1912. properties:
  1913. gateways:
  1914. default:
  1915. allow: SameNamespace
  1916. description: Gateways defines which Gateways can use this Route.
  1917. properties:
  1918. allow:
  1919. default: SameNamespace
  1920. description: 'Allow indicates which Gateways will be allowed to
  1921. use this route. Possible values are: * All: Gateways in any
  1922. namespace can use this route. * FromList: Only Gateways specified
  1923. in GatewayRefs may use this route. * SameNamespace: Only Gateways
  1924. in the same namespace may use this route.'
  1925. enum:
  1926. - All
  1927. - FromList
  1928. - SameNamespace
  1929. type: string
  1930. gatewayRefs:
  1931. description: GatewayRefs must be specified when Allow is set to
  1932. "FromList". In that case, only Gateways referenced in this list
  1933. will be allowed to use this route. This field is ignored for
  1934. other values of "Allow".
  1935. items:
  1936. description: GatewayReference identifies a Gateway in a specified
  1937. namespace.
  1938. properties:
  1939. name:
  1940. description: Name is the name of the referent.
  1941. maxLength: 253
  1942. minLength: 1
  1943. type: string
  1944. namespace:
  1945. description: Namespace is the namespace of the referent.
  1946. maxLength: 253
  1947. minLength: 1
  1948. type: string
  1949. required:
  1950. - name
  1951. - namespace
  1952. type: object
  1953. type: array
  1954. type: object
  1955. rules:
  1956. description: Rules are a list of TCP matchers and actions.
  1957. items:
  1958. description: TCPRouteRule is the configuration for a given rule.
  1959. properties:
  1960. forwardTo:
  1961. description: ForwardTo defines the backend(s) where matching
  1962. requests should be sent.
  1963. items:
  1964. description: RouteForwardTo defines how a Route should forward
  1965. a request.
  1966. properties:
  1967. backendRef:
  1968. description: "BackendRef is a reference to a backend to
  1969. forward matched requests to. If both BackendRef and
  1970. ServiceName are specified, ServiceName will be given
  1971. precedence. \n If the referent cannot be found, the
  1972. rule is not included in the route. The controller should
  1973. raise the \"ResolvedRefs\" condition on the Gateway
  1974. with the \"DegradedRoutes\" reason. The gateway status
  1975. for this route should be updated with a condition that
  1976. describes the error more specifically. \n Support: Custom"
  1977. properties:
  1978. group:
  1979. description: Group is the group of the referent.
  1980. maxLength: 253
  1981. minLength: 1
  1982. type: string
  1983. kind:
  1984. description: Kind is kind of the referent.
  1985. maxLength: 253
  1986. minLength: 1
  1987. type: string
  1988. name:
  1989. description: Name is the name of the referent.
  1990. maxLength: 253
  1991. minLength: 1
  1992. type: string
  1993. required:
  1994. - group
  1995. - kind
  1996. - name
  1997. type: object
  1998. port:
  1999. description: "Port specifies the destination port number
  2000. to use for the backend referenced by the ServiceName
  2001. or BackendRef field. If unspecified, the destination
  2002. port in the request is used when forwarding to a backendRef
  2003. or serviceName. \n Support: Core"
  2004. format: int32
  2005. maximum: 65535
  2006. minimum: 1
  2007. type: integer
  2008. serviceName:
  2009. description: "ServiceName refers to the name of the Service
  2010. to forward matched requests to. When specified, this
  2011. takes the place of BackendRef. If both BackendRef and
  2012. ServiceName are specified, ServiceName will be given
  2013. precedence. \n If the referent cannot be found, the
  2014. rule is not included in the route. The controller should
  2015. raise the \"ResolvedRefs\" condition on the Gateway
  2016. with the \"DegradedRoutes\" reason. The gateway status
  2017. for this route should be updated with a condition that
  2018. describes the error more specifically. \n The protocol
  2019. to use is defined using AppProtocol field (introduced
  2020. in Kubernetes 1.18) in the Service resource. In the
  2021. absence of the AppProtocol field a `networking.x-k8s.io/app-protocol`
  2022. annotation on the BackendPolicy resource may be used
  2023. to define the protocol. If the AppProtocol field is
  2024. available, this annotation should not be used. The AppProtocol
  2025. field, when populated, takes precedence over the annotation
  2026. in the BackendPolicy resource. For custom backends,
  2027. it is encouraged to add a semantically-equivalent field
  2028. in the Custom Resource Definition. \n Support: Core"
  2029. maxLength: 253
  2030. type: string
  2031. weight:
  2032. default: 1
  2033. description: "Weight specifies the proportion of HTTP
  2034. requests forwarded to the backend referenced by the
  2035. ServiceName or BackendRef field. This is computed as
  2036. weight/(sum of all weights in this ForwardTo list).
  2037. For non-zero values, there may be some epsilon from
  2038. the exact proportion defined here depending on the precision
  2039. an implementation supports. Weight is not a percentage
  2040. and the sum of weights does not need to equal 100. \n
  2041. If only one backend is specified and it has a weight
  2042. greater than 0, 100% of the traffic is forwarded to
  2043. that backend. If weight is set to 0, no traffic should
  2044. be forwarded for this entry. If unspecified, weight
  2045. defaults to 1. \n Support: Extended"
  2046. format: int32
  2047. maximum: 1000000
  2048. minimum: 0
  2049. type: integer
  2050. type: object
  2051. maxItems: 16
  2052. minItems: 1
  2053. type: array
  2054. matches:
  2055. description: "Matches define conditions used for matching the
  2056. rule against incoming TCP connections. Each match is independent,
  2057. i.e. this rule will be matched if **any** one of the matches
  2058. is satisfied. If unspecified (i.e. empty), this Rule will
  2059. match all requests for the associated Listener. \n Each client
  2060. request MUST map to a maximum of one route rule. If a request
  2061. matches multiple rules, matching precedence MUST be determined
  2062. in order of the following criteria, continuing on ties: \n
  2063. * The most specific match specified by ExtensionRef. Each
  2064. implementation that supports ExtensionRef may have different
  2065. ways of determining the specificity of the referenced extension.
  2066. \n If ties still exist across multiple Routes, matching precedence
  2067. MUST be determined in order of the following criteria, continuing
  2068. on ties: \n * The oldest Route based on creation timestamp.
  2069. For example, a Route with a creation timestamp of \"2020-09-08
  2070. 01:02:03\" is given precedence over a Route with a creation
  2071. timestamp of \"2020-09-08 01:02:04\". * The Route appearing
  2072. first in alphabetical order by \"<namespace>/<name>\". For
  2073. example, foo/bar is given precedence over foo/baz. \n If
  2074. ties still exist within the Route that has been given precedence,
  2075. matching precedence MUST be granted to the first matching
  2076. rule meeting the above criteria."
  2077. items:
  2078. description: TCPRouteMatch defines the predicate used to match
  2079. connections to a given action.
  2080. properties:
  2081. extensionRef:
  2082. description: "ExtensionRef is an optional, implementation-specific
  2083. extension to the \"match\" behavior. For example, resource
  2084. \"mytcproutematcher\" in group \"networking.acme.io\".
  2085. If the referent cannot be found, the rule is not included
  2086. in the route. The controller should raise the \"ResolvedRefs\"
  2087. condition on the Gateway with the \"DegradedRoutes\"
  2088. reason. The gateway status for this route should be
  2089. updated with a condition that describes the error more
  2090. specifically. \n Support: Custom"
  2091. properties:
  2092. group:
  2093. description: Group is the group of the referent.
  2094. maxLength: 253
  2095. minLength: 1
  2096. type: string
  2097. kind:
  2098. description: Kind is kind of the referent.
  2099. maxLength: 253
  2100. minLength: 1
  2101. type: string
  2102. name:
  2103. description: Name is the name of the referent.
  2104. maxLength: 253
  2105. minLength: 1
  2106. type: string
  2107. required:
  2108. - group
  2109. - kind
  2110. - name
  2111. type: object
  2112. type: object
  2113. maxItems: 8
  2114. type: array
  2115. required:
  2116. - forwardTo
  2117. type: object
  2118. maxItems: 16
  2119. minItems: 1
  2120. type: array
  2121. required:
  2122. - rules
  2123. type: object
  2124. status:
  2125. description: Status defines the current state of TCPRoute.
  2126. properties:
  2127. gateways:
  2128. description: "Gateways is a list of Gateways that are associated with
  2129. the route, and the status of the route with respect to each Gateway.
  2130. When a Gateway selects this route, the controller that manages the
  2131. Gateway must add an entry to this list when the controller first
  2132. sees the route and should update the entry as appropriate when the
  2133. route is modified. \n A maximum of 100 Gateways will be represented
  2134. in this list. If this list is full, there may be additional Gateways
  2135. using this Route that are not included in the list. An empty list
  2136. means the route has not been admitted by any Gateway."
  2137. items:
  2138. description: RouteGatewayStatus describes the status of a route
  2139. with respect to an associated Gateway.
  2140. properties:
  2141. conditions:
  2142. description: Conditions describes the status of the route with
  2143. respect to the Gateway. The "Admitted" condition must always
  2144. be specified by controllers to indicate whether the route
  2145. has been admitted or rejected by the Gateway, and why. Note
  2146. that the route's availability is also subject to the Gateway's
  2147. own status conditions and listener status.
  2148. items:
  2149. description: "Condition contains details for one aspect of
  2150. the current state of this API Resource. --- This struct
  2151. is intended for direct use as an array at the field path
  2152. .status.conditions. For example, type FooStatus struct{
  2153. \ // Represents the observations of a foo's current state.
  2154. \ // Known .status.conditions.type are: \"Available\",
  2155. \"Progressing\", and \"Degraded\" // +patchMergeKey=type
  2156. \ // +patchStrategy=merge // +listType=map //
  2157. +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\"
  2158. patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
  2159. \n // other fields }"
  2160. properties:
  2161. lastTransitionTime:
  2162. description: lastTransitionTime is the last time the condition
  2163. transitioned from one status to another. This should
  2164. be when the underlying condition changed. If that is
  2165. not known, then using the time when the API field changed
  2166. is acceptable.
  2167. format: date-time
  2168. type: string
  2169. message:
  2170. description: message is a human readable message indicating
  2171. details about the transition. This may be an empty string.
  2172. maxLength: 32768
  2173. type: string
  2174. observedGeneration:
  2175. description: observedGeneration represents the .metadata.generation
  2176. that the condition was set based upon. For instance,
  2177. if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration
  2178. is 9, the condition is out of date with respect to the
  2179. current state of the instance.
  2180. format: int64
  2181. minimum: 0
  2182. type: integer
  2183. reason:
  2184. description: reason contains a programmatic identifier
  2185. indicating the reason for the condition's last transition.
  2186. Producers of specific condition types may define expected
  2187. values and meanings for this field, and whether the
  2188. values are considered a guaranteed API. The value should
  2189. be a CamelCase string. This field may not be empty.
  2190. maxLength: 1024
  2191. minLength: 1
  2192. pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
  2193. type: string
  2194. status:
  2195. description: status of the condition, one of True, False,
  2196. Unknown.
  2197. enum:
  2198. - "True"
  2199. - "False"
  2200. - Unknown
  2201. type: string
  2202. type:
  2203. description: type of condition in CamelCase or in foo.example.com/CamelCase.
  2204. --- Many .condition.type values are consistent across
  2205. resources like Available, but because arbitrary conditions
  2206. can be useful (see .node.status.conditions), the ability
  2207. to deconflict is important. The regex it matches is
  2208. (dns1123SubdomainFmt/)?(qualifiedNameFmt)
  2209. maxLength: 316
  2210. 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])$
  2211. type: string
  2212. required:
  2213. - lastTransitionTime
  2214. - message
  2215. - reason
  2216. - status
  2217. - type
  2218. type: object
  2219. maxItems: 8
  2220. type: array
  2221. x-kubernetes-list-map-keys:
  2222. - type
  2223. x-kubernetes-list-type: map
  2224. gatewayRef:
  2225. description: GatewayRef is a reference to a Gateway object that
  2226. is associated with the route.
  2227. properties:
  2228. controller:
  2229. description: "Controller is a domain/path string that indicates
  2230. the controller implementing the Gateway. This corresponds
  2231. with the controller field on GatewayClass. \n Example:
  2232. \"acme.io/gateway-controller\". \n The format of this
  2233. field is DOMAIN \"/\" PATH, where DOMAIN and PATH are
  2234. valid Kubernetes names (https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names)."
  2235. maxLength: 253
  2236. type: string
  2237. name:
  2238. description: Name is the name of the referent.
  2239. maxLength: 253
  2240. minLength: 1
  2241. type: string
  2242. namespace:
  2243. description: Namespace is the namespace of the referent.
  2244. maxLength: 253
  2245. minLength: 1
  2246. type: string
  2247. required:
  2248. - name
  2249. - namespace
  2250. type: object
  2251. required:
  2252. - gatewayRef
  2253. type: object
  2254. maxItems: 100
  2255. type: array
  2256. required:
  2257. - gateways
  2258. type: object
  2259. type: object
  2260. served: true
  2261. storage: true
  2262. subresources:
  2263. status: {}
  2264. status:
  2265. acceptedNames:
  2266. kind: ""
  2267. plural: ""
  2268. conditions: []
  2269. storedVersions: []
  2270. ---
  2271. apiVersion: apiextensions.k8s.io/v1
  2272. kind: CustomResourceDefinition
  2273. metadata:
  2274. annotations:
  2275. controller-gen.kubebuilder.io/version: v0.5.0
  2276. creationTimestamp: null
  2277. name: tlsroutes.networking.x-k8s.io
  2278. spec:
  2279. group: networking.x-k8s.io
  2280. names:
  2281. categories:
  2282. - gateway-api
  2283. kind: TLSRoute
  2284. listKind: TLSRouteList
  2285. plural: tlsroutes
  2286. singular: tlsroute
  2287. scope: Namespaced
  2288. versions:
  2289. - additionalPrinterColumns:
  2290. - jsonPath: .metadata.creationTimestamp
  2291. name: Age
  2292. type: date
  2293. name: v1alpha1
  2294. schema:
  2295. openAPIV3Schema:
  2296. description: "The TLSRoute resource is similar to TCPRoute, but can be configured
  2297. to match against TLS-specific metadata. This allows more flexibility in
  2298. matching streams for a given TLS listener. \n If you need to forward traffic
  2299. to a single target for a TLS listener, you could choose to use a TCPRoute
  2300. with a TLS listener."
  2301. properties:
  2302. apiVersion:
  2303. description: 'APIVersion defines the versioned schema of this representation
  2304. of an object. Servers should convert recognized schemas to the latest
  2305. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  2306. type: string
  2307. kind:
  2308. description: 'Kind is a string value representing the REST resource this
  2309. object represents. Servers may infer this from the endpoint the client
  2310. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  2311. type: string
  2312. metadata:
  2313. type: object
  2314. spec:
  2315. description: Spec defines the desired state of TLSRoute.
  2316. properties:
  2317. gateways:
  2318. default:
  2319. allow: SameNamespace
  2320. description: Gateways defines which Gateways can use this Route.
  2321. properties:
  2322. allow:
  2323. default: SameNamespace
  2324. description: 'Allow indicates which Gateways will be allowed to
  2325. use this route. Possible values are: * All: Gateways in any
  2326. namespace can use this route. * FromList: Only Gateways specified
  2327. in GatewayRefs may use this route. * SameNamespace: Only Gateways
  2328. in the same namespace may use this route.'
  2329. enum:
  2330. - All
  2331. - FromList
  2332. - SameNamespace
  2333. type: string
  2334. gatewayRefs:
  2335. description: GatewayRefs must be specified when Allow is set to
  2336. "FromList". In that case, only Gateways referenced in this list
  2337. will be allowed to use this route. This field is ignored for
  2338. other values of "Allow".
  2339. items:
  2340. description: GatewayReference identifies a Gateway in a specified
  2341. namespace.
  2342. properties:
  2343. name:
  2344. description: Name is the name of the referent.
  2345. maxLength: 253
  2346. minLength: 1
  2347. type: string
  2348. namespace:
  2349. description: Namespace is the namespace of the referent.
  2350. maxLength: 253
  2351. minLength: 1
  2352. type: string
  2353. required:
  2354. - name
  2355. - namespace
  2356. type: object
  2357. type: array
  2358. type: object
  2359. rules:
  2360. description: Rules are a list of TLS matchers and actions.
  2361. items:
  2362. description: TLSRouteRule is the configuration for a given rule.
  2363. properties:
  2364. forwardTo:
  2365. description: ForwardTo defines the backend(s) where matching
  2366. requests should be sent.
  2367. items:
  2368. description: RouteForwardTo defines how a Route should forward
  2369. a request.
  2370. properties:
  2371. backendRef:
  2372. description: "BackendRef is a reference to a backend to
  2373. forward matched requests to. If both BackendRef and
  2374. ServiceName are specified, ServiceName will be given
  2375. precedence. \n If the referent cannot be found, the
  2376. rule is not included in the route. The controller should
  2377. raise the \"ResolvedRefs\" condition on the Gateway
  2378. with the \"DegradedRoutes\" reason. The gateway status
  2379. for this route should be updated with a condition that
  2380. describes the error more specifically. \n Support: Custom"
  2381. properties:
  2382. group:
  2383. description: Group is the group of the referent.
  2384. maxLength: 253
  2385. minLength: 1
  2386. type: string
  2387. kind:
  2388. description: Kind is kind of the referent.
  2389. maxLength: 253
  2390. minLength: 1
  2391. type: string
  2392. name:
  2393. description: Name is the name of the referent.
  2394. maxLength: 253
  2395. minLength: 1
  2396. type: string
  2397. required:
  2398. - group
  2399. - kind
  2400. - name
  2401. type: object
  2402. port:
  2403. description: "Port specifies the destination port number
  2404. to use for the backend referenced by the ServiceName
  2405. or BackendRef field. If unspecified, the destination
  2406. port in the request is used when forwarding to a backendRef
  2407. or serviceName. \n Support: Core"
  2408. format: int32
  2409. maximum: 65535
  2410. minimum: 1
  2411. type: integer
  2412. serviceName:
  2413. description: "ServiceName refers to the name of the Service
  2414. to forward matched requests to. When specified, this
  2415. takes the place of BackendRef. If both BackendRef and
  2416. ServiceName are specified, ServiceName will be given
  2417. precedence. \n If the referent cannot be found, the
  2418. rule is not included in the route. The controller should
  2419. raise the \"ResolvedRefs\" condition on the Gateway
  2420. with the \"DegradedRoutes\" reason. The gateway status
  2421. for this route should be updated with a condition that
  2422. describes the error more specifically. \n The protocol
  2423. to use is defined using AppProtocol field (introduced
  2424. in Kubernetes 1.18) in the Service resource. In the
  2425. absence of the AppProtocol field a `networking.x-k8s.io/app-protocol`
  2426. annotation on the BackendPolicy resource may be used
  2427. to define the protocol. If the AppProtocol field is
  2428. available, this annotation should not be used. The AppProtocol
  2429. field, when populated, takes precedence over the annotation
  2430. in the BackendPolicy resource. For custom backends,
  2431. it is encouraged to add a semantically-equivalent field
  2432. in the Custom Resource Definition. \n Support: Core"
  2433. maxLength: 253
  2434. type: string
  2435. weight:
  2436. default: 1
  2437. description: "Weight specifies the proportion of HTTP
  2438. requests forwarded to the backend referenced by the
  2439. ServiceName or BackendRef field. This is computed as
  2440. weight/(sum of all weights in this ForwardTo list).
  2441. For non-zero values, there may be some epsilon from
  2442. the exact proportion defined here depending on the precision
  2443. an implementation supports. Weight is not a percentage
  2444. and the sum of weights does not need to equal 100. \n
  2445. If only one backend is specified and it has a weight
  2446. greater than 0, 100% of the traffic is forwarded to
  2447. that backend. If weight is set to 0, no traffic should
  2448. be forwarded for this entry. If unspecified, weight
  2449. defaults to 1. \n Support: Extended"
  2450. format: int32
  2451. maximum: 1000000
  2452. minimum: 0
  2453. type: integer
  2454. type: object
  2455. maxItems: 16
  2456. minItems: 1
  2457. type: array
  2458. matches:
  2459. description: "Matches define conditions used for matching the
  2460. rule against incoming TLS connections. Each match is independent,
  2461. i.e. this rule will be matched if **any** one of the matches
  2462. is satisfied. If unspecified (i.e. empty), this Rule will
  2463. match all requests for the associated Listener. \n Each client
  2464. request MUST map to a maximum of one route rule. If a request
  2465. matches multiple rules, matching precedence MUST be determined
  2466. in order of the following criteria, continuing on ties: \n
  2467. * The longest matching SNI. * The longest matching precise
  2468. SNI (without a wildcard). This means that \"b.example.com\"
  2469. should be given precedence over \"*.example.com\". * The most
  2470. specific match specified by ExtensionRef. Each implementation
  2471. \ that supports ExtensionRef may have different ways of determining
  2472. the specificity of the referenced extension. \n If ties
  2473. still exist across multiple Routes, matching precedence MUST
  2474. be determined in order of the following criteria, continuing
  2475. on ties: \n * The oldest Route based on creation timestamp.
  2476. For example, a Route with a creation timestamp of \"2020-09-08
  2477. 01:02:03\" is given precedence over a Route with a creation
  2478. timestamp of \"2020-09-08 01:02:04\". * The Route appearing
  2479. first in alphabetical order by \"<namespace>/<name>\". For
  2480. example, foo/bar is given precedence over foo/baz. \n If
  2481. ties still exist within the Route that has been given precedence,
  2482. matching precedence MUST be granted to the first matching
  2483. rule meeting the above criteria."
  2484. items:
  2485. description: TLSRouteMatch defines the predicate used to match
  2486. connections to a given action.
  2487. properties:
  2488. extensionRef:
  2489. description: "ExtensionRef is an optional, implementation-specific
  2490. extension to the \"match\" behavior. For example, resource
  2491. \"mytlsroutematcher\" in group \"networking.acme.io\".
  2492. If the referent cannot be found, the rule is not included
  2493. in the route. The controller should raise the \"ResolvedRefs\"
  2494. condition on the Gateway with the \"DegradedRoutes\"
  2495. reason. The gateway status for this route should be
  2496. updated with a condition that describes the error more
  2497. specifically. \n Support: Custom"
  2498. properties:
  2499. group:
  2500. description: Group is the group of the referent.
  2501. maxLength: 253
  2502. minLength: 1
  2503. type: string
  2504. kind:
  2505. description: Kind is kind of the referent.
  2506. maxLength: 253
  2507. minLength: 1
  2508. type: string
  2509. name:
  2510. description: Name is the name of the referent.
  2511. maxLength: 253
  2512. minLength: 1
  2513. type: string
  2514. required:
  2515. - group
  2516. - kind
  2517. - name
  2518. type: object
  2519. snis:
  2520. description: "SNIs defines a set of SNI names that should
  2521. match against the SNI attribute of TLS ClientHello message
  2522. in TLS handshake. \n SNI can be \"precise\" which is
  2523. a domain name without the terminating dot of a network
  2524. host (e.g. \"foo.example.com\") or \"wildcard\", which
  2525. is a domain name prefixed with a single wildcard label
  2526. (e.g. `*.example.com`). The wildcard character `*` must
  2527. appear by itself as the first DNS label and matches
  2528. only a single label. You cannot have a wildcard label
  2529. by itself (e.g. Host == `*`). \n Requests will be matched
  2530. against the Host field in the following order: \n 1.
  2531. If SNI is precise, the request matches this rule if
  2532. the SNI in ClientHello is equal to one of the defined
  2533. SNIs. 2. If SNI is a wildcard, then the request matches
  2534. this rule if the SNI is to equal to the suffix (removing
  2535. the first label) of the wildcard rule. 3. If SNIs
  2536. is unspecified, all requests associated with the gateway
  2537. TLS listener will match. This can be used to define
  2538. a default backend for a TLS listener. \n Support:
  2539. Core"
  2540. items:
  2541. description: Hostname is used to specify a hostname
  2542. that should be matched.
  2543. maxLength: 253
  2544. minLength: 1
  2545. type: string
  2546. maxItems: 16
  2547. type: array
  2548. type: object
  2549. maxItems: 8
  2550. type: array
  2551. required:
  2552. - forwardTo
  2553. type: object
  2554. maxItems: 16
  2555. minItems: 1
  2556. type: array
  2557. required:
  2558. - rules
  2559. type: object
  2560. status:
  2561. description: Status defines the current state of TLSRoute.
  2562. properties:
  2563. gateways:
  2564. description: "Gateways is a list of Gateways that are associated with
  2565. the route, and the status of the route with respect to each Gateway.
  2566. When a Gateway selects this route, the controller that manages the
  2567. Gateway must add an entry to this list when the controller first
  2568. sees the route and should update the entry as appropriate when the
  2569. route is modified. \n A maximum of 100 Gateways will be represented
  2570. in this list. If this list is full, there may be additional Gateways
  2571. using this Route that are not included in the list. An empty list
  2572. means the route has not been admitted by any Gateway."
  2573. items:
  2574. description: RouteGatewayStatus describes the status of a route
  2575. with respect to an associated Gateway.
  2576. properties:
  2577. conditions:
  2578. description: Conditions describes the status of the route with
  2579. respect to the Gateway. The "Admitted" condition must always
  2580. be specified by controllers to indicate whether the route
  2581. has been admitted or rejected by the Gateway, and why. Note
  2582. that the route's availability is also subject to the Gateway's
  2583. own status conditions and listener status.
  2584. items:
  2585. description: "Condition contains details for one aspect of
  2586. the current state of this API Resource. --- This struct
  2587. is intended for direct use as an array at the field path
  2588. .status.conditions. For example, type FooStatus struct{
  2589. \ // Represents the observations of a foo's current state.
  2590. \ // Known .status.conditions.type are: \"Available\",
  2591. \"Progressing\", and \"Degraded\" // +patchMergeKey=type
  2592. \ // +patchStrategy=merge // +listType=map //
  2593. +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\"
  2594. patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
  2595. \n // other fields }"
  2596. properties:
  2597. lastTransitionTime:
  2598. description: lastTransitionTime is the last time the condition
  2599. transitioned from one status to another. This should
  2600. be when the underlying condition changed. If that is
  2601. not known, then using the time when the API field changed
  2602. is acceptable.
  2603. format: date-time
  2604. type: string
  2605. message:
  2606. description: message is a human readable message indicating
  2607. details about the transition. This may be an empty string.
  2608. maxLength: 32768
  2609. type: string
  2610. observedGeneration:
  2611. description: observedGeneration represents the .metadata.generation
  2612. that the condition was set based upon. For instance,
  2613. if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration
  2614. is 9, the condition is out of date with respect to the
  2615. current state of the instance.
  2616. format: int64
  2617. minimum: 0
  2618. type: integer
  2619. reason:
  2620. description: reason contains a programmatic identifier
  2621. indicating the reason for the condition's last transition.
  2622. Producers of specific condition types may define expected
  2623. values and meanings for this field, and whether the
  2624. values are considered a guaranteed API. The value should
  2625. be a CamelCase string. This field may not be empty.
  2626. maxLength: 1024
  2627. minLength: 1
  2628. pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
  2629. type: string
  2630. status:
  2631. description: status of the condition, one of True, False,
  2632. Unknown.
  2633. enum:
  2634. - "True"
  2635. - "False"
  2636. - Unknown
  2637. type: string
  2638. type:
  2639. description: type of condition in CamelCase or in foo.example.com/CamelCase.
  2640. --- Many .condition.type values are consistent across
  2641. resources like Available, but because arbitrary conditions
  2642. can be useful (see .node.status.conditions), the ability
  2643. to deconflict is important. The regex it matches is
  2644. (dns1123SubdomainFmt/)?(qualifiedNameFmt)
  2645. maxLength: 316
  2646. 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])$
  2647. type: string
  2648. required:
  2649. - lastTransitionTime
  2650. - message
  2651. - reason
  2652. - status
  2653. - type
  2654. type: object
  2655. maxItems: 8
  2656. type: array
  2657. x-kubernetes-list-map-keys:
  2658. - type
  2659. x-kubernetes-list-type: map
  2660. gatewayRef:
  2661. description: GatewayRef is a reference to a Gateway object that
  2662. is associated with the route.
  2663. properties:
  2664. controller:
  2665. description: "Controller is a domain/path string that indicates
  2666. the controller implementing the Gateway. This corresponds
  2667. with the controller field on GatewayClass. \n Example:
  2668. \"acme.io/gateway-controller\". \n The format of this
  2669. field is DOMAIN \"/\" PATH, where DOMAIN and PATH are
  2670. valid Kubernetes names (https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names)."
  2671. maxLength: 253
  2672. type: string
  2673. name:
  2674. description: Name is the name of the referent.
  2675. maxLength: 253
  2676. minLength: 1
  2677. type: string
  2678. namespace:
  2679. description: Namespace is the namespace of the referent.
  2680. maxLength: 253
  2681. minLength: 1
  2682. type: string
  2683. required:
  2684. - name
  2685. - namespace
  2686. type: object
  2687. required:
  2688. - gatewayRef
  2689. type: object
  2690. maxItems: 100
  2691. type: array
  2692. required:
  2693. - gateways
  2694. type: object
  2695. type: object
  2696. served: true
  2697. storage: true
  2698. subresources:
  2699. status: {}
  2700. status:
  2701. acceptedNames:
  2702. kind: ""
  2703. plural: ""
  2704. conditions: []
  2705. storedVersions: []

Resources

---
kind: GatewayClass
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: my-gateway-class
spec:
  controller: traefik.io/gateway-controller

---
kind: Gateway
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: my-gateway
  namespace: default
spec:
  gatewayClassName: my-gateway-class
  listeners:  # Use GatewayClass defaults for listener definition.
    - protocol: HTTP
      port: 80
      routes:
        kind: HTTPRoute
        namespaces:
          from: Same
        selector:
          matchLabels:
            app: foo
     - protocol: HTTPS
       port: 443
       tls:
         certificateRef:
           group: "core"
           kind: "Secret"
           name: "mysecret"
       routes:
         kind: HTTPRoute
         selector:
           matchLabels:
             app: foo
    - protocol: TCP
      port: 9000
      routes:
        kind: TCPRoute
        namespaces:
          from: Same
        selector:
          matchLabels:
            app: footcp
    - protocol: TLS
      port: 9443
      hostname: example.com
      tls:
        certificateRef:
          group: "core"
          kind: "Secret"
          name: "mysecret"
      routes:
        kind: TLSRoute
        namespaces:
          from: Same
        selector:
          matchLabels:
            app: footls

---
kind: HTTPRoute
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: http-app-1
  namespace: default
  labels:
    app: foo
spec:
  hostnames:
    - "foo.com"
  rules:
    - matches:
        - path:
            type: Exact
            value: /bar
      forwardTo:
        - serviceName: whoami
          port: 80
          weight: 1
    - matches:
        - path:
            type: Prefix
            value: /foo
      forwardTo:
        - backendRef:
            group: traefik.containo.us
            kind: TraefikService
            name: myservice@file
          weight: 1
          port: 80

---
kind: TCPRoute
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: tcp-app-1
  namespace: default
  labels:
    app: footcp
spec:
  rules:
     - forwardTo:
        - serviceName: whoamitcp
          port: 9000
          weight: 1

---
kind: TLSRoute
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: tls-app-1
  namespace: default
  labels:
    app: footls
spec:
  rules:
    - forwardTo:
        - serviceName: whoamitcp
          port: 9000
          weight: 1

RBAC

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: gateway-role
rules:
  - apiGroups:
      - ""
    resources:
      - services
      - endpoints
      - secrets
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - networking.x-k8s.io
    resources:
      - gatewayclasses
      - gateways
      - httproutes
      - tcproutes
      - tlsroutes
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - networking.x-k8s.io
    resources:
      - gatewayclasses/status
      - gateways/status
      - httproutes/status
      - tcproutes/status
      - tlsroutes/status
    verbs:
      - update

---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: gateway-controller

roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: gateway-role
subjects:
  - kind: ServiceAccount
    name: traefik-controller
    namespace: default