Kubernetes Configuration Reference

Dynamic configuration with Kubernetes Custom Resource

Definitions

apiextensions.k8s.io/v1 (Kubernetes v1.16+)

  1. ---
  2. apiVersion: apiextensions.k8s.io/v1
  3. kind: CustomResourceDefinition
  4. metadata:
  5. annotations:
  6. controller-gen.kubebuilder.io/version: v0.14.0
  7. name: ingressroutes.traefik.io
  8. spec:
  9. group: traefik.io
  10. names:
  11. kind: IngressRoute
  12. listKind: IngressRouteList
  13. plural: ingressroutes
  14. singular: ingressroute
  15. scope: Namespaced
  16. versions:
  17. - name: v1alpha1
  18. schema:
  19. openAPIV3Schema:
  20. description: IngressRoute is the CRD implementation of a Traefik HTTP Router.
  21. properties:
  22. apiVersion:
  23. description: |-
  24. APIVersion defines the versioned schema of this representation of an object.
  25. Servers should convert recognized schemas to the latest internal value, and
  26. may reject unrecognized values.
  27. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  28. type: string
  29. kind:
  30. description: |-
  31. Kind is a string value representing the REST resource this object represents.
  32. Servers may infer this from the endpoint the client submits requests to.
  33. Cannot be updated.
  34. In CamelCase.
  35. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  36. type: string
  37. metadata:
  38. type: object
  39. spec:
  40. description: IngressRouteSpec defines the desired state of IngressRoute.
  41. properties:
  42. entryPoints:
  43. description: |-
  44. EntryPoints defines the list of entry point names to bind to.
  45. Entry points have to be configured in the static configuration.
  46. More info: https://doc.traefik.io/traefik/v3.1/routing/entrypoints/
  47. Default: all.
  48. items:
  49. type: string
  50. type: array
  51. routes:
  52. description: Routes defines the list of routes.
  53. items:
  54. description: Route holds the HTTP route configuration.
  55. properties:
  56. kind:
  57. description: |-
  58. Kind defines the kind of the route.
  59. Rule is the only supported kind.
  60. enum:
  61. - Rule
  62. type: string
  63. match:
  64. description: |-
  65. Match defines the router's rule.
  66. More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#rule
  67. type: string
  68. middlewares:
  69. description: |-
  70. Middlewares defines the list of references to Middleware resources.
  71. More info: https://doc.traefik.io/traefik/v3.1/routing/providers/kubernetes-crd/#kind-middleware
  72. items:
  73. description: MiddlewareRef is a reference to a Middleware
  74. resource.
  75. properties:
  76. name:
  77. description: Name defines the name of the referenced Middleware
  78. resource.
  79. type: string
  80. namespace:
  81. description: Namespace defines the namespace of the referenced
  82. Middleware resource.
  83. type: string
  84. required:
  85. - name
  86. type: object
  87. type: array
  88. priority:
  89. description: |-
  90. Priority defines the router's priority.
  91. More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#priority
  92. type: integer
  93. services:
  94. description: |-
  95. Services defines the list of Service.
  96. It can contain any combination of TraefikService and/or reference to a Kubernetes Service.
  97. items:
  98. description: Service defines an upstream HTTP service to proxy
  99. traffic to.
  100. properties:
  101. healthCheck:
  102. description: Healthcheck defines health checks for ExternalName
  103. services.
  104. properties:
  105. followRedirects:
  106. description: |-
  107. FollowRedirects defines whether redirects should be followed during the health check calls.
  108. Default: true
  109. type: boolean
  110. headers:
  111. additionalProperties:
  112. type: string
  113. description: Headers defines custom headers to be
  114. sent to the health check endpoint.
  115. type: object
  116. hostname:
  117. description: Hostname defines the value of hostname
  118. in the Host header of the health check request.
  119. type: string
  120. interval:
  121. anyOf:
  122. - type: integer
  123. - type: string
  124. description: |-
  125. Interval defines the frequency of the health check calls.
  126. Default: 30s
  127. x-kubernetes-int-or-string: true
  128. method:
  129. description: Method defines the healthcheck method.
  130. type: string
  131. mode:
  132. description: |-
  133. Mode defines the health check mode.
  134. If defined to grpc, will use the gRPC health check protocol to probe the server.
  135. Default: http
  136. type: string
  137. path:
  138. description: Path defines the server URL path for
  139. the health check endpoint.
  140. type: string
  141. port:
  142. description: Port defines the server URL port for
  143. the health check endpoint.
  144. type: integer
  145. scheme:
  146. description: Scheme replaces the server URL scheme
  147. for the health check endpoint.
  148. type: string
  149. status:
  150. description: Status defines the expected HTTP status
  151. code of the response to the health check request.
  152. type: integer
  153. timeout:
  154. anyOf:
  155. - type: integer
  156. - type: string
  157. description: |-
  158. Timeout defines the maximum duration Traefik will wait for a health check request before considering the server unhealthy.
  159. Default: 5s
  160. x-kubernetes-int-or-string: true
  161. type: object
  162. kind:
  163. description: Kind defines the kind of the Service.
  164. enum:
  165. - Service
  166. - TraefikService
  167. type: string
  168. name:
  169. description: |-
  170. Name defines the name of the referenced Kubernetes Service or TraefikService.
  171. The differentiation between the two is specified in the Kind field.
  172. type: string
  173. namespace:
  174. description: Namespace defines the namespace of the referenced
  175. Kubernetes Service or TraefikService.
  176. type: string
  177. nativeLB:
  178. description: |-
  179. NativeLB controls, when creating the load-balancer,
  180. whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP.
  181. The Kubernetes Service itself does load-balance to the pods.
  182. By default, NativeLB is false.
  183. type: boolean
  184. nodePortLB:
  185. description: |-
  186. NodePortLB controls, when creating the load-balancer,
  187. whether the LB's children are directly the nodes internal IPs using the nodePort when the service type is NodePort.
  188. It allows services to be reachable when Traefik runs externally from the Kubernetes cluster but within the same network of the nodes.
  189. By default, NodePortLB is false.
  190. type: boolean
  191. passHostHeader:
  192. description: |-
  193. PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service.
  194. By default, passHostHeader is true.
  195. type: boolean
  196. port:
  197. anyOf:
  198. - type: integer
  199. - type: string
  200. description: |-
  201. Port defines the port of a Kubernetes Service.
  202. This can be a reference to a named port.
  203. x-kubernetes-int-or-string: true
  204. responseForwarding:
  205. description: ResponseForwarding defines how Traefik forwards
  206. the response from the upstream Kubernetes Service to
  207. the client.
  208. properties:
  209. flushInterval:
  210. description: |-
  211. FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body.
  212. A negative value means to flush immediately after each write to the client.
  213. This configuration is ignored when ReverseProxy recognizes a response as a streaming response;
  214. for such responses, writes are flushed to the client immediately.
  215. Default: 100ms
  216. type: string
  217. type: object
  218. scheme:
  219. description: |-
  220. Scheme defines the scheme to use for the request to the upstream Kubernetes Service.
  221. It defaults to https when Kubernetes Service port is 443, http otherwise.
  222. type: string
  223. serversTransport:
  224. description: |-
  225. ServersTransport defines the name of ServersTransport resource to use.
  226. It allows to configure the transport between Traefik and your servers.
  227. Can only be used on a Kubernetes Service.
  228. type: string
  229. sticky:
  230. description: |-
  231. Sticky defines the sticky sessions configuration.
  232. More info: https://doc.traefik.io/traefik/v3.1/routing/services/#sticky-sessions
  233. properties:
  234. cookie:
  235. description: Cookie defines the sticky cookie configuration.
  236. properties:
  237. httpOnly:
  238. description: HTTPOnly defines whether the cookie
  239. can be accessed by client-side APIs, such as
  240. JavaScript.
  241. type: boolean
  242. maxAge:
  243. description: |-
  244. MaxAge indicates the number of seconds until the cookie expires.
  245. When set to a negative number, the cookie expires immediately.
  246. When set to zero, the cookie never expires.
  247. type: integer
  248. name:
  249. description: Name defines the Cookie name.
  250. type: string
  251. sameSite:
  252. description: |-
  253. SameSite defines the same site policy.
  254. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
  255. type: string
  256. secure:
  257. description: Secure defines whether the cookie
  258. can only be transmitted over an encrypted connection
  259. (i.e. HTTPS).
  260. type: boolean
  261. type: object
  262. type: object
  263. strategy:
  264. description: |-
  265. Strategy defines the load balancing strategy between the servers.
  266. RoundRobin is the only supported value at the moment.
  267. type: string
  268. weight:
  269. description: |-
  270. Weight defines the weight and should only be specified when Name references a TraefikService object
  271. (and to be precise, one that embeds a Weighted Round Robin).
  272. type: integer
  273. required:
  274. - name
  275. type: object
  276. type: array
  277. syntax:
  278. description: |-
  279. Syntax defines the router's rule syntax.
  280. More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#rulesyntax
  281. type: string
  282. required:
  283. - kind
  284. - match
  285. type: object
  286. type: array
  287. tls:
  288. description: |-
  289. TLS defines the TLS configuration.
  290. More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#tls
  291. properties:
  292. certResolver:
  293. description: |-
  294. CertResolver defines the name of the certificate resolver to use.
  295. Cert resolvers have to be configured in the static configuration.
  296. More info: https://doc.traefik.io/traefik/v3.1/https/acme/#certificate-resolvers
  297. type: string
  298. domains:
  299. description: |-
  300. Domains defines the list of domains that will be used to issue certificates.
  301. More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#domains
  302. items:
  303. description: Domain holds a domain name with SANs.
  304. properties:
  305. main:
  306. description: Main defines the main domain name.
  307. type: string
  308. sans:
  309. description: SANs defines the subject alternative domain
  310. names.
  311. items:
  312. type: string
  313. type: array
  314. type: object
  315. type: array
  316. options:
  317. description: |-
  318. Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection.
  319. If not defined, the `default` TLSOption is used.
  320. More info: https://doc.traefik.io/traefik/v3.1/https/tls/#tls-options
  321. properties:
  322. name:
  323. description: |-
  324. Name defines the name of the referenced TLSOption.
  325. More info: https://doc.traefik.io/traefik/v3.1/routing/providers/kubernetes-crd/#kind-tlsoption
  326. type: string
  327. namespace:
  328. description: |-
  329. Namespace defines the namespace of the referenced TLSOption.
  330. More info: https://doc.traefik.io/traefik/v3.1/routing/providers/kubernetes-crd/#kind-tlsoption
  331. type: string
  332. required:
  333. - name
  334. type: object
  335. secretName:
  336. description: SecretName is the name of the referenced Kubernetes
  337. Secret to specify the certificate details.
  338. type: string
  339. store:
  340. description: |-
  341. Store defines the reference to the TLSStore, that will be used to store certificates.
  342. Please note that only `default` TLSStore can be used.
  343. properties:
  344. name:
  345. description: |-
  346. Name defines the name of the referenced TLSStore.
  347. More info: https://doc.traefik.io/traefik/v3.1/routing/providers/kubernetes-crd/#kind-tlsstore
  348. type: string
  349. namespace:
  350. description: |-
  351. Namespace defines the namespace of the referenced TLSStore.
  352. More info: https://doc.traefik.io/traefik/v3.1/routing/providers/kubernetes-crd/#kind-tlsstore
  353. type: string
  354. required:
  355. - name
  356. type: object
  357. type: object
  358. required:
  359. - routes
  360. type: object
  361. required:
  362. - metadata
  363. - spec
  364. type: object
  365. served: true
  366. storage: true
  367. ---
  368. apiVersion: apiextensions.k8s.io/v1
  369. kind: CustomResourceDefinition
  370. metadata:
  371. annotations:
  372. controller-gen.kubebuilder.io/version: v0.14.0
  373. name: ingressroutetcps.traefik.io
  374. spec:
  375. group: traefik.io
  376. names:
  377. kind: IngressRouteTCP
  378. listKind: IngressRouteTCPList
  379. plural: ingressroutetcps
  380. singular: ingressroutetcp
  381. scope: Namespaced
  382. versions:
  383. - name: v1alpha1
  384. schema:
  385. openAPIV3Schema:
  386. description: IngressRouteTCP is the CRD implementation of a Traefik TCP Router.
  387. properties:
  388. apiVersion:
  389. description: |-
  390. APIVersion defines the versioned schema of this representation of an object.
  391. Servers should convert recognized schemas to the latest internal value, and
  392. may reject unrecognized values.
  393. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  394. type: string
  395. kind:
  396. description: |-
  397. Kind is a string value representing the REST resource this object represents.
  398. Servers may infer this from the endpoint the client submits requests to.
  399. Cannot be updated.
  400. In CamelCase.
  401. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  402. type: string
  403. metadata:
  404. type: object
  405. spec:
  406. description: IngressRouteTCPSpec defines the desired state of IngressRouteTCP.
  407. properties:
  408. entryPoints:
  409. description: |-
  410. EntryPoints defines the list of entry point names to bind to.
  411. Entry points have to be configured in the static configuration.
  412. More info: https://doc.traefik.io/traefik/v3.1/routing/entrypoints/
  413. Default: all.
  414. items:
  415. type: string
  416. type: array
  417. routes:
  418. description: Routes defines the list of routes.
  419. items:
  420. description: RouteTCP holds the TCP route configuration.
  421. properties:
  422. match:
  423. description: |-
  424. Match defines the router's rule.
  425. More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#rule_1
  426. type: string
  427. middlewares:
  428. description: Middlewares defines the list of references to MiddlewareTCP
  429. resources.
  430. items:
  431. description: ObjectReference is a generic reference to a Traefik
  432. resource.
  433. properties:
  434. name:
  435. description: Name defines the name of the referenced Traefik
  436. resource.
  437. type: string
  438. namespace:
  439. description: Namespace defines the namespace of the referenced
  440. Traefik resource.
  441. type: string
  442. required:
  443. - name
  444. type: object
  445. type: array
  446. priority:
  447. description: |-
  448. Priority defines the router's priority.
  449. More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#priority_1
  450. type: integer
  451. services:
  452. description: Services defines the list of TCP services.
  453. items:
  454. description: ServiceTCP defines an upstream TCP service to
  455. proxy traffic to.
  456. properties:
  457. name:
  458. description: Name defines the name of the referenced Kubernetes
  459. Service.
  460. type: string
  461. namespace:
  462. description: Namespace defines the namespace of the referenced
  463. Kubernetes Service.
  464. type: string
  465. nativeLB:
  466. description: |-
  467. NativeLB controls, when creating the load-balancer,
  468. whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP.
  469. The Kubernetes Service itself does load-balance to the pods.
  470. By default, NativeLB is false.
  471. type: boolean
  472. nodePortLB:
  473. description: |-
  474. NodePortLB controls, when creating the load-balancer,
  475. whether the LB's children are directly the nodes internal IPs using the nodePort when the service type is NodePort.
  476. It allows services to be reachable when Traefik runs externally from the Kubernetes cluster but within the same network of the nodes.
  477. By default, NodePortLB is false.
  478. type: boolean
  479. port:
  480. anyOf:
  481. - type: integer
  482. - type: string
  483. description: |-
  484. Port defines the port of a Kubernetes Service.
  485. This can be a reference to a named port.
  486. x-kubernetes-int-or-string: true
  487. proxyProtocol:
  488. description: |-
  489. ProxyProtocol defines the PROXY protocol configuration.
  490. More info: https://doc.traefik.io/traefik/v3.1/routing/services/#proxy-protocol
  491. properties:
  492. version:
  493. description: Version defines the PROXY Protocol version
  494. to use.
  495. type: integer
  496. type: object
  497. serversTransport:
  498. description: |-
  499. ServersTransport defines the name of ServersTransportTCP resource to use.
  500. It allows to configure the transport between Traefik and your servers.
  501. Can only be used on a Kubernetes Service.
  502. type: string
  503. terminationDelay:
  504. description: |-
  505. TerminationDelay defines the deadline that the proxy sets, after one of its connected peers indicates
  506. it has closed the writing capability of its connection, to close the reading capability as well,
  507. hence fully terminating the connection.
  508. It is a duration in milliseconds, defaulting to 100.
  509. A negative value means an infinite deadline (i.e. the reading capability is never closed).
  510. Deprecated: TerminationDelay is not supported APIVersion traefik.io/v1, please use ServersTransport to configure the TerminationDelay instead.
  511. type: integer
  512. tls:
  513. description: TLS determines whether to use TLS when dialing
  514. with the backend.
  515. type: boolean
  516. weight:
  517. description: Weight defines the weight used when balancing
  518. requests between multiple Kubernetes Service.
  519. type: integer
  520. required:
  521. - name
  522. - port
  523. type: object
  524. type: array
  525. syntax:
  526. description: |-
  527. Syntax defines the router's rule syntax.
  528. More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#rulesyntax_1
  529. type: string
  530. required:
  531. - match
  532. type: object
  533. type: array
  534. tls:
  535. description: |-
  536. TLS defines the TLS configuration on a layer 4 / TCP Route.
  537. More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#tls_1
  538. properties:
  539. certResolver:
  540. description: |-
  541. CertResolver defines the name of the certificate resolver to use.
  542. Cert resolvers have to be configured in the static configuration.
  543. More info: https://doc.traefik.io/traefik/v3.1/https/acme/#certificate-resolvers
  544. type: string
  545. domains:
  546. description: |-
  547. Domains defines the list of domains that will be used to issue certificates.
  548. More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#domains
  549. items:
  550. description: Domain holds a domain name with SANs.
  551. properties:
  552. main:
  553. description: Main defines the main domain name.
  554. type: string
  555. sans:
  556. description: SANs defines the subject alternative domain
  557. names.
  558. items:
  559. type: string
  560. type: array
  561. type: object
  562. type: array
  563. options:
  564. description: |-
  565. Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection.
  566. If not defined, the `default` TLSOption is used.
  567. More info: https://doc.traefik.io/traefik/v3.1/https/tls/#tls-options
  568. properties:
  569. name:
  570. description: Name defines the name of the referenced Traefik
  571. resource.
  572. type: string
  573. namespace:
  574. description: Namespace defines the namespace of the referenced
  575. Traefik resource.
  576. type: string
  577. required:
  578. - name
  579. type: object
  580. passthrough:
  581. description: Passthrough defines whether a TLS router will terminate
  582. the TLS connection.
  583. type: boolean
  584. secretName:
  585. description: SecretName is the name of the referenced Kubernetes
  586. Secret to specify the certificate details.
  587. type: string
  588. store:
  589. description: |-
  590. Store defines the reference to the TLSStore, that will be used to store certificates.
  591. Please note that only `default` TLSStore can be used.
  592. properties:
  593. name:
  594. description: Name defines the name of the referenced Traefik
  595. resource.
  596. type: string
  597. namespace:
  598. description: Namespace defines the namespace of the referenced
  599. Traefik resource.
  600. type: string
  601. required:
  602. - name
  603. type: object
  604. type: object
  605. required:
  606. - routes
  607. type: object
  608. required:
  609. - metadata
  610. - spec
  611. type: object
  612. served: true
  613. storage: true
  614. ---
  615. apiVersion: apiextensions.k8s.io/v1
  616. kind: CustomResourceDefinition
  617. metadata:
  618. annotations:
  619. controller-gen.kubebuilder.io/version: v0.14.0
  620. name: ingressrouteudps.traefik.io
  621. spec:
  622. group: traefik.io
  623. names:
  624. kind: IngressRouteUDP
  625. listKind: IngressRouteUDPList
  626. plural: ingressrouteudps
  627. singular: ingressrouteudp
  628. scope: Namespaced
  629. versions:
  630. - name: v1alpha1
  631. schema:
  632. openAPIV3Schema:
  633. description: IngressRouteUDP is a CRD implementation of a Traefik UDP Router.
  634. properties:
  635. apiVersion:
  636. description: |-
  637. APIVersion defines the versioned schema of this representation of an object.
  638. Servers should convert recognized schemas to the latest internal value, and
  639. may reject unrecognized values.
  640. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  641. type: string
  642. kind:
  643. description: |-
  644. Kind is a string value representing the REST resource this object represents.
  645. Servers may infer this from the endpoint the client submits requests to.
  646. Cannot be updated.
  647. In CamelCase.
  648. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  649. type: string
  650. metadata:
  651. type: object
  652. spec:
  653. description: IngressRouteUDPSpec defines the desired state of a IngressRouteUDP.
  654. properties:
  655. entryPoints:
  656. description: |-
  657. EntryPoints defines the list of entry point names to bind to.
  658. Entry points have to be configured in the static configuration.
  659. More info: https://doc.traefik.io/traefik/v3.1/routing/entrypoints/
  660. Default: all.
  661. items:
  662. type: string
  663. type: array
  664. routes:
  665. description: Routes defines the list of routes.
  666. items:
  667. description: RouteUDP holds the UDP route configuration.
  668. properties:
  669. services:
  670. description: Services defines the list of UDP services.
  671. items:
  672. description: ServiceUDP defines an upstream UDP service to
  673. proxy traffic to.
  674. properties:
  675. name:
  676. description: Name defines the name of the referenced Kubernetes
  677. Service.
  678. type: string
  679. namespace:
  680. description: Namespace defines the namespace of the referenced
  681. Kubernetes Service.
  682. type: string
  683. nativeLB:
  684. description: |-
  685. NativeLB controls, when creating the load-balancer,
  686. whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP.
  687. The Kubernetes Service itself does load-balance to the pods.
  688. By default, NativeLB is false.
  689. type: boolean
  690. nodePortLB:
  691. description: |-
  692. NodePortLB controls, when creating the load-balancer,
  693. whether the LB's children are directly the nodes internal IPs using the nodePort when the service type is NodePort.
  694. It allows services to be reachable when Traefik runs externally from the Kubernetes cluster but within the same network of the nodes.
  695. By default, NodePortLB is false.
  696. type: boolean
  697. port:
  698. anyOf:
  699. - type: integer
  700. - type: string
  701. description: |-
  702. Port defines the port of a Kubernetes Service.
  703. This can be a reference to a named port.
  704. x-kubernetes-int-or-string: true
  705. weight:
  706. description: Weight defines the weight used when balancing
  707. requests between multiple Kubernetes Service.
  708. type: integer
  709. required:
  710. - name
  711. - port
  712. type: object
  713. type: array
  714. type: object
  715. type: array
  716. required:
  717. - routes
  718. type: object
  719. required:
  720. - metadata
  721. - spec
  722. type: object
  723. served: true
  724. storage: true
  725. ---
  726. apiVersion: apiextensions.k8s.io/v1
  727. kind: CustomResourceDefinition
  728. metadata:
  729. annotations:
  730. controller-gen.kubebuilder.io/version: v0.14.0
  731. name: middlewares.traefik.io
  732. spec:
  733. group: traefik.io
  734. names:
  735. kind: Middleware
  736. listKind: MiddlewareList
  737. plural: middlewares
  738. singular: middleware
  739. scope: Namespaced
  740. versions:
  741. - name: v1alpha1
  742. schema:
  743. openAPIV3Schema:
  744. description: |-
  745. Middleware is the CRD implementation of a Traefik Middleware.
  746. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/overview/
  747. properties:
  748. apiVersion:
  749. description: |-
  750. APIVersion defines the versioned schema of this representation of an object.
  751. Servers should convert recognized schemas to the latest internal value, and
  752. may reject unrecognized values.
  753. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  754. type: string
  755. kind:
  756. description: |-
  757. Kind is a string value representing the REST resource this object represents.
  758. Servers may infer this from the endpoint the client submits requests to.
  759. Cannot be updated.
  760. In CamelCase.
  761. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  762. type: string
  763. metadata:
  764. type: object
  765. spec:
  766. description: MiddlewareSpec defines the desired state of a Middleware.
  767. properties:
  768. addPrefix:
  769. description: |-
  770. AddPrefix holds the add prefix middleware configuration.
  771. This middleware updates the path of a request before forwarding it.
  772. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/addprefix/
  773. properties:
  774. prefix:
  775. description: |-
  776. Prefix is the string to add before the current path in the requested URL.
  777. It should include a leading slash (/).
  778. type: string
  779. type: object
  780. basicAuth:
  781. description: |-
  782. BasicAuth holds the basic auth middleware configuration.
  783. This middleware restricts access to your services to known users.
  784. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/basicauth/
  785. properties:
  786. headerField:
  787. description: |-
  788. HeaderField defines a header field to store the authenticated user.
  789. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/basicauth/#headerfield
  790. type: string
  791. realm:
  792. description: |-
  793. Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme.
  794. Default: traefik.
  795. type: string
  796. removeHeader:
  797. description: |-
  798. RemoveHeader sets the removeHeader option to true to remove the authorization header before forwarding the request to your service.
  799. Default: false.
  800. type: boolean
  801. secret:
  802. description: Secret is the name of the referenced Kubernetes Secret
  803. containing user credentials.
  804. type: string
  805. type: object
  806. buffering:
  807. description: |-
  808. Buffering holds the buffering middleware configuration.
  809. This middleware retries or limits the size of requests that can be forwarded to backends.
  810. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/buffering/#maxrequestbodybytes
  811. properties:
  812. maxRequestBodyBytes:
  813. description: |-
  814. MaxRequestBodyBytes defines the maximum allowed body size for the request (in bytes).
  815. If the request exceeds the allowed size, it is not forwarded to the service, and the client gets a 413 (Request Entity Too Large) response.
  816. Default: 0 (no maximum).
  817. format: int64
  818. type: integer
  819. maxResponseBodyBytes:
  820. description: |-
  821. MaxResponseBodyBytes defines the maximum allowed response size from the service (in bytes).
  822. If the response exceeds the allowed size, it is not forwarded to the client. The client gets a 500 (Internal Server Error) response instead.
  823. Default: 0 (no maximum).
  824. format: int64
  825. type: integer
  826. memRequestBodyBytes:
  827. description: |-
  828. MemRequestBodyBytes defines the threshold (in bytes) from which the request will be buffered on disk instead of in memory.
  829. Default: 1048576 (1Mi).
  830. format: int64
  831. type: integer
  832. memResponseBodyBytes:
  833. description: |-
  834. MemResponseBodyBytes defines the threshold (in bytes) from which the response will be buffered on disk instead of in memory.
  835. Default: 1048576 (1Mi).
  836. format: int64
  837. type: integer
  838. retryExpression:
  839. description: |-
  840. RetryExpression defines the retry conditions.
  841. It is a logical combination of functions with operators AND (&&) and OR (||).
  842. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/buffering/#retryexpression
  843. type: string
  844. type: object
  845. chain:
  846. description: |-
  847. Chain holds the configuration of the chain middleware.
  848. This middleware enables to define reusable combinations of other pieces of middleware.
  849. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/chain/
  850. properties:
  851. middlewares:
  852. description: Middlewares is the list of MiddlewareRef which composes
  853. the chain.
  854. items:
  855. description: MiddlewareRef is a reference to a Middleware resource.
  856. properties:
  857. name:
  858. description: Name defines the name of the referenced Middleware
  859. resource.
  860. type: string
  861. namespace:
  862. description: Namespace defines the namespace of the referenced
  863. Middleware resource.
  864. type: string
  865. required:
  866. - name
  867. type: object
  868. type: array
  869. type: object
  870. circuitBreaker:
  871. description: CircuitBreaker holds the circuit breaker configuration.
  872. properties:
  873. checkPeriod:
  874. anyOf:
  875. - type: integer
  876. - type: string
  877. description: CheckPeriod is the interval between successive checks
  878. of the circuit breaker condition (when in standby state).
  879. x-kubernetes-int-or-string: true
  880. expression:
  881. description: Expression is the condition that triggers the tripped
  882. state.
  883. type: string
  884. fallbackDuration:
  885. anyOf:
  886. - type: integer
  887. - type: string
  888. description: FallbackDuration is the duration for which the circuit
  889. breaker will wait before trying to recover (from a tripped state).
  890. x-kubernetes-int-or-string: true
  891. recoveryDuration:
  892. anyOf:
  893. - type: integer
  894. - type: string
  895. description: RecoveryDuration is the duration for which the circuit
  896. breaker will try to recover (as soon as it is in recovering
  897. state).
  898. x-kubernetes-int-or-string: true
  899. responseCode:
  900. description: ResponseCode is the status code that the circuit
  901. breaker will return while it is in the open state.
  902. type: integer
  903. type: object
  904. compress:
  905. description: |-
  906. Compress holds the compress middleware configuration.
  907. This middleware compresses responses before sending them to the client, using gzip compression.
  908. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/compress/
  909. properties:
  910. defaultEncoding:
  911. description: DefaultEncoding specifies the default encoding if
  912. the `Accept-Encoding` header is not in the request or contains
  913. a wildcard (`*`).
  914. type: string
  915. excludedContentTypes:
  916. description: |-
  917. ExcludedContentTypes defines the list of content types to compare the Content-Type header of the incoming requests and responses before compressing.
  918. `application/grpc` is always excluded.
  919. items:
  920. type: string
  921. type: array
  922. includedContentTypes:
  923. description: IncludedContentTypes defines the list of content
  924. types to compare the Content-Type header of the responses before
  925. compressing.
  926. items:
  927. type: string
  928. type: array
  929. minResponseBodyBytes:
  930. description: |-
  931. MinResponseBodyBytes defines the minimum amount of bytes a response body must have to be compressed.
  932. Default: 1024.
  933. type: integer
  934. type: object
  935. contentType:
  936. description: |-
  937. ContentType holds the content-type middleware configuration.
  938. This middleware exists to enable the correct behavior until at least the default one can be changed in a future version.
  939. properties:
  940. autoDetect:
  941. description: |-
  942. AutoDetect specifies whether to let the `Content-Type` header, if it has not been set by the backend,
  943. be automatically set to a value derived from the contents of the response.
  944. Deprecated: AutoDetect option is deprecated, Content-Type middleware is only meant to be used to enable the content-type detection, please remove any usage of this option.
  945. type: boolean
  946. type: object
  947. digestAuth:
  948. description: |-
  949. DigestAuth holds the digest auth middleware configuration.
  950. This middleware restricts access to your services to known users.
  951. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/digestauth/
  952. properties:
  953. headerField:
  954. description: |-
  955. HeaderField defines a header field to store the authenticated user.
  956. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/basicauth/#headerfield
  957. type: string
  958. realm:
  959. description: |-
  960. Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme.
  961. Default: traefik.
  962. type: string
  963. removeHeader:
  964. description: RemoveHeader defines whether to remove the authorization
  965. header before forwarding the request to the backend.
  966. type: boolean
  967. secret:
  968. description: Secret is the name of the referenced Kubernetes Secret
  969. containing user credentials.
  970. type: string
  971. type: object
  972. errors:
  973. description: |-
  974. ErrorPage holds the custom error middleware configuration.
  975. This middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes.
  976. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/errorpages/
  977. properties:
  978. query:
  979. description: |-
  980. Query defines the URL for the error page (hosted by service).
  981. The {status} variable can be used in order to insert the status code in the URL.
  982. type: string
  983. service:
  984. description: |-
  985. Service defines the reference to a Kubernetes Service that will serve the error page.
  986. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/errorpages/#service
  987. properties:
  988. healthCheck:
  989. description: Healthcheck defines health checks for ExternalName
  990. services.
  991. properties:
  992. followRedirects:
  993. description: |-
  994. FollowRedirects defines whether redirects should be followed during the health check calls.
  995. Default: true
  996. type: boolean
  997. headers:
  998. additionalProperties:
  999. type: string
  1000. description: Headers defines custom headers to be sent
  1001. to the health check endpoint.
  1002. type: object
  1003. hostname:
  1004. description: Hostname defines the value of hostname in
  1005. the Host header of the health check request.
  1006. type: string
  1007. interval:
  1008. anyOf:
  1009. - type: integer
  1010. - type: string
  1011. description: |-
  1012. Interval defines the frequency of the health check calls.
  1013. Default: 30s
  1014. x-kubernetes-int-or-string: true
  1015. method:
  1016. description: Method defines the healthcheck method.
  1017. type: string
  1018. mode:
  1019. description: |-
  1020. Mode defines the health check mode.
  1021. If defined to grpc, will use the gRPC health check protocol to probe the server.
  1022. Default: http
  1023. type: string
  1024. path:
  1025. description: Path defines the server URL path for the
  1026. health check endpoint.
  1027. type: string
  1028. port:
  1029. description: Port defines the server URL port for the
  1030. health check endpoint.
  1031. type: integer
  1032. scheme:
  1033. description: Scheme replaces the server URL scheme for
  1034. the health check endpoint.
  1035. type: string
  1036. status:
  1037. description: Status defines the expected HTTP status code
  1038. of the response to the health check request.
  1039. type: integer
  1040. timeout:
  1041. anyOf:
  1042. - type: integer
  1043. - type: string
  1044. description: |-
  1045. Timeout defines the maximum duration Traefik will wait for a health check request before considering the server unhealthy.
  1046. Default: 5s
  1047. x-kubernetes-int-or-string: true
  1048. type: object
  1049. kind:
  1050. description: Kind defines the kind of the Service.
  1051. enum:
  1052. - Service
  1053. - TraefikService
  1054. type: string
  1055. name:
  1056. description: |-
  1057. Name defines the name of the referenced Kubernetes Service or TraefikService.
  1058. The differentiation between the two is specified in the Kind field.
  1059. type: string
  1060. namespace:
  1061. description: Namespace defines the namespace of the referenced
  1062. Kubernetes Service or TraefikService.
  1063. type: string
  1064. nativeLB:
  1065. description: |-
  1066. NativeLB controls, when creating the load-balancer,
  1067. whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP.
  1068. The Kubernetes Service itself does load-balance to the pods.
  1069. By default, NativeLB is false.
  1070. type: boolean
  1071. nodePortLB:
  1072. description: |-
  1073. NodePortLB controls, when creating the load-balancer,
  1074. whether the LB's children are directly the nodes internal IPs using the nodePort when the service type is NodePort.
  1075. It allows services to be reachable when Traefik runs externally from the Kubernetes cluster but within the same network of the nodes.
  1076. By default, NodePortLB is false.
  1077. type: boolean
  1078. passHostHeader:
  1079. description: |-
  1080. PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service.
  1081. By default, passHostHeader is true.
  1082. type: boolean
  1083. port:
  1084. anyOf:
  1085. - type: integer
  1086. - type: string
  1087. description: |-
  1088. Port defines the port of a Kubernetes Service.
  1089. This can be a reference to a named port.
  1090. x-kubernetes-int-or-string: true
  1091. responseForwarding:
  1092. description: ResponseForwarding defines how Traefik forwards
  1093. the response from the upstream Kubernetes Service to the
  1094. client.
  1095. properties:
  1096. flushInterval:
  1097. description: |-
  1098. FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body.
  1099. A negative value means to flush immediately after each write to the client.
  1100. This configuration is ignored when ReverseProxy recognizes a response as a streaming response;
  1101. for such responses, writes are flushed to the client immediately.
  1102. Default: 100ms
  1103. type: string
  1104. type: object
  1105. scheme:
  1106. description: |-
  1107. Scheme defines the scheme to use for the request to the upstream Kubernetes Service.
  1108. It defaults to https when Kubernetes Service port is 443, http otherwise.
  1109. type: string
  1110. serversTransport:
  1111. description: |-
  1112. ServersTransport defines the name of ServersTransport resource to use.
  1113. It allows to configure the transport between Traefik and your servers.
  1114. Can only be used on a Kubernetes Service.
  1115. type: string
  1116. sticky:
  1117. description: |-
  1118. Sticky defines the sticky sessions configuration.
  1119. More info: https://doc.traefik.io/traefik/v3.1/routing/services/#sticky-sessions
  1120. properties:
  1121. cookie:
  1122. description: Cookie defines the sticky cookie configuration.
  1123. properties:
  1124. httpOnly:
  1125. description: HTTPOnly defines whether the cookie can
  1126. be accessed by client-side APIs, such as JavaScript.
  1127. type: boolean
  1128. maxAge:
  1129. description: |-
  1130. MaxAge indicates the number of seconds until the cookie expires.
  1131. When set to a negative number, the cookie expires immediately.
  1132. When set to zero, the cookie never expires.
  1133. type: integer
  1134. name:
  1135. description: Name defines the Cookie name.
  1136. type: string
  1137. sameSite:
  1138. description: |-
  1139. SameSite defines the same site policy.
  1140. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
  1141. type: string
  1142. secure:
  1143. description: Secure defines whether the cookie can
  1144. only be transmitted over an encrypted connection
  1145. (i.e. HTTPS).
  1146. type: boolean
  1147. type: object
  1148. type: object
  1149. strategy:
  1150. description: |-
  1151. Strategy defines the load balancing strategy between the servers.
  1152. RoundRobin is the only supported value at the moment.
  1153. type: string
  1154. weight:
  1155. description: |-
  1156. Weight defines the weight and should only be specified when Name references a TraefikService object
  1157. (and to be precise, one that embeds a Weighted Round Robin).
  1158. type: integer
  1159. required:
  1160. - name
  1161. type: object
  1162. status:
  1163. description: |-
  1164. Status defines which status or range of statuses should result in an error page.
  1165. It can be either a status code as a number (500),
  1166. as multiple comma-separated numbers (500,502),
  1167. as ranges by separating two codes with a dash (500-599),
  1168. or a combination of the two (404,418,500-599).
  1169. items:
  1170. type: string
  1171. type: array
  1172. type: object
  1173. forwardAuth:
  1174. description: |-
  1175. ForwardAuth holds the forward auth middleware configuration.
  1176. This middleware delegates the request authentication to a Service.
  1177. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/forwardauth/
  1178. properties:
  1179. addAuthCookiesToResponse:
  1180. description: AddAuthCookiesToResponse defines the list of cookies
  1181. to copy from the authentication server response to the response.
  1182. items:
  1183. type: string
  1184. type: array
  1185. address:
  1186. description: Address defines the authentication server address.
  1187. type: string
  1188. authRequestHeaders:
  1189. description: |-
  1190. AuthRequestHeaders defines the list of the headers to copy from the request to the authentication server.
  1191. If not set or empty then all request headers are passed.
  1192. items:
  1193. type: string
  1194. type: array
  1195. authResponseHeaders:
  1196. description: AuthResponseHeaders defines the list of headers to
  1197. copy from the authentication server response and set on forwarded
  1198. request, replacing any existing conflicting headers.
  1199. items:
  1200. type: string
  1201. type: array
  1202. authResponseHeadersRegex:
  1203. description: |-
  1204. AuthResponseHeadersRegex defines the regex to match headers to copy from the authentication server response and set on forwarded request, after stripping all headers that match the regex.
  1205. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/forwardauth/#authresponseheadersregex
  1206. type: string
  1207. tls:
  1208. description: TLS defines the configuration used to secure the
  1209. connection to the authentication server.
  1210. properties:
  1211. caOptional:
  1212. description: 'Deprecated: TLS client authentication is a server
  1213. side option (see https://github.com/golang/go/blob/740a490f71d026bb7d2d13cb8fa2d6d6e0572b70/src/crypto/tls/common.go#L634).'
  1214. type: boolean
  1215. caSecret:
  1216. description: |-
  1217. CASecret is the name of the referenced Kubernetes Secret containing the CA to validate the server certificate.
  1218. The CA certificate is extracted from key `tls.ca` or `ca.crt`.
  1219. type: string
  1220. certSecret:
  1221. description: |-
  1222. CertSecret is the name of the referenced Kubernetes Secret containing the client certificate.
  1223. The client certificate is extracted from the keys `tls.crt` and `tls.key`.
  1224. type: string
  1225. insecureSkipVerify:
  1226. description: InsecureSkipVerify defines whether the server
  1227. certificates should be validated.
  1228. type: boolean
  1229. type: object
  1230. trustForwardHeader:
  1231. description: 'TrustForwardHeader defines whether to trust (ie:
  1232. forward) all X-Forwarded-* headers.'
  1233. type: boolean
  1234. type: object
  1235. grpcWeb:
  1236. description: |-
  1237. GrpcWeb holds the gRPC web middleware configuration.
  1238. This middleware converts a gRPC web request to an HTTP/2 gRPC request.
  1239. properties:
  1240. allowOrigins:
  1241. description: |-
  1242. AllowOrigins is a list of allowable origins.
  1243. Can also be a wildcard origin "*".
  1244. items:
  1245. type: string
  1246. type: array
  1247. type: object
  1248. headers:
  1249. description: |-
  1250. Headers holds the headers middleware configuration.
  1251. This middleware manages the requests and responses headers.
  1252. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/headers/#customrequestheaders
  1253. properties:
  1254. accessControlAllowCredentials:
  1255. description: AccessControlAllowCredentials defines whether the
  1256. request can include user credentials.
  1257. type: boolean
  1258. accessControlAllowHeaders:
  1259. description: AccessControlAllowHeaders defines the Access-Control-Request-Headers
  1260. values sent in preflight response.
  1261. items:
  1262. type: string
  1263. type: array
  1264. accessControlAllowMethods:
  1265. description: AccessControlAllowMethods defines the Access-Control-Request-Method
  1266. values sent in preflight response.
  1267. items:
  1268. type: string
  1269. type: array
  1270. accessControlAllowOriginList:
  1271. description: AccessControlAllowOriginList is a list of allowable
  1272. origins. Can also be a wildcard origin "*".
  1273. items:
  1274. type: string
  1275. type: array
  1276. accessControlAllowOriginListRegex:
  1277. description: AccessControlAllowOriginListRegex is a list of allowable
  1278. origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/).
  1279. items:
  1280. type: string
  1281. type: array
  1282. accessControlExposeHeaders:
  1283. description: AccessControlExposeHeaders defines the Access-Control-Expose-Headers
  1284. values sent in preflight response.
  1285. items:
  1286. type: string
  1287. type: array
  1288. accessControlMaxAge:
  1289. description: AccessControlMaxAge defines the time that a preflight
  1290. request may be cached.
  1291. format: int64
  1292. type: integer
  1293. addVaryHeader:
  1294. description: AddVaryHeader defines whether the Vary header is
  1295. automatically added/updated when the AccessControlAllowOriginList
  1296. is set.
  1297. type: boolean
  1298. allowedHosts:
  1299. description: AllowedHosts defines the fully qualified list of
  1300. allowed domain names.
  1301. items:
  1302. type: string
  1303. type: array
  1304. browserXssFilter:
  1305. description: BrowserXSSFilter defines whether to add the X-XSS-Protection
  1306. header with the value 1; mode=block.
  1307. type: boolean
  1308. contentSecurityPolicy:
  1309. description: ContentSecurityPolicy defines the Content-Security-Policy
  1310. header value.
  1311. type: string
  1312. contentSecurityPolicyReportOnly:
  1313. description: ContentSecurityPolicyReportOnly defines the Content-Security-Policy-Report-Only
  1314. header value.
  1315. type: string
  1316. contentTypeNosniff:
  1317. description: ContentTypeNosniff defines whether to add the X-Content-Type-Options
  1318. header with the nosniff value.
  1319. type: boolean
  1320. customBrowserXSSValue:
  1321. description: |-
  1322. CustomBrowserXSSValue defines the X-XSS-Protection header value.
  1323. This overrides the BrowserXssFilter option.
  1324. type: string
  1325. customFrameOptionsValue:
  1326. description: |-
  1327. CustomFrameOptionsValue defines the X-Frame-Options header value.
  1328. This overrides the FrameDeny option.
  1329. type: string
  1330. customRequestHeaders:
  1331. additionalProperties:
  1332. type: string
  1333. description: CustomRequestHeaders defines the header names and
  1334. values to apply to the request.
  1335. type: object
  1336. customResponseHeaders:
  1337. additionalProperties:
  1338. type: string
  1339. description: CustomResponseHeaders defines the header names and
  1340. values to apply to the response.
  1341. type: object
  1342. featurePolicy:
  1343. description: 'Deprecated: FeaturePolicy option is deprecated,
  1344. please use PermissionsPolicy instead.'
  1345. type: string
  1346. forceSTSHeader:
  1347. description: ForceSTSHeader defines whether to add the STS header
  1348. even when the connection is HTTP.
  1349. type: boolean
  1350. frameDeny:
  1351. description: FrameDeny defines whether to add the X-Frame-Options
  1352. header with the DENY value.
  1353. type: boolean
  1354. hostsProxyHeaders:
  1355. description: HostsProxyHeaders defines the header keys that may
  1356. hold a proxied hostname value for the request.
  1357. items:
  1358. type: string
  1359. type: array
  1360. isDevelopment:
  1361. description: |-
  1362. IsDevelopment defines whether to mitigate the unwanted effects of the AllowedHosts, SSL, and STS options when developing.
  1363. Usually testing takes place using HTTP, not HTTPS, and on localhost, not your production domain.
  1364. If you would like your development environment to mimic production with complete Host blocking, SSL redirects,
  1365. and STS headers, leave this as false.
  1366. type: boolean
  1367. permissionsPolicy:
  1368. description: |-
  1369. PermissionsPolicy defines the Permissions-Policy header value.
  1370. This allows sites to control browser features.
  1371. type: string
  1372. publicKey:
  1373. description: PublicKey is the public key that implements HPKP
  1374. to prevent MITM attacks with forged certificates.
  1375. type: string
  1376. referrerPolicy:
  1377. description: |-
  1378. ReferrerPolicy defines the Referrer-Policy header value.
  1379. This allows sites to control whether browsers forward the Referer header to other sites.
  1380. type: string
  1381. sslForceHost:
  1382. description: 'Deprecated: SSLForceHost option is deprecated, please
  1383. use RedirectRegex instead.'
  1384. type: boolean
  1385. sslHost:
  1386. description: 'Deprecated: SSLHost option is deprecated, please
  1387. use RedirectRegex instead.'
  1388. type: string
  1389. sslProxyHeaders:
  1390. additionalProperties:
  1391. type: string
  1392. description: |-
  1393. SSLProxyHeaders defines the header keys with associated values that would indicate a valid HTTPS request.
  1394. It can be useful when using other proxies (example: "X-Forwarded-Proto": "https").
  1395. type: object
  1396. sslRedirect:
  1397. description: 'Deprecated: SSLRedirect option is deprecated, please
  1398. use EntryPoint redirection or RedirectScheme instead.'
  1399. type: boolean
  1400. sslTemporaryRedirect:
  1401. description: 'Deprecated: SSLTemporaryRedirect option is deprecated,
  1402. please use EntryPoint redirection or RedirectScheme instead.'
  1403. type: boolean
  1404. stsIncludeSubdomains:
  1405. description: STSIncludeSubdomains defines whether the includeSubDomains
  1406. directive is appended to the Strict-Transport-Security header.
  1407. type: boolean
  1408. stsPreload:
  1409. description: STSPreload defines whether the preload flag is appended
  1410. to the Strict-Transport-Security header.
  1411. type: boolean
  1412. stsSeconds:
  1413. description: |-
  1414. STSSeconds defines the max-age of the Strict-Transport-Security header.
  1415. If set to 0, the header is not set.
  1416. format: int64
  1417. type: integer
  1418. type: object
  1419. inFlightReq:
  1420. description: |-
  1421. InFlightReq holds the in-flight request middleware configuration.
  1422. This middleware limits the number of requests being processed and served concurrently.
  1423. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/inflightreq/
  1424. properties:
  1425. amount:
  1426. description: |-
  1427. Amount defines the maximum amount of allowed simultaneous in-flight request.
  1428. The middleware responds with HTTP 429 Too Many Requests if there are already amount requests in progress (based on the same sourceCriterion strategy).
  1429. format: int64
  1430. type: integer
  1431. sourceCriterion:
  1432. description: |-
  1433. SourceCriterion defines what criterion is used to group requests as originating from a common source.
  1434. If several strategies are defined at the same time, an error will be raised.
  1435. If none are set, the default is to use the requestHost.
  1436. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/inflightreq/#sourcecriterion
  1437. properties:
  1438. ipStrategy:
  1439. description: |-
  1440. IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP.
  1441. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/ipallowlist/#ipstrategy
  1442. properties:
  1443. depth:
  1444. description: Depth tells Traefik to use the X-Forwarded-For
  1445. header and take the IP located at the depth position
  1446. (starting from the right).
  1447. type: integer
  1448. excludedIPs:
  1449. description: ExcludedIPs configures Traefik to scan the
  1450. X-Forwarded-For header and select the first IP not in
  1451. the list.
  1452. items:
  1453. type: string
  1454. type: array
  1455. type: object
  1456. requestHeaderName:
  1457. description: RequestHeaderName defines the name of the header
  1458. used to group incoming requests.
  1459. type: string
  1460. requestHost:
  1461. description: RequestHost defines whether to consider the request
  1462. Host as the source.
  1463. type: boolean
  1464. type: object
  1465. type: object
  1466. ipAllowList:
  1467. description: |-
  1468. IPAllowList holds the IP allowlist middleware configuration.
  1469. This middleware limits allowed requests based on the client IP.
  1470. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/ipallowlist/
  1471. properties:
  1472. ipStrategy:
  1473. description: |-
  1474. IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP.
  1475. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/ipallowlist/#ipstrategy
  1476. properties:
  1477. depth:
  1478. description: Depth tells Traefik to use the X-Forwarded-For
  1479. header and take the IP located at the depth position (starting
  1480. from the right).
  1481. type: integer
  1482. excludedIPs:
  1483. description: ExcludedIPs configures Traefik to scan the X-Forwarded-For
  1484. header and select the first IP not in the list.
  1485. items:
  1486. type: string
  1487. type: array
  1488. type: object
  1489. rejectStatusCode:
  1490. description: |-
  1491. RejectStatusCode defines the HTTP status code used for refused requests.
  1492. If not set, the default is 403 (Forbidden).
  1493. type: integer
  1494. sourceRange:
  1495. description: SourceRange defines the set of allowed IPs (or ranges
  1496. of allowed IPs by using CIDR notation).
  1497. items:
  1498. type: string
  1499. type: array
  1500. type: object
  1501. ipWhiteList:
  1502. description: 'Deprecated: please use IPAllowList instead.'
  1503. properties:
  1504. ipStrategy:
  1505. description: |-
  1506. IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP.
  1507. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/ipallowlist/#ipstrategy
  1508. properties:
  1509. depth:
  1510. description: Depth tells Traefik to use the X-Forwarded-For
  1511. header and take the IP located at the depth position (starting
  1512. from the right).
  1513. type: integer
  1514. excludedIPs:
  1515. description: ExcludedIPs configures Traefik to scan the X-Forwarded-For
  1516. header and select the first IP not in the list.
  1517. items:
  1518. type: string
  1519. type: array
  1520. type: object
  1521. sourceRange:
  1522. description: SourceRange defines the set of allowed IPs (or ranges
  1523. of allowed IPs by using CIDR notation). Required.
  1524. items:
  1525. type: string
  1526. type: array
  1527. type: object
  1528. passTLSClientCert:
  1529. description: |-
  1530. PassTLSClientCert holds the pass TLS client cert middleware configuration.
  1531. This middleware adds the selected data from the passed client TLS certificate to a header.
  1532. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/passtlsclientcert/
  1533. properties:
  1534. info:
  1535. description: Info selects the specific client certificate details
  1536. you want to add to the X-Forwarded-Tls-Client-Cert-Info header.
  1537. properties:
  1538. issuer:
  1539. description: Issuer defines the client certificate issuer
  1540. details to add to the X-Forwarded-Tls-Client-Cert-Info header.
  1541. properties:
  1542. commonName:
  1543. description: CommonName defines whether to add the organizationalUnit
  1544. information into the issuer.
  1545. type: boolean
  1546. country:
  1547. description: Country defines whether to add the country
  1548. information into the issuer.
  1549. type: boolean
  1550. domainComponent:
  1551. description: DomainComponent defines whether to add the
  1552. domainComponent information into the issuer.
  1553. type: boolean
  1554. locality:
  1555. description: Locality defines whether to add the locality
  1556. information into the issuer.
  1557. type: boolean
  1558. organization:
  1559. description: Organization defines whether to add the organization
  1560. information into the issuer.
  1561. type: boolean
  1562. province:
  1563. description: Province defines whether to add the province
  1564. information into the issuer.
  1565. type: boolean
  1566. serialNumber:
  1567. description: SerialNumber defines whether to add the serialNumber
  1568. information into the issuer.
  1569. type: boolean
  1570. type: object
  1571. notAfter:
  1572. description: NotAfter defines whether to add the Not After
  1573. information from the Validity part.
  1574. type: boolean
  1575. notBefore:
  1576. description: NotBefore defines whether to add the Not Before
  1577. information from the Validity part.
  1578. type: boolean
  1579. sans:
  1580. description: Sans defines whether to add the Subject Alternative
  1581. Name information from the Subject Alternative Name part.
  1582. type: boolean
  1583. serialNumber:
  1584. description: SerialNumber defines whether to add the client
  1585. serialNumber information.
  1586. type: boolean
  1587. subject:
  1588. description: Subject defines the client certificate subject
  1589. details to add to the X-Forwarded-Tls-Client-Cert-Info header.
  1590. properties:
  1591. commonName:
  1592. description: CommonName defines whether to add the organizationalUnit
  1593. information into the subject.
  1594. type: boolean
  1595. country:
  1596. description: Country defines whether to add the country
  1597. information into the subject.
  1598. type: boolean
  1599. domainComponent:
  1600. description: DomainComponent defines whether to add the
  1601. domainComponent information into the subject.
  1602. type: boolean
  1603. locality:
  1604. description: Locality defines whether to add the locality
  1605. information into the subject.
  1606. type: boolean
  1607. organization:
  1608. description: Organization defines whether to add the organization
  1609. information into the subject.
  1610. type: boolean
  1611. organizationalUnit:
  1612. description: OrganizationalUnit defines whether to add
  1613. the organizationalUnit information into the subject.
  1614. type: boolean
  1615. province:
  1616. description: Province defines whether to add the province
  1617. information into the subject.
  1618. type: boolean
  1619. serialNumber:
  1620. description: SerialNumber defines whether to add the serialNumber
  1621. information into the subject.
  1622. type: boolean
  1623. type: object
  1624. type: object
  1625. pem:
  1626. description: PEM sets the X-Forwarded-Tls-Client-Cert header with
  1627. the certificate.
  1628. type: boolean
  1629. type: object
  1630. plugin:
  1631. additionalProperties:
  1632. x-kubernetes-preserve-unknown-fields: true
  1633. description: |-
  1634. Plugin defines the middleware plugin configuration.
  1635. More info: https://doc.traefik.io/traefik/plugins/
  1636. type: object
  1637. rateLimit:
  1638. description: |-
  1639. RateLimit holds the rate limit configuration.
  1640. This middleware ensures that services will receive a fair amount of requests, and allows one to define what fair is.
  1641. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/ratelimit/
  1642. properties:
  1643. average:
  1644. description: |-
  1645. Average is the maximum rate, by default in requests/s, allowed for the given source.
  1646. It defaults to 0, which means no rate limiting.
  1647. The rate is actually defined by dividing Average by Period. So for a rate below 1req/s,
  1648. one needs to define a Period larger than a second.
  1649. format: int64
  1650. type: integer
  1651. burst:
  1652. description: |-
  1653. Burst is the maximum number of requests allowed to arrive in the same arbitrarily small period of time.
  1654. It defaults to 1.
  1655. format: int64
  1656. type: integer
  1657. period:
  1658. anyOf:
  1659. - type: integer
  1660. - type: string
  1661. description: |-
  1662. Period, in combination with Average, defines the actual maximum rate, such as:
  1663. r = Average / Period. It defaults to a second.
  1664. x-kubernetes-int-or-string: true
  1665. sourceCriterion:
  1666. description: |-
  1667. SourceCriterion defines what criterion is used to group requests as originating from a common source.
  1668. If several strategies are defined at the same time, an error will be raised.
  1669. If none are set, the default is to use the request's remote address field (as an ipStrategy).
  1670. properties:
  1671. ipStrategy:
  1672. description: |-
  1673. IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP.
  1674. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/ipallowlist/#ipstrategy
  1675. properties:
  1676. depth:
  1677. description: Depth tells Traefik to use the X-Forwarded-For
  1678. header and take the IP located at the depth position
  1679. (starting from the right).
  1680. type: integer
  1681. excludedIPs:
  1682. description: ExcludedIPs configures Traefik to scan the
  1683. X-Forwarded-For header and select the first IP not in
  1684. the list.
  1685. items:
  1686. type: string
  1687. type: array
  1688. type: object
  1689. requestHeaderName:
  1690. description: RequestHeaderName defines the name of the header
  1691. used to group incoming requests.
  1692. type: string
  1693. requestHost:
  1694. description: RequestHost defines whether to consider the request
  1695. Host as the source.
  1696. type: boolean
  1697. type: object
  1698. type: object
  1699. redirectRegex:
  1700. description: |-
  1701. RedirectRegex holds the redirect regex middleware configuration.
  1702. This middleware redirects a request using regex matching and replacement.
  1703. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/redirectregex/#regex
  1704. properties:
  1705. permanent:
  1706. description: Permanent defines whether the redirection is permanent
  1707. (301).
  1708. type: boolean
  1709. regex:
  1710. description: Regex defines the regex used to match and capture
  1711. elements from the request URL.
  1712. type: string
  1713. replacement:
  1714. description: Replacement defines how to modify the URL to have
  1715. the new target URL.
  1716. type: string
  1717. type: object
  1718. redirectScheme:
  1719. description: |-
  1720. RedirectScheme holds the redirect scheme middleware configuration.
  1721. This middleware redirects requests from a scheme/port to another.
  1722. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/redirectscheme/
  1723. properties:
  1724. permanent:
  1725. description: Permanent defines whether the redirection is permanent
  1726. (301).
  1727. type: boolean
  1728. port:
  1729. description: Port defines the port of the new URL.
  1730. type: string
  1731. scheme:
  1732. description: Scheme defines the scheme of the new URL.
  1733. type: string
  1734. type: object
  1735. replacePath:
  1736. description: |-
  1737. ReplacePath holds the replace path middleware configuration.
  1738. This middleware replaces the path of the request URL and store the original path in an X-Replaced-Path header.
  1739. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/replacepath/
  1740. properties:
  1741. path:
  1742. description: Path defines the path to use as replacement in the
  1743. request URL.
  1744. type: string
  1745. type: object
  1746. replacePathRegex:
  1747. description: |-
  1748. ReplacePathRegex holds the replace path regex middleware configuration.
  1749. This middleware replaces the path of a URL using regex matching and replacement.
  1750. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/replacepathregex/
  1751. properties:
  1752. regex:
  1753. description: Regex defines the regular expression used to match
  1754. and capture the path from the request URL.
  1755. type: string
  1756. replacement:
  1757. description: Replacement defines the replacement path format,
  1758. which can include captured variables.
  1759. type: string
  1760. type: object
  1761. retry:
  1762. description: |-
  1763. Retry holds the retry middleware configuration.
  1764. This middleware reissues requests a given number of times to a backend server if that server does not reply.
  1765. As soon as the server answers, the middleware stops retrying, regardless of the response status.
  1766. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/retry/
  1767. properties:
  1768. attempts:
  1769. description: Attempts defines how many times the request should
  1770. be retried.
  1771. type: integer
  1772. initialInterval:
  1773. anyOf:
  1774. - type: integer
  1775. - type: string
  1776. description: |-
  1777. InitialInterval defines the first wait time in the exponential backoff series.
  1778. The maximum interval is calculated as twice the initialInterval.
  1779. If unspecified, requests will be retried immediately.
  1780. The value of initialInterval should be provided in seconds or as a valid duration format,
  1781. see https://pkg.go.dev/time#ParseDuration.
  1782. x-kubernetes-int-or-string: true
  1783. type: object
  1784. stripPrefix:
  1785. description: |-
  1786. StripPrefix holds the strip prefix middleware configuration.
  1787. This middleware removes the specified prefixes from the URL path.
  1788. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/stripprefix/
  1789. properties:
  1790. forceSlash:
  1791. description: |-
  1792. Deprecated: ForceSlash option is deprecated, please remove any usage of this option.
  1793. ForceSlash ensures that the resulting stripped path is not the empty string, by replacing it with / when necessary.
  1794. Default: true.
  1795. type: boolean
  1796. prefixes:
  1797. description: Prefixes defines the prefixes to strip from the request
  1798. URL.
  1799. items:
  1800. type: string
  1801. type: array
  1802. type: object
  1803. stripPrefixRegex:
  1804. description: |-
  1805. StripPrefixRegex holds the strip prefix regex middleware configuration.
  1806. This middleware removes the matching prefixes from the URL path.
  1807. More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/stripprefixregex/
  1808. properties:
  1809. regex:
  1810. description: Regex defines the regular expression to match the
  1811. path prefix from the request URL.
  1812. items:
  1813. type: string
  1814. type: array
  1815. type: object
  1816. type: object
  1817. required:
  1818. - metadata
  1819. - spec
  1820. type: object
  1821. served: true
  1822. storage: true
  1823. ---
  1824. apiVersion: apiextensions.k8s.io/v1
  1825. kind: CustomResourceDefinition
  1826. metadata:
  1827. annotations:
  1828. controller-gen.kubebuilder.io/version: v0.14.0
  1829. name: middlewaretcps.traefik.io
  1830. spec:
  1831. group: traefik.io
  1832. names:
  1833. kind: MiddlewareTCP
  1834. listKind: MiddlewareTCPList
  1835. plural: middlewaretcps
  1836. singular: middlewaretcp
  1837. scope: Namespaced
  1838. versions:
  1839. - name: v1alpha1
  1840. schema:
  1841. openAPIV3Schema:
  1842. description: |-
  1843. MiddlewareTCP is the CRD implementation of a Traefik TCP middleware.
  1844. More info: https://doc.traefik.io/traefik/v3.1/middlewares/overview/
  1845. properties:
  1846. apiVersion:
  1847. description: |-
  1848. APIVersion defines the versioned schema of this representation of an object.
  1849. Servers should convert recognized schemas to the latest internal value, and
  1850. may reject unrecognized values.
  1851. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  1852. type: string
  1853. kind:
  1854. description: |-
  1855. Kind is a string value representing the REST resource this object represents.
  1856. Servers may infer this from the endpoint the client submits requests to.
  1857. Cannot be updated.
  1858. In CamelCase.
  1859. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  1860. type: string
  1861. metadata:
  1862. type: object
  1863. spec:
  1864. description: MiddlewareTCPSpec defines the desired state of a MiddlewareTCP.
  1865. properties:
  1866. inFlightConn:
  1867. description: InFlightConn defines the InFlightConn middleware configuration.
  1868. properties:
  1869. amount:
  1870. description: |-
  1871. Amount defines the maximum amount of allowed simultaneous connections.
  1872. The middleware closes the connection if there are already amount connections opened.
  1873. format: int64
  1874. type: integer
  1875. type: object
  1876. ipAllowList:
  1877. description: |-
  1878. IPAllowList defines the IPAllowList middleware configuration.
  1879. This middleware accepts/refuses connections based on the client IP.
  1880. More info: https://doc.traefik.io/traefik/v3.1/middlewares/tcp/ipallowlist/
  1881. properties:
  1882. sourceRange:
  1883. description: SourceRange defines the allowed IPs (or ranges of
  1884. allowed IPs by using CIDR notation).
  1885. items:
  1886. type: string
  1887. type: array
  1888. type: object
  1889. ipWhiteList:
  1890. description: |-
  1891. IPWhiteList defines the IPWhiteList middleware configuration.
  1892. This middleware accepts/refuses connections based on the client IP.
  1893. Deprecated: please use IPAllowList instead.
  1894. More info: https://doc.traefik.io/traefik/v3.1/middlewares/tcp/ipwhitelist/
  1895. properties:
  1896. sourceRange:
  1897. description: SourceRange defines the allowed IPs (or ranges of
  1898. allowed IPs by using CIDR notation).
  1899. items:
  1900. type: string
  1901. type: array
  1902. type: object
  1903. type: object
  1904. required:
  1905. - metadata
  1906. - spec
  1907. type: object
  1908. served: true
  1909. storage: true
  1910. ---
  1911. apiVersion: apiextensions.k8s.io/v1
  1912. kind: CustomResourceDefinition
  1913. metadata:
  1914. annotations:
  1915. controller-gen.kubebuilder.io/version: v0.14.0
  1916. name: serverstransports.traefik.io
  1917. spec:
  1918. group: traefik.io
  1919. names:
  1920. kind: ServersTransport
  1921. listKind: ServersTransportList
  1922. plural: serverstransports
  1923. singular: serverstransport
  1924. scope: Namespaced
  1925. versions:
  1926. - name: v1alpha1
  1927. schema:
  1928. openAPIV3Schema:
  1929. description: |-
  1930. ServersTransport is the CRD implementation of a ServersTransport.
  1931. If no serversTransport is specified, the default@internal will be used.
  1932. The default@internal serversTransport is created from the static configuration.
  1933. More info: https://doc.traefik.io/traefik/v3.1/routing/services/#serverstransport_1
  1934. properties:
  1935. apiVersion:
  1936. description: |-
  1937. APIVersion defines the versioned schema of this representation of an object.
  1938. Servers should convert recognized schemas to the latest internal value, and
  1939. may reject unrecognized values.
  1940. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  1941. type: string
  1942. kind:
  1943. description: |-
  1944. Kind is a string value representing the REST resource this object represents.
  1945. Servers may infer this from the endpoint the client submits requests to.
  1946. Cannot be updated.
  1947. In CamelCase.
  1948. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  1949. type: string
  1950. metadata:
  1951. type: object
  1952. spec:
  1953. description: ServersTransportSpec defines the desired state of a ServersTransport.
  1954. properties:
  1955. certificatesSecrets:
  1956. description: CertificatesSecrets defines a list of secret storing
  1957. client certificates for mTLS.
  1958. items:
  1959. type: string
  1960. type: array
  1961. disableHTTP2:
  1962. description: DisableHTTP2 disables HTTP/2 for connections with backend
  1963. servers.
  1964. type: boolean
  1965. forwardingTimeouts:
  1966. description: ForwardingTimeouts defines the timeouts for requests
  1967. forwarded to the backend servers.
  1968. properties:
  1969. dialTimeout:
  1970. anyOf:
  1971. - type: integer
  1972. - type: string
  1973. description: DialTimeout is the amount of time to wait until a
  1974. connection to a backend server can be established.
  1975. x-kubernetes-int-or-string: true
  1976. idleConnTimeout:
  1977. anyOf:
  1978. - type: integer
  1979. - type: string
  1980. description: IdleConnTimeout is the maximum period for which an
  1981. idle HTTP keep-alive connection will remain open before closing
  1982. itself.
  1983. x-kubernetes-int-or-string: true
  1984. pingTimeout:
  1985. anyOf:
  1986. - type: integer
  1987. - type: string
  1988. description: PingTimeout is the timeout after which the HTTP/2
  1989. connection will be closed if a response to ping is not received.
  1990. x-kubernetes-int-or-string: true
  1991. readIdleTimeout:
  1992. anyOf:
  1993. - type: integer
  1994. - type: string
  1995. description: ReadIdleTimeout is the timeout after which a health
  1996. check using ping frame will be carried out if no frame is received
  1997. on the HTTP/2 connection.
  1998. x-kubernetes-int-or-string: true
  1999. responseHeaderTimeout:
  2000. anyOf:
  2001. - type: integer
  2002. - type: string
  2003. description: ResponseHeaderTimeout is the amount of time to wait
  2004. for a server's response headers after fully writing the request
  2005. (including its body, if any).
  2006. x-kubernetes-int-or-string: true
  2007. type: object
  2008. insecureSkipVerify:
  2009. description: InsecureSkipVerify disables SSL certificate verification.
  2010. type: boolean
  2011. maxIdleConnsPerHost:
  2012. description: MaxIdleConnsPerHost controls the maximum idle (keep-alive)
  2013. to keep per-host.
  2014. type: integer
  2015. peerCertURI:
  2016. description: PeerCertURI defines the peer cert URI used to match against
  2017. SAN URI during the peer certificate verification.
  2018. type: string
  2019. rootCAsSecrets:
  2020. description: RootCAsSecrets defines a list of CA secret used to validate
  2021. self-signed certificate.
  2022. items:
  2023. type: string
  2024. type: array
  2025. serverName:
  2026. description: ServerName defines the server name used to contact the
  2027. server.
  2028. type: string
  2029. spiffe:
  2030. description: Spiffe defines the SPIFFE configuration.
  2031. properties:
  2032. ids:
  2033. description: IDs defines the allowed SPIFFE IDs (takes precedence
  2034. over the SPIFFE TrustDomain).
  2035. items:
  2036. type: string
  2037. type: array
  2038. trustDomain:
  2039. description: TrustDomain defines the allowed SPIFFE trust domain.
  2040. type: string
  2041. type: object
  2042. type: object
  2043. required:
  2044. - metadata
  2045. - spec
  2046. type: object
  2047. served: true
  2048. storage: true
  2049. ---
  2050. apiVersion: apiextensions.k8s.io/v1
  2051. kind: CustomResourceDefinition
  2052. metadata:
  2053. annotations:
  2054. controller-gen.kubebuilder.io/version: v0.14.0
  2055. name: serverstransporttcps.traefik.io
  2056. spec:
  2057. group: traefik.io
  2058. names:
  2059. kind: ServersTransportTCP
  2060. listKind: ServersTransportTCPList
  2061. plural: serverstransporttcps
  2062. singular: serverstransporttcp
  2063. scope: Namespaced
  2064. versions:
  2065. - name: v1alpha1
  2066. schema:
  2067. openAPIV3Schema:
  2068. description: |-
  2069. ServersTransportTCP is the CRD implementation of a TCPServersTransport.
  2070. If no tcpServersTransport is specified, a default one named default@internal will be used.
  2071. The default@internal tcpServersTransport can be configured in the static configuration.
  2072. More info: https://doc.traefik.io/traefik/v3.1/routing/services/#serverstransport_3
  2073. properties:
  2074. apiVersion:
  2075. description: |-
  2076. APIVersion defines the versioned schema of this representation of an object.
  2077. Servers should convert recognized schemas to the latest internal value, and
  2078. may reject unrecognized values.
  2079. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  2080. type: string
  2081. kind:
  2082. description: |-
  2083. Kind is a string value representing the REST resource this object represents.
  2084. Servers may infer this from the endpoint the client submits requests to.
  2085. Cannot be updated.
  2086. In CamelCase.
  2087. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  2088. type: string
  2089. metadata:
  2090. type: object
  2091. spec:
  2092. description: ServersTransportTCPSpec defines the desired state of a ServersTransportTCP.
  2093. properties:
  2094. dialKeepAlive:
  2095. anyOf:
  2096. - type: integer
  2097. - type: string
  2098. description: DialKeepAlive is the interval between keep-alive probes
  2099. for an active network connection. If zero, keep-alive probes are
  2100. sent with a default value (currently 15 seconds), if supported by
  2101. the protocol and operating system. Network protocols or operating
  2102. systems that do not support keep-alives ignore this field. If negative,
  2103. keep-alive probes are disabled.
  2104. x-kubernetes-int-or-string: true
  2105. dialTimeout:
  2106. anyOf:
  2107. - type: integer
  2108. - type: string
  2109. description: DialTimeout is the amount of time to wait until a connection
  2110. to a backend server can be established.
  2111. x-kubernetes-int-or-string: true
  2112. terminationDelay:
  2113. anyOf:
  2114. - type: integer
  2115. - type: string
  2116. description: TerminationDelay defines the delay to wait before fully
  2117. terminating the connection, after one connected peer has closed
  2118. its writing capability.
  2119. x-kubernetes-int-or-string: true
  2120. tls:
  2121. description: TLS defines the TLS configuration
  2122. properties:
  2123. certificatesSecrets:
  2124. description: CertificatesSecrets defines a list of secret storing
  2125. client certificates for mTLS.
  2126. items:
  2127. type: string
  2128. type: array
  2129. insecureSkipVerify:
  2130. description: InsecureSkipVerify disables TLS certificate verification.
  2131. type: boolean
  2132. peerCertURI:
  2133. description: |-
  2134. MaxIdleConnsPerHost controls the maximum idle (keep-alive) to keep per-host.
  2135. PeerCertURI defines the peer cert URI used to match against SAN URI during the peer certificate verification.
  2136. type: string
  2137. rootCAsSecrets:
  2138. description: RootCAsSecrets defines a list of CA secret used to
  2139. validate self-signed certificates.
  2140. items:
  2141. type: string
  2142. type: array
  2143. serverName:
  2144. description: ServerName defines the server name used to contact
  2145. the server.
  2146. type: string
  2147. spiffe:
  2148. description: Spiffe defines the SPIFFE configuration.
  2149. properties:
  2150. ids:
  2151. description: IDs defines the allowed SPIFFE IDs (takes precedence
  2152. over the SPIFFE TrustDomain).
  2153. items:
  2154. type: string
  2155. type: array
  2156. trustDomain:
  2157. description: TrustDomain defines the allowed SPIFFE trust
  2158. domain.
  2159. type: string
  2160. type: object
  2161. type: object
  2162. type: object
  2163. required:
  2164. - metadata
  2165. - spec
  2166. type: object
  2167. served: true
  2168. storage: true
  2169. ---
  2170. apiVersion: apiextensions.k8s.io/v1
  2171. kind: CustomResourceDefinition
  2172. metadata:
  2173. annotations:
  2174. controller-gen.kubebuilder.io/version: v0.14.0
  2175. name: tlsoptions.traefik.io
  2176. spec:
  2177. group: traefik.io
  2178. names:
  2179. kind: TLSOption
  2180. listKind: TLSOptionList
  2181. plural: tlsoptions
  2182. singular: tlsoption
  2183. scope: Namespaced
  2184. versions:
  2185. - name: v1alpha1
  2186. schema:
  2187. openAPIV3Schema:
  2188. description: |-
  2189. TLSOption is the CRD implementation of a Traefik TLS Option, allowing to configure some parameters of the TLS connection.
  2190. More info: https://doc.traefik.io/traefik/v3.1/https/tls/#tls-options
  2191. properties:
  2192. apiVersion:
  2193. description: |-
  2194. APIVersion defines the versioned schema of this representation of an object.
  2195. Servers should convert recognized schemas to the latest internal value, and
  2196. may reject unrecognized values.
  2197. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  2198. type: string
  2199. kind:
  2200. description: |-
  2201. Kind is a string value representing the REST resource this object represents.
  2202. Servers may infer this from the endpoint the client submits requests to.
  2203. Cannot be updated.
  2204. In CamelCase.
  2205. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  2206. type: string
  2207. metadata:
  2208. type: object
  2209. spec:
  2210. description: TLSOptionSpec defines the desired state of a TLSOption.
  2211. properties:
  2212. alpnProtocols:
  2213. description: |-
  2214. ALPNProtocols defines the list of supported application level protocols for the TLS handshake, in order of preference.
  2215. More info: https://doc.traefik.io/traefik/v3.1/https/tls/#alpn-protocols
  2216. items:
  2217. type: string
  2218. type: array
  2219. cipherSuites:
  2220. description: |-
  2221. CipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2.
  2222. More info: https://doc.traefik.io/traefik/v3.1/https/tls/#cipher-suites
  2223. items:
  2224. type: string
  2225. type: array
  2226. clientAuth:
  2227. description: ClientAuth defines the server's policy for TLS Client
  2228. Authentication.
  2229. properties:
  2230. clientAuthType:
  2231. description: ClientAuthType defines the client authentication
  2232. type to apply.
  2233. enum:
  2234. - NoClientCert
  2235. - RequestClientCert
  2236. - RequireAnyClientCert
  2237. - VerifyClientCertIfGiven
  2238. - RequireAndVerifyClientCert
  2239. type: string
  2240. secretNames:
  2241. description: SecretNames defines the names of the referenced Kubernetes
  2242. Secret storing certificate details.
  2243. items:
  2244. type: string
  2245. type: array
  2246. type: object
  2247. curvePreferences:
  2248. description: |-
  2249. CurvePreferences defines the preferred elliptic curves in a specific order.
  2250. More info: https://doc.traefik.io/traefik/v3.1/https/tls/#curve-preferences
  2251. items:
  2252. type: string
  2253. type: array
  2254. maxVersion:
  2255. description: |-
  2256. MaxVersion defines the maximum TLS version that Traefik will accept.
  2257. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13.
  2258. Default: None.
  2259. type: string
  2260. minVersion:
  2261. description: |-
  2262. MinVersion defines the minimum TLS version that Traefik will accept.
  2263. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13.
  2264. Default: VersionTLS10.
  2265. type: string
  2266. preferServerCipherSuites:
  2267. description: |-
  2268. PreferServerCipherSuites defines whether the server chooses a cipher suite among his own instead of among the client's.
  2269. It is enabled automatically when minVersion or maxVersion is set.
  2270. Deprecated: https://github.com/golang/go/issues/45430
  2271. type: boolean
  2272. sniStrict:
  2273. description: SniStrict defines whether Traefik allows connections
  2274. from clients connections that do not specify a server_name extension.
  2275. type: boolean
  2276. type: object
  2277. required:
  2278. - metadata
  2279. - spec
  2280. type: object
  2281. served: true
  2282. storage: true
  2283. ---
  2284. apiVersion: apiextensions.k8s.io/v1
  2285. kind: CustomResourceDefinition
  2286. metadata:
  2287. annotations:
  2288. controller-gen.kubebuilder.io/version: v0.14.0
  2289. name: tlsstores.traefik.io
  2290. spec:
  2291. group: traefik.io
  2292. names:
  2293. kind: TLSStore
  2294. listKind: TLSStoreList
  2295. plural: tlsstores
  2296. singular: tlsstore
  2297. scope: Namespaced
  2298. versions:
  2299. - name: v1alpha1
  2300. schema:
  2301. openAPIV3Schema:
  2302. description: |-
  2303. TLSStore is the CRD implementation of a Traefik TLS Store.
  2304. For the time being, only the TLSStore named default is supported.
  2305. This means that you cannot have two stores that are named default in different Kubernetes namespaces.
  2306. More info: https://doc.traefik.io/traefik/v3.1/https/tls/#certificates-stores
  2307. properties:
  2308. apiVersion:
  2309. description: |-
  2310. APIVersion defines the versioned schema of this representation of an object.
  2311. Servers should convert recognized schemas to the latest internal value, and
  2312. may reject unrecognized values.
  2313. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  2314. type: string
  2315. kind:
  2316. description: |-
  2317. Kind is a string value representing the REST resource this object represents.
  2318. Servers may infer this from the endpoint the client submits requests to.
  2319. Cannot be updated.
  2320. In CamelCase.
  2321. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  2322. type: string
  2323. metadata:
  2324. type: object
  2325. spec:
  2326. description: TLSStoreSpec defines the desired state of a TLSStore.
  2327. properties:
  2328. certificates:
  2329. description: Certificates is a list of secret names, each secret holding
  2330. a key/certificate pair to add to the store.
  2331. items:
  2332. description: Certificate holds a secret name for the TLSStore resource.
  2333. properties:
  2334. secretName:
  2335. description: SecretName is the name of the referenced Kubernetes
  2336. Secret to specify the certificate details.
  2337. type: string
  2338. required:
  2339. - secretName
  2340. type: object
  2341. type: array
  2342. defaultCertificate:
  2343. description: DefaultCertificate defines the default certificate configuration.
  2344. properties:
  2345. secretName:
  2346. description: SecretName is the name of the referenced Kubernetes
  2347. Secret to specify the certificate details.
  2348. type: string
  2349. required:
  2350. - secretName
  2351. type: object
  2352. defaultGeneratedCert:
  2353. description: DefaultGeneratedCert defines the default generated certificate
  2354. configuration.
  2355. properties:
  2356. domain:
  2357. description: Domain is the domain definition for the DefaultCertificate.
  2358. properties:
  2359. main:
  2360. description: Main defines the main domain name.
  2361. type: string
  2362. sans:
  2363. description: SANs defines the subject alternative domain names.
  2364. items:
  2365. type: string
  2366. type: array
  2367. type: object
  2368. resolver:
  2369. description: Resolver is the name of the resolver that will be
  2370. used to issue the DefaultCertificate.
  2371. type: string
  2372. type: object
  2373. type: object
  2374. required:
  2375. - metadata
  2376. - spec
  2377. type: object
  2378. served: true
  2379. storage: true
  2380. ---
  2381. apiVersion: apiextensions.k8s.io/v1
  2382. kind: CustomResourceDefinition
  2383. metadata:
  2384. annotations:
  2385. controller-gen.kubebuilder.io/version: v0.14.0
  2386. name: traefikservices.traefik.io
  2387. spec:
  2388. group: traefik.io
  2389. names:
  2390. kind: TraefikService
  2391. listKind: TraefikServiceList
  2392. plural: traefikservices
  2393. singular: traefikservice
  2394. scope: Namespaced
  2395. versions:
  2396. - name: v1alpha1
  2397. schema:
  2398. openAPIV3Schema:
  2399. description: |-
  2400. TraefikService is the CRD implementation of a Traefik Service.
  2401. TraefikService object allows to:
  2402. - Apply weight to Services on load-balancing
  2403. - Mirror traffic on services
  2404. More info: https://doc.traefik.io/traefik/v3.1/routing/providers/kubernetes-crd/#kind-traefikservice
  2405. properties:
  2406. apiVersion:
  2407. description: |-
  2408. APIVersion defines the versioned schema of this representation of an object.
  2409. Servers should convert recognized schemas to the latest internal value, and
  2410. may reject unrecognized values.
  2411. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  2412. type: string
  2413. kind:
  2414. description: |-
  2415. Kind is a string value representing the REST resource this object represents.
  2416. Servers may infer this from the endpoint the client submits requests to.
  2417. Cannot be updated.
  2418. In CamelCase.
  2419. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  2420. type: string
  2421. metadata:
  2422. type: object
  2423. spec:
  2424. description: TraefikServiceSpec defines the desired state of a TraefikService.
  2425. properties:
  2426. mirroring:
  2427. description: Mirroring defines the Mirroring service configuration.
  2428. properties:
  2429. healthCheck:
  2430. description: Healthcheck defines health checks for ExternalName
  2431. services.
  2432. properties:
  2433. followRedirects:
  2434. description: |-
  2435. FollowRedirects defines whether redirects should be followed during the health check calls.
  2436. Default: true
  2437. type: boolean
  2438. headers:
  2439. additionalProperties:
  2440. type: string
  2441. description: Headers defines custom headers to be sent to
  2442. the health check endpoint.
  2443. type: object
  2444. hostname:
  2445. description: Hostname defines the value of hostname in the
  2446. Host header of the health check request.
  2447. type: string
  2448. interval:
  2449. anyOf:
  2450. - type: integer
  2451. - type: string
  2452. description: |-
  2453. Interval defines the frequency of the health check calls.
  2454. Default: 30s
  2455. x-kubernetes-int-or-string: true
  2456. method:
  2457. description: Method defines the healthcheck method.
  2458. type: string
  2459. mode:
  2460. description: |-
  2461. Mode defines the health check mode.
  2462. If defined to grpc, will use the gRPC health check protocol to probe the server.
  2463. Default: http
  2464. type: string
  2465. path:
  2466. description: Path defines the server URL path for the health
  2467. check endpoint.
  2468. type: string
  2469. port:
  2470. description: Port defines the server URL port for the health
  2471. check endpoint.
  2472. type: integer
  2473. scheme:
  2474. description: Scheme replaces the server URL scheme for the
  2475. health check endpoint.
  2476. type: string
  2477. status:
  2478. description: Status defines the expected HTTP status code
  2479. of the response to the health check request.
  2480. type: integer
  2481. timeout:
  2482. anyOf:
  2483. - type: integer
  2484. - type: string
  2485. description: |-
  2486. Timeout defines the maximum duration Traefik will wait for a health check request before considering the server unhealthy.
  2487. Default: 5s
  2488. x-kubernetes-int-or-string: true
  2489. type: object
  2490. kind:
  2491. description: Kind defines the kind of the Service.
  2492. enum:
  2493. - Service
  2494. - TraefikService
  2495. type: string
  2496. maxBodySize:
  2497. description: |-
  2498. MaxBodySize defines the maximum size allowed for the body of the request.
  2499. If the body is larger, the request is not mirrored.
  2500. Default value is -1, which means unlimited size.
  2501. format: int64
  2502. type: integer
  2503. mirrors:
  2504. description: Mirrors defines the list of mirrors where Traefik
  2505. will duplicate the traffic.
  2506. items:
  2507. description: MirrorService holds the mirror configuration.
  2508. properties:
  2509. healthCheck:
  2510. description: Healthcheck defines health checks for ExternalName
  2511. services.
  2512. properties:
  2513. followRedirects:
  2514. description: |-
  2515. FollowRedirects defines whether redirects should be followed during the health check calls.
  2516. Default: true
  2517. type: boolean
  2518. headers:
  2519. additionalProperties:
  2520. type: string
  2521. description: Headers defines custom headers to be sent
  2522. to the health check endpoint.
  2523. type: object
  2524. hostname:
  2525. description: Hostname defines the value of hostname
  2526. in the Host header of the health check request.
  2527. type: string
  2528. interval:
  2529. anyOf:
  2530. - type: integer
  2531. - type: string
  2532. description: |-
  2533. Interval defines the frequency of the health check calls.
  2534. Default: 30s
  2535. x-kubernetes-int-or-string: true
  2536. method:
  2537. description: Method defines the healthcheck method.
  2538. type: string
  2539. mode:
  2540. description: |-
  2541. Mode defines the health check mode.
  2542. If defined to grpc, will use the gRPC health check protocol to probe the server.
  2543. Default: http
  2544. type: string
  2545. path:
  2546. description: Path defines the server URL path for the
  2547. health check endpoint.
  2548. type: string
  2549. port:
  2550. description: Port defines the server URL port for the
  2551. health check endpoint.
  2552. type: integer
  2553. scheme:
  2554. description: Scheme replaces the server URL scheme for
  2555. the health check endpoint.
  2556. type: string
  2557. status:
  2558. description: Status defines the expected HTTP status
  2559. code of the response to the health check request.
  2560. type: integer
  2561. timeout:
  2562. anyOf:
  2563. - type: integer
  2564. - type: string
  2565. description: |-
  2566. Timeout defines the maximum duration Traefik will wait for a health check request before considering the server unhealthy.
  2567. Default: 5s
  2568. x-kubernetes-int-or-string: true
  2569. type: object
  2570. kind:
  2571. description: Kind defines the kind of the Service.
  2572. enum:
  2573. - Service
  2574. - TraefikService
  2575. type: string
  2576. name:
  2577. description: |-
  2578. Name defines the name of the referenced Kubernetes Service or TraefikService.
  2579. The differentiation between the two is specified in the Kind field.
  2580. type: string
  2581. namespace:
  2582. description: Namespace defines the namespace of the referenced
  2583. Kubernetes Service or TraefikService.
  2584. type: string
  2585. nativeLB:
  2586. description: |-
  2587. NativeLB controls, when creating the load-balancer,
  2588. whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP.
  2589. The Kubernetes Service itself does load-balance to the pods.
  2590. By default, NativeLB is false.
  2591. type: boolean
  2592. nodePortLB:
  2593. description: |-
  2594. NodePortLB controls, when creating the load-balancer,
  2595. whether the LB's children are directly the nodes internal IPs using the nodePort when the service type is NodePort.
  2596. It allows services to be reachable when Traefik runs externally from the Kubernetes cluster but within the same network of the nodes.
  2597. By default, NodePortLB is false.
  2598. type: boolean
  2599. passHostHeader:
  2600. description: |-
  2601. PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service.
  2602. By default, passHostHeader is true.
  2603. type: boolean
  2604. percent:
  2605. description: |-
  2606. Percent defines the part of the traffic to mirror.
  2607. Supported values: 0 to 100.
  2608. type: integer
  2609. port:
  2610. anyOf:
  2611. - type: integer
  2612. - type: string
  2613. description: |-
  2614. Port defines the port of a Kubernetes Service.
  2615. This can be a reference to a named port.
  2616. x-kubernetes-int-or-string: true
  2617. responseForwarding:
  2618. description: ResponseForwarding defines how Traefik forwards
  2619. the response from the upstream Kubernetes Service to the
  2620. client.
  2621. properties:
  2622. flushInterval:
  2623. description: |-
  2624. FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body.
  2625. A negative value means to flush immediately after each write to the client.
  2626. This configuration is ignored when ReverseProxy recognizes a response as a streaming response;
  2627. for such responses, writes are flushed to the client immediately.
  2628. Default: 100ms
  2629. type: string
  2630. type: object
  2631. scheme:
  2632. description: |-
  2633. Scheme defines the scheme to use for the request to the upstream Kubernetes Service.
  2634. It defaults to https when Kubernetes Service port is 443, http otherwise.
  2635. type: string
  2636. serversTransport:
  2637. description: |-
  2638. ServersTransport defines the name of ServersTransport resource to use.
  2639. It allows to configure the transport between Traefik and your servers.
  2640. Can only be used on a Kubernetes Service.
  2641. type: string
  2642. sticky:
  2643. description: |-
  2644. Sticky defines the sticky sessions configuration.
  2645. More info: https://doc.traefik.io/traefik/v3.1/routing/services/#sticky-sessions
  2646. properties:
  2647. cookie:
  2648. description: Cookie defines the sticky cookie configuration.
  2649. properties:
  2650. httpOnly:
  2651. description: HTTPOnly defines whether the cookie
  2652. can be accessed by client-side APIs, such as JavaScript.
  2653. type: boolean
  2654. maxAge:
  2655. description: |-
  2656. MaxAge indicates the number of seconds until the cookie expires.
  2657. When set to a negative number, the cookie expires immediately.
  2658. When set to zero, the cookie never expires.
  2659. type: integer
  2660. name:
  2661. description: Name defines the Cookie name.
  2662. type: string
  2663. sameSite:
  2664. description: |-
  2665. SameSite defines the same site policy.
  2666. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
  2667. type: string
  2668. secure:
  2669. description: Secure defines whether the cookie can
  2670. only be transmitted over an encrypted connection
  2671. (i.e. HTTPS).
  2672. type: boolean
  2673. type: object
  2674. type: object
  2675. strategy:
  2676. description: |-
  2677. Strategy defines the load balancing strategy between the servers.
  2678. RoundRobin is the only supported value at the moment.
  2679. type: string
  2680. weight:
  2681. description: |-
  2682. Weight defines the weight and should only be specified when Name references a TraefikService object
  2683. (and to be precise, one that embeds a Weighted Round Robin).
  2684. type: integer
  2685. required:
  2686. - name
  2687. type: object
  2688. type: array
  2689. name:
  2690. description: |-
  2691. Name defines the name of the referenced Kubernetes Service or TraefikService.
  2692. The differentiation between the two is specified in the Kind field.
  2693. type: string
  2694. namespace:
  2695. description: Namespace defines the namespace of the referenced
  2696. Kubernetes Service or TraefikService.
  2697. type: string
  2698. nativeLB:
  2699. description: |-
  2700. NativeLB controls, when creating the load-balancer,
  2701. whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP.
  2702. The Kubernetes Service itself does load-balance to the pods.
  2703. By default, NativeLB is false.
  2704. type: boolean
  2705. nodePortLB:
  2706. description: |-
  2707. NodePortLB controls, when creating the load-balancer,
  2708. whether the LB's children are directly the nodes internal IPs using the nodePort when the service type is NodePort.
  2709. It allows services to be reachable when Traefik runs externally from the Kubernetes cluster but within the same network of the nodes.
  2710. By default, NodePortLB is false.
  2711. type: boolean
  2712. passHostHeader:
  2713. description: |-
  2714. PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service.
  2715. By default, passHostHeader is true.
  2716. type: boolean
  2717. port:
  2718. anyOf:
  2719. - type: integer
  2720. - type: string
  2721. description: |-
  2722. Port defines the port of a Kubernetes Service.
  2723. This can be a reference to a named port.
  2724. x-kubernetes-int-or-string: true
  2725. responseForwarding:
  2726. description: ResponseForwarding defines how Traefik forwards the
  2727. response from the upstream Kubernetes Service to the client.
  2728. properties:
  2729. flushInterval:
  2730. description: |-
  2731. FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body.
  2732. A negative value means to flush immediately after each write to the client.
  2733. This configuration is ignored when ReverseProxy recognizes a response as a streaming response;
  2734. for such responses, writes are flushed to the client immediately.
  2735. Default: 100ms
  2736. type: string
  2737. type: object
  2738. scheme:
  2739. description: |-
  2740. Scheme defines the scheme to use for the request to the upstream Kubernetes Service.
  2741. It defaults to https when Kubernetes Service port is 443, http otherwise.
  2742. type: string
  2743. serversTransport:
  2744. description: |-
  2745. ServersTransport defines the name of ServersTransport resource to use.
  2746. It allows to configure the transport between Traefik and your servers.
  2747. Can only be used on a Kubernetes Service.
  2748. type: string
  2749. sticky:
  2750. description: |-
  2751. Sticky defines the sticky sessions configuration.
  2752. More info: https://doc.traefik.io/traefik/v3.1/routing/services/#sticky-sessions
  2753. properties:
  2754. cookie:
  2755. description: Cookie defines the sticky cookie configuration.
  2756. properties:
  2757. httpOnly:
  2758. description: HTTPOnly defines whether the cookie can be
  2759. accessed by client-side APIs, such as JavaScript.
  2760. type: boolean
  2761. maxAge:
  2762. description: |-
  2763. MaxAge indicates the number of seconds until the cookie expires.
  2764. When set to a negative number, the cookie expires immediately.
  2765. When set to zero, the cookie never expires.
  2766. type: integer
  2767. name:
  2768. description: Name defines the Cookie name.
  2769. type: string
  2770. sameSite:
  2771. description: |-
  2772. SameSite defines the same site policy.
  2773. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
  2774. type: string
  2775. secure:
  2776. description: Secure defines whether the cookie can only
  2777. be transmitted over an encrypted connection (i.e. HTTPS).
  2778. type: boolean
  2779. type: object
  2780. type: object
  2781. strategy:
  2782. description: |-
  2783. Strategy defines the load balancing strategy between the servers.
  2784. RoundRobin is the only supported value at the moment.
  2785. type: string
  2786. weight:
  2787. description: |-
  2788. Weight defines the weight and should only be specified when Name references a TraefikService object
  2789. (and to be precise, one that embeds a Weighted Round Robin).
  2790. type: integer
  2791. required:
  2792. - name
  2793. type: object
  2794. weighted:
  2795. description: Weighted defines the Weighted Round Robin configuration.
  2796. properties:
  2797. services:
  2798. description: Services defines the list of Kubernetes Service and/or
  2799. TraefikService to load-balance, with weight.
  2800. items:
  2801. description: Service defines an upstream HTTP service to proxy
  2802. traffic to.
  2803. properties:
  2804. healthCheck:
  2805. description: Healthcheck defines health checks for ExternalName
  2806. services.
  2807. properties:
  2808. followRedirects:
  2809. description: |-
  2810. FollowRedirects defines whether redirects should be followed during the health check calls.
  2811. Default: true
  2812. type: boolean
  2813. headers:
  2814. additionalProperties:
  2815. type: string
  2816. description: Headers defines custom headers to be sent
  2817. to the health check endpoint.
  2818. type: object
  2819. hostname:
  2820. description: Hostname defines the value of hostname
  2821. in the Host header of the health check request.
  2822. type: string
  2823. interval:
  2824. anyOf:
  2825. - type: integer
  2826. - type: string
  2827. description: |-
  2828. Interval defines the frequency of the health check calls.
  2829. Default: 30s
  2830. x-kubernetes-int-or-string: true
  2831. method:
  2832. description: Method defines the healthcheck method.
  2833. type: string
  2834. mode:
  2835. description: |-
  2836. Mode defines the health check mode.
  2837. If defined to grpc, will use the gRPC health check protocol to probe the server.
  2838. Default: http
  2839. type: string
  2840. path:
  2841. description: Path defines the server URL path for the
  2842. health check endpoint.
  2843. type: string
  2844. port:
  2845. description: Port defines the server URL port for the
  2846. health check endpoint.
  2847. type: integer
  2848. scheme:
  2849. description: Scheme replaces the server URL scheme for
  2850. the health check endpoint.
  2851. type: string
  2852. status:
  2853. description: Status defines the expected HTTP status
  2854. code of the response to the health check request.
  2855. type: integer
  2856. timeout:
  2857. anyOf:
  2858. - type: integer
  2859. - type: string
  2860. description: |-
  2861. Timeout defines the maximum duration Traefik will wait for a health check request before considering the server unhealthy.
  2862. Default: 5s
  2863. x-kubernetes-int-or-string: true
  2864. type: object
  2865. kind:
  2866. description: Kind defines the kind of the Service.
  2867. enum:
  2868. - Service
  2869. - TraefikService
  2870. type: string
  2871. name:
  2872. description: |-
  2873. Name defines the name of the referenced Kubernetes Service or TraefikService.
  2874. The differentiation between the two is specified in the Kind field.
  2875. type: string
  2876. namespace:
  2877. description: Namespace defines the namespace of the referenced
  2878. Kubernetes Service or TraefikService.
  2879. type: string
  2880. nativeLB:
  2881. description: |-
  2882. NativeLB controls, when creating the load-balancer,
  2883. whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP.
  2884. The Kubernetes Service itself does load-balance to the pods.
  2885. By default, NativeLB is false.
  2886. type: boolean
  2887. nodePortLB:
  2888. description: |-
  2889. NodePortLB controls, when creating the load-balancer,
  2890. whether the LB's children are directly the nodes internal IPs using the nodePort when the service type is NodePort.
  2891. It allows services to be reachable when Traefik runs externally from the Kubernetes cluster but within the same network of the nodes.
  2892. By default, NodePortLB is false.
  2893. type: boolean
  2894. passHostHeader:
  2895. description: |-
  2896. PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service.
  2897. By default, passHostHeader is true.
  2898. type: boolean
  2899. port:
  2900. anyOf:
  2901. - type: integer
  2902. - type: string
  2903. description: |-
  2904. Port defines the port of a Kubernetes Service.
  2905. This can be a reference to a named port.
  2906. x-kubernetes-int-or-string: true
  2907. responseForwarding:
  2908. description: ResponseForwarding defines how Traefik forwards
  2909. the response from the upstream Kubernetes Service to the
  2910. client.
  2911. properties:
  2912. flushInterval:
  2913. description: |-
  2914. FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body.
  2915. A negative value means to flush immediately after each write to the client.
  2916. This configuration is ignored when ReverseProxy recognizes a response as a streaming response;
  2917. for such responses, writes are flushed to the client immediately.
  2918. Default: 100ms
  2919. type: string
  2920. type: object
  2921. scheme:
  2922. description: |-
  2923. Scheme defines the scheme to use for the request to the upstream Kubernetes Service.
  2924. It defaults to https when Kubernetes Service port is 443, http otherwise.
  2925. type: string
  2926. serversTransport:
  2927. description: |-
  2928. ServersTransport defines the name of ServersTransport resource to use.
  2929. It allows to configure the transport between Traefik and your servers.
  2930. Can only be used on a Kubernetes Service.
  2931. type: string
  2932. sticky:
  2933. description: |-
  2934. Sticky defines the sticky sessions configuration.
  2935. More info: https://doc.traefik.io/traefik/v3.1/routing/services/#sticky-sessions
  2936. properties:
  2937. cookie:
  2938. description: Cookie defines the sticky cookie configuration.
  2939. properties:
  2940. httpOnly:
  2941. description: HTTPOnly defines whether the cookie
  2942. can be accessed by client-side APIs, such as JavaScript.
  2943. type: boolean
  2944. maxAge:
  2945. description: |-
  2946. MaxAge indicates the number of seconds until the cookie expires.
  2947. When set to a negative number, the cookie expires immediately.
  2948. When set to zero, the cookie never expires.
  2949. type: integer
  2950. name:
  2951. description: Name defines the Cookie name.
  2952. type: string
  2953. sameSite:
  2954. description: |-
  2955. SameSite defines the same site policy.
  2956. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
  2957. type: string
  2958. secure:
  2959. description: Secure defines whether the cookie can
  2960. only be transmitted over an encrypted connection
  2961. (i.e. HTTPS).
  2962. type: boolean
  2963. type: object
  2964. type: object
  2965. strategy:
  2966. description: |-
  2967. Strategy defines the load balancing strategy between the servers.
  2968. RoundRobin is the only supported value at the moment.
  2969. type: string
  2970. weight:
  2971. description: |-
  2972. Weight defines the weight and should only be specified when Name references a TraefikService object
  2973. (and to be precise, one that embeds a Weighted Round Robin).
  2974. type: integer
  2975. required:
  2976. - name
  2977. type: object
  2978. type: array
  2979. sticky:
  2980. description: |-
  2981. Sticky defines whether sticky sessions are enabled.
  2982. More info: https://doc.traefik.io/traefik/v3.1/routing/providers/kubernetes-crd/#stickiness-and-load-balancing
  2983. properties:
  2984. cookie:
  2985. description: Cookie defines the sticky cookie configuration.
  2986. properties:
  2987. httpOnly:
  2988. description: HTTPOnly defines whether the cookie can be
  2989. accessed by client-side APIs, such as JavaScript.
  2990. type: boolean
  2991. maxAge:
  2992. description: |-
  2993. MaxAge indicates the number of seconds until the cookie expires.
  2994. When set to a negative number, the cookie expires immediately.
  2995. When set to zero, the cookie never expires.
  2996. type: integer
  2997. name:
  2998. description: Name defines the Cookie name.
  2999. type: string
  3000. sameSite:
  3001. description: |-
  3002. SameSite defines the same site policy.
  3003. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
  3004. type: string
  3005. secure:
  3006. description: Secure defines whether the cookie can only
  3007. be transmitted over an encrypted connection (i.e. HTTPS).
  3008. type: boolean
  3009. type: object
  3010. type: object
  3011. type: object
  3012. type: object
  3013. required:
  3014. - metadata
  3015. - spec
  3016. type: object
  3017. served: true
  3018. storage: true

