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

If you are using Traefik at work, consider adding enterprise-grade API gateway capabilities or commercial support for Traefik OSS.

Adding API Gateway capabilities to Traefik OSS is fast and seamless. There’s no rip and replace and all configurations remain intact. See it in action via this short video.