Kubernetes Configuration Reference

Dynamic configuration with Kubernetes Custom Resource

Definitions

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

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

Resources

  1. apiVersion: traefik.io/v1alpha1
  2. kind: TraefikService
  3. metadata:
  4. name: wrr2
  5. namespace: default
  6. spec:
  7. weighted:
  8. services:
  9. - name: s1
  10. weight: 1
  11. port: 80
  12. # Optional, as it is the default value
  13. kind: Service
  14. - name: s3
  15. weight: 1
  16. port: 80
  17. ---
  18. apiVersion: traefik.io/v1alpha1
  19. kind: TraefikService
  20. metadata:
  21. name: wrr1
  22. namespace: default
  23. spec:
  24. weighted:
  25. services:
  26. - name: wrr2
  27. kind: TraefikService
  28. weight: 1
  29. - name: s3
  30. weight: 1
  31. port: 80
  32. ---
  33. apiVersion: traefik.io/v1alpha1
  34. kind: TraefikService
  35. metadata:
  36. name: mirror1
  37. namespace: default
  38. spec:
  39. mirroring:
  40. name: s1
  41. port: 80
  42. mirrors:
  43. - name: s3
  44. percent: 20
  45. port: 80
  46. - name: mirror2
  47. kind: TraefikService
  48. percent: 20
  49. ---
  50. apiVersion: traefik.io/v1alpha1
  51. kind: TraefikService
  52. metadata:
  53. name: mirror2
  54. namespace: default
  55. spec:
  56. mirroring:
  57. name: wrr2
  58. kind: TraefikService
  59. # Optional
  60. maxBodySize: 2000000000
  61. mirrors:
  62. - name: s2
  63. # Optional, as it is the default value
  64. kind: Service
  65. percent: 20
  66. port: 80
  67. ---
  68. apiVersion: traefik.io/v1alpha1
  69. kind: IngressRoute
  70. metadata:
  71. name: ingressroute
  72. spec:
  73. entryPoints:
  74. - web
  75. - websecure
  76. routes:
  77. - match: Host(`example.net`) && PathPrefix(`/bar`)
  78. kind: Rule
  79. priority: 12
  80. # defining several services is possible and allowed, but for now the servers of
  81. # all the services (for a given route) get merged altogether under the same
  82. # load-balancing strategy.
  83. services:
  84. - name: s1
  85. port: 80
  86. # strategy defines the load balancing strategy between the servers. It defaults
  87. # to Round Robin, and for now only Round Robin is supported anyway.
  88. strategy: RoundRobin
  89. - name: s2
  90. port: 433
  91. serversTransport: mytransport
  92. - match: PathPrefix(`/misc`)
  93. kind: Rule
  94. services:
  95. - name: s3
  96. port: 80
  97. middlewares:
  98. - name: stripprefix
  99. - name: addprefix
  100. - match: PathPrefix(`/misc`)
  101. kind: Rule
  102. services:
  103. - name: s3
  104. # Optional, as it is the default value
  105. kind: Service
  106. port: 8443
  107. # scheme allow to override the scheme for the service. (ex: https or h2c)
  108. scheme: https
  109. - match: PathPrefix(`/lb`)
  110. kind: Rule
  111. services:
  112. - name: wrr1
  113. kind: TraefikService
  114. - match: PathPrefix(`/mirrored`)
  115. kind: Rule
  116. services:
  117. - name: mirror1
  118. kind: TraefikService
  119. # use an empty tls object for TLS with Let's Encrypt
  120. tls:
  121. secretName: supersecret
  122. options:
  123. name: my-tls-option
  124. namespace: default
  125. ---
  126. apiVersion: traefik.io/v1alpha1
  127. kind: IngressRouteTCP
  128. metadata:
  129. name: ingressroutetcp.crd
  130. namespace: default
  131. spec:
  132. entryPoints:
  133. - footcp
  134. routes:
  135. - match: HostSNI(`example.com`)
  136. services:
  137. - name: whoamitcp
  138. port: 8080
  139. serversTransport: mytransporttcp
  140. middlewares:
  141. - name: ipallowlist
  142. tls:
  143. secretName: foosecret
  144. passthrough: false
  145. options:
  146. name: my-tls-option
  147. namespace: default
  148. ---
  149. apiVersion: traefik.io/v1alpha1
  150. kind: IngressRouteUDP
  151. metadata:
  152. name: ingressrouteudp.crd
  153. namespace: default
  154. spec:
  155. entryPoints:
  156. - footcp
  157. routes:
  158. - services:
  159. - name: whoamiudp
  160. port: 8080
  161. ---
  162. apiVersion: traefik.io/v1alpha1
  163. kind: TLSOption
  164. metadata:
  165. name: tlsoption
  166. namespace: default
  167. spec:
  168. minVersion: foobar
  169. maxVersion: foobar
  170. cipherSuites:
  171. - foobar
  172. - foobar
  173. curvePreferences:
  174. - foobar
  175. - foobar
  176. clientAuth:
  177. secretNames:
  178. - foobar
  179. - foobar
  180. clientAuthType: RequireAndVerifyClientCert
  181. sniStrict: true
  182. alpnProtocols:
  183. - foobar
  184. - foobar
  185. ---
  186. apiVersion: traefik.io/v1alpha1
  187. kind: ServersTransport
  188. metadata:
  189. name: mytransport
  190. namespace: default
  191. spec:
  192. serverName: foobar
  193. insecureSkipVerify: true
  194. rootCAsSecrets:
  195. - foobar
  196. - foobar
  197. certificatesSecrets:
  198. - foobar
  199. - foobar
  200. peerCertURI: foobar
  201. maxIdleConnsPerHost: 1
  202. forwardingTimeouts:
  203. dialTimeout: 42s
  204. responseHeaderTimeout: 42s
  205. idleConnTimeout: 42s
  206. disableHTTP2: true
  207. ---
  208. apiVersion: traefik.io/v1alpha1
  209. kind: ServersTransportTCP
  210. metadata:
  211. name: mytransporttcp
  212. namespace: default
  213. spec:
  214. serverName: foobar
  215. insecureSkipVerify: true
  216. rootCAsSecrets:
  217. - foobar
  218. - foobar
  219. certificatesSecrets:
  220. - foobar
  221. - foobar
  222. peerCertURI: foobar
  223. dialTimeout: 42s
  224. dialKeepAlive: 42s

RBAC

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

rules:
  - apiGroups:
      - ""
    resources:
      - services
      - endpoints
      - secrets
    verbs:
      - get
      - 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 for Business Applications?

If you are using Traefik in your organization, consider our enterprise-grade solutions:

These tools help businesses discover, deploy, secure, and manage microservices and APIs easily, at scale, across any environment.