Resources

apiVersion: traefik.io/v1alpha1
kind: TraefikService
metadata:
  name: wrr2
  namespace: default

spec:
  weighted:
    services:
      - name: s1
        weight: 1
        port: 80
        # Optional, as it is the default value
        kind: Service
      - name: s3
        weight: 1
        port: 80

---
apiVersion: traefik.io/v1alpha1
kind: TraefikService
metadata:
  name: wrr1
  namespace: default

spec:
  weighted:
    services:
      - name: wrr2
        kind: TraefikService
        weight: 1
      - name: s3
        weight: 1
        port: 80

---
apiVersion: traefik.io/v1alpha1
kind: TraefikService
metadata:
  name: mirror1
  namespace: default

spec:
  mirroring:
    name: s1
    port: 80
    mirrors:
      - name: s3
        percent: 20
        port: 80
      - name: mirror2
        kind: TraefikService
        percent: 20

---
apiVersion: traefik.io/v1alpha1
kind: TraefikService
metadata:
  name: mirror2
  namespace: default

spec:
  mirroring:
    name: wrr2
    kind: TraefikService
    # Optional
    maxBodySize: 2000000000
    mirrors:
      - name: s2
        # Optional, as it is the default value
        kind: Service
        percent: 20
        port: 80

---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroute

spec:
  entryPoints:
    - web
    - websecure
  routes:
    - match: Host(`example.net`) && PathPrefix(`/bar`)
      kind: Rule
      priority: 12
      # defining several services is possible and allowed, but for now the servers of
      # all the services (for a given route) get merged altogether under the same
      # load-balancing strategy.
      services:
        - name: s1
          port: 80
          # strategy defines the load balancing strategy between the servers. It defaults
          # to Round Robin, and for now only Round Robin is supported anyway.
          strategy: RoundRobin
        - name: s2
          port: 433
          serversTransport: mytransport
    - match: PathPrefix(`/misc`)
      kind: Rule
      services:
        - name: s3
          port: 80
      middlewares:
        - name: stripprefix
        - name: addprefix
    - match: PathPrefix(`/misc`)
      kind: Rule
      services:
        - name: s3
          # Optional, as it is the default value
          kind: Service
          port: 8443
          # scheme allow to override the scheme for the service. (ex: https or h2c)
          scheme: https
    - match: PathPrefix(`/lb`)
      kind: Rule
      services:
        - name: wrr1
          kind: TraefikService
    - match: PathPrefix(`/mirrored`)
      kind: Rule
      services:
        - name: mirror1
          kind: TraefikService
  # use an empty tls object for TLS with Let's Encrypt
  tls:
    secretName: supersecret
    options:
      name: my-tls-option
      namespace: default

---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
  name: ingressroutetcp.crd
  namespace: default

spec:
  entryPoints:
    - footcp
  routes:
    - match: HostSNI(`example.com`)
      services:
        - name: whoamitcp
          port: 8080
          serversTransport: mytransporttcp
      middlewares:
        - name: ipallowlist
  tls:
    secretName: foosecret
    passthrough: false
    options:
      name: my-tls-option
      namespace: default

---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteUDP
metadata:
  name: ingressrouteudp.crd
  namespace: default

spec:
  entryPoints:
    - footcp
  routes:
    - services:
        - name: whoamiudp
          port: 8080

---
apiVersion: traefik.io/v1alpha1
kind: TLSOption
metadata:
  name: tlsoption
  namespace: default

spec:
  minVersion: foobar
  maxVersion: foobar
  cipherSuites:
    - foobar
    - foobar
  curvePreferences:
    - foobar
    - foobar
  clientAuth:
    secretNames:
      - foobar
      - foobar
    clientAuthType: RequireAndVerifyClientCert
  sniStrict: true
  alpnProtocols:
    - foobar
    - foobar

---
apiVersion: traefik.io/v1alpha1
kind: ServersTransport
metadata:
  name: mytransport
  namespace: default

spec:
  serverName: foobar
  insecureSkipVerify: true
  rootCAsSecrets:
    - foobar
    - foobar
  certificatesSecrets:
    - foobar
    - foobar
  peerCertURI: foobar
  maxIdleConnsPerHost: 1
  forwardingTimeouts:
    dialTimeout: 42s
    responseHeaderTimeout: 42s
    idleConnTimeout: 42s
  disableHTTP2: true

---
apiVersion: traefik.io/v1alpha1
kind: ServersTransportTCP
metadata:
  name: mytransporttcp
  namespace: default

spec:
  serverName: foobar
  insecureSkipVerify: true
  rootCAsSecrets:
    - foobar
    - foobar
  certificatesSecrets:
    - foobar
    - foobar
  peerCertURI: foobar
  dialTimeout: 42s
  dialKeepAlive: 42s

RBAC

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: traefik-ingress-controller

rules:
  - apiGroups:
      - ""
    resources:
      - services
      - secrets
      - nodes
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - discovery.k8s.io
    resources:
      - endpointslices
    verbs:
      - list
      - watch
  - apiGroups:
      - extensions
      - networking.k8s.io
    resources:
      - ingresses
      - ingressclasses
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - extensions
      - networking.k8s.io
    resources:
      - ingresses/status
    verbs:
      - update
  - apiGroups:
      - traefik.io
    resources:
      - middlewares
      - middlewaretcps
      - ingressroutes
      - traefikservices
      - ingressroutetcps
      - ingressrouteudps
      - tlsoptions
      - tlsstores
      - serverstransports
      - serverstransporttcps
    verbs:
      - get
      - list
      - watch

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: traefik-ingress-controller

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

Using Traefik OSS in Production? Consider Adding Advanced Capabilities.

Add API Gateway or API Management capabilities seamlessly to your existing Traefik deployments. No rip and replace. No learning curve.