Traefik & Kubernetes

The Kubernetes Ingress Controller, The Custom Resource Way.

Configuration Examples

Configuring KubernetesCRD and Deploying/Exposing Services

Resource Definition

  1. # All resources definition must be declared
  2. ---
  3. apiVersion: apiextensions.k8s.io/v1
  4. kind: CustomResourceDefinition
  5. metadata:
  6. annotations:
  7. controller-gen.kubebuilder.io/version: v0.6.2
  8. creationTimestamp: null
  9. name: ingressroutes.traefik.io
  10. spec:
  11. group: traefik.io
  12. names:
  13. kind: IngressRoute
  14. listKind: IngressRouteList
  15. plural: ingressroutes
  16. singular: ingressroute
  17. scope: Namespaced
  18. versions:
  19. - name: v1alpha1
  20. schema:
  21. openAPIV3Schema:
  22. description: IngressRoute is the CRD implementation of a Traefik HTTP Router.
  23. properties:
  24. apiVersion:
  25. description: 'APIVersion defines the versioned schema of this representation
  26. of an object. Servers should convert recognized schemas to the latest
  27. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  28. type: string
  29. kind:
  30. description: 'Kind is a string value representing the REST resource this
  31. object represents. Servers may infer this from the endpoint the client
  32. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  33. type: string
  34. metadata:
  35. type: object
  36. spec:
  37. description: IngressRouteSpec defines the desired state of IngressRoute.
  38. properties:
  39. entryPoints:
  40. description: 'EntryPoints defines the list of entry point names to
  41. bind to. Entry points have to be configured in the static configuration.
  42. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/
  43. Default: all.'
  44. items:
  45. type: string
  46. type: array
  47. routes:
  48. description: Routes defines the list of routes.
  49. items:
  50. description: Route holds the HTTP route configuration.
  51. properties:
  52. kind:
  53. description: Kind defines the kind of the route. Rule is the
  54. only supported kind.
  55. enum:
  56. - Rule
  57. type: string
  58. match:
  59. description: 'Match defines the router''s rule. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#rule'
  60. type: string
  61. middlewares:
  62. description: 'Middlewares defines the list of references to
  63. Middleware resources. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-middleware'
  64. items:
  65. description: MiddlewareRef is a reference to a Middleware
  66. resource.
  67. properties:
  68. name:
  69. description: Name defines the name of the referenced Middleware
  70. resource.
  71. type: string
  72. namespace:
  73. description: Namespace defines the namespace of the referenced
  74. Middleware resource.
  75. type: string
  76. required:
  77. - name
  78. type: object
  79. type: array
  80. priority:
  81. description: 'Priority defines the router''s priority. More
  82. info: https://doc.traefik.io/traefik/v2.10/routing/routers/#priority'
  83. type: integer
  84. services:
  85. description: Services defines the list of Service. It can contain
  86. any combination of TraefikService and/or reference to a Kubernetes
  87. Service.
  88. items:
  89. description: Service defines an upstream HTTP service to proxy
  90. traffic to.
  91. properties:
  92. kind:
  93. description: Kind defines the kind of the Service.
  94. enum:
  95. - Service
  96. - TraefikService
  97. type: string
  98. name:
  99. description: Name defines the name of the referenced Kubernetes
  100. Service or TraefikService. The differentiation between
  101. the two is specified in the Kind field.
  102. type: string
  103. namespace:
  104. description: Namespace defines the namespace of the referenced
  105. Kubernetes Service or TraefikService.
  106. type: string
  107. nativeLB:
  108. description: NativeLB controls, when creating the load-balancer,
  109. whether the LB's children are directly the pods IPs
  110. or if the only child is the Kubernetes Service clusterIP.
  111. The Kubernetes Service itself does load-balance to the
  112. pods. By default, NativeLB is false.
  113. type: boolean
  114. passHostHeader:
  115. description: PassHostHeader defines whether the client
  116. Host header is forwarded to the upstream Kubernetes
  117. Service. By default, passHostHeader is true.
  118. type: boolean
  119. port:
  120. anyOf:
  121. - type: integer
  122. - type: string
  123. description: Port defines the port of a Kubernetes Service.
  124. This can be a reference to a named port.
  125. x-kubernetes-int-or-string: true
  126. responseForwarding:
  127. description: ResponseForwarding defines how Traefik forwards
  128. the response from the upstream Kubernetes Service to
  129. the client.
  130. properties:
  131. flushInterval:
  132. description: 'FlushInterval defines the interval,
  133. in milliseconds, in between flushes to the client
  134. while copying the response body. A negative value
  135. means to flush immediately after each write to the
  136. client. This configuration is ignored when ReverseProxy
  137. recognizes a response as a streaming response; for
  138. such responses, writes are flushed to the client
  139. immediately. Default: 100ms'
  140. type: string
  141. type: object
  142. scheme:
  143. description: Scheme defines the scheme to use for the
  144. request to the upstream Kubernetes Service. It defaults
  145. to https when Kubernetes Service port is 443, http otherwise.
  146. type: string
  147. serversTransport:
  148. description: ServersTransport defines the name of ServersTransport
  149. resource to use. It allows to configure the transport
  150. between Traefik and your servers. Can only be used on
  151. a Kubernetes Service.
  152. type: string
  153. sticky:
  154. description: 'Sticky defines the sticky sessions configuration.
  155. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions'
  156. properties:
  157. cookie:
  158. description: Cookie defines the sticky cookie configuration.
  159. properties:
  160. httpOnly:
  161. description: HTTPOnly defines whether the cookie
  162. can be accessed by client-side APIs, such as
  163. JavaScript.
  164. type: boolean
  165. name:
  166. description: Name defines the Cookie name.
  167. type: string
  168. sameSite:
  169. description: 'SameSite defines the same site policy.
  170. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite'
  171. type: string
  172. secure:
  173. description: Secure defines whether the cookie
  174. can only be transmitted over an encrypted connection
  175. (i.e. HTTPS).
  176. type: boolean
  177. type: object
  178. type: object
  179. strategy:
  180. description: Strategy defines the load balancing strategy
  181. between the servers. RoundRobin is the only supported
  182. value at the moment.
  183. type: string
  184. weight:
  185. description: Weight defines the weight and should only
  186. be specified when Name references a TraefikService object
  187. (and to be precise, one that embeds a Weighted Round
  188. Robin).
  189. type: integer
  190. required:
  191. - name
  192. type: object
  193. type: array
  194. required:
  195. - kind
  196. - match
  197. type: object
  198. type: array
  199. tls:
  200. description: 'TLS defines the TLS configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls'
  201. properties:
  202. certResolver:
  203. description: 'CertResolver defines the name of the certificate
  204. resolver to use. Cert resolvers have to be configured in the
  205. static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers'
  206. type: string
  207. domains:
  208. description: 'Domains defines the list of domains that will be
  209. used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains'
  210. items:
  211. description: Domain holds a domain name with SANs.
  212. properties:
  213. main:
  214. description: Main defines the main domain name.
  215. type: string
  216. sans:
  217. description: SANs defines the subject alternative domain
  218. names.
  219. items:
  220. type: string
  221. type: array
  222. type: object
  223. type: array
  224. options:
  225. description: 'Options defines the reference to a TLSOption, that
  226. specifies the parameters of the TLS connection. If not defined,
  227. the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options'
  228. properties:
  229. name:
  230. description: 'Name defines the name of the referenced TLSOption.
  231. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption'
  232. type: string
  233. namespace:
  234. description: 'Namespace defines the namespace of the referenced
  235. TLSOption. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption'
  236. type: string
  237. required:
  238. - name
  239. type: object
  240. secretName:
  241. description: SecretName is the name of the referenced Kubernetes
  242. Secret to specify the certificate details.
  243. type: string
  244. store:
  245. description: Store defines the reference to the TLSStore, that
  246. will be used to store certificates. Please note that only `default`
  247. TLSStore can be used.
  248. properties:
  249. name:
  250. description: 'Name defines the name of the referenced TLSStore.
  251. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore'
  252. type: string
  253. namespace:
  254. description: 'Namespace defines the namespace of the referenced
  255. TLSStore. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore'
  256. type: string
  257. required:
  258. - name
  259. type: object
  260. type: object
  261. required:
  262. - routes
  263. type: object
  264. required:
  265. - metadata
  266. - spec
  267. type: object
  268. served: true
  269. storage: true
  270. status:
  271. acceptedNames:
  272. kind: ""
  273. plural: ""
  274. conditions: []
  275. storedVersions: []
  276. ---
  277. apiVersion: apiextensions.k8s.io/v1
  278. kind: CustomResourceDefinition
  279. metadata:
  280. annotations:
  281. controller-gen.kubebuilder.io/version: v0.6.2
  282. creationTimestamp: null
  283. name: ingressroutetcps.traefik.io
  284. spec:
  285. group: traefik.io
  286. names:
  287. kind: IngressRouteTCP
  288. listKind: IngressRouteTCPList
  289. plural: ingressroutetcps
  290. singular: ingressroutetcp
  291. scope: Namespaced
  292. versions:
  293. - name: v1alpha1
  294. schema:
  295. openAPIV3Schema:
  296. description: IngressRouteTCP is the CRD implementation of a Traefik TCP Router.
  297. properties:
  298. apiVersion:
  299. description: 'APIVersion defines the versioned schema of this representation
  300. of an object. Servers should convert recognized schemas to the latest
  301. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  302. type: string
  303. kind:
  304. description: 'Kind is a string value representing the REST resource this
  305. object represents. Servers may infer this from the endpoint the client
  306. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  307. type: string
  308. metadata:
  309. type: object
  310. spec:
  311. description: IngressRouteTCPSpec defines the desired state of IngressRouteTCP.
  312. properties:
  313. entryPoints:
  314. description: 'EntryPoints defines the list of entry point names to
  315. bind to. Entry points have to be configured in the static configuration.
  316. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/
  317. Default: all.'
  318. items:
  319. type: string
  320. type: array
  321. routes:
  322. description: Routes defines the list of routes.
  323. items:
  324. description: RouteTCP holds the TCP route configuration.
  325. properties:
  326. match:
  327. description: 'Match defines the router''s rule. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#rule_1'
  328. type: string
  329. middlewares:
  330. description: Middlewares defines the list of references to MiddlewareTCP
  331. resources.
  332. items:
  333. description: ObjectReference is a generic reference to a Traefik
  334. resource.
  335. properties:
  336. name:
  337. description: Name defines the name of the referenced Traefik
  338. resource.
  339. type: string
  340. namespace:
  341. description: Namespace defines the namespace of the referenced
  342. Traefik resource.
  343. type: string
  344. required:
  345. - name
  346. type: object
  347. type: array
  348. priority:
  349. description: 'Priority defines the router''s priority. More
  350. info: https://doc.traefik.io/traefik/v2.10/routing/routers/#priority_1'
  351. type: integer
  352. services:
  353. description: Services defines the list of TCP services.
  354. items:
  355. description: ServiceTCP defines an upstream TCP service to
  356. proxy traffic to.
  357. properties:
  358. name:
  359. description: Name defines the name of the referenced Kubernetes
  360. Service.
  361. type: string
  362. namespace:
  363. description: Namespace defines the namespace of the referenced
  364. Kubernetes Service.
  365. type: string
  366. nativeLB:
  367. description: NativeLB controls, when creating the load-balancer,
  368. whether the LB's children are directly the pods IPs
  369. or if the only child is the Kubernetes Service clusterIP.
  370. The Kubernetes Service itself does load-balance to the
  371. pods. By default, NativeLB is false.
  372. type: boolean
  373. port:
  374. anyOf:
  375. - type: integer
  376. - type: string
  377. description: Port defines the port of a Kubernetes Service.
  378. This can be a reference to a named port.
  379. x-kubernetes-int-or-string: true
  380. proxyProtocol:
  381. description: 'ProxyProtocol defines the PROXY protocol
  382. configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#proxy-protocol'
  383. properties:
  384. version:
  385. description: Version defines the PROXY Protocol version
  386. to use.
  387. type: integer
  388. type: object
  389. terminationDelay:
  390. description: TerminationDelay defines the deadline that
  391. the proxy sets, after one of its connected peers indicates
  392. it has closed the writing capability of its connection,
  393. to close the reading capability as well, hence fully
  394. terminating the connection. It is a duration in milliseconds,
  395. defaulting to 100. A negative value means an infinite
  396. deadline (i.e. the reading capability is never closed).
  397. type: integer
  398. weight:
  399. description: Weight defines the weight used when balancing
  400. requests between multiple Kubernetes Service.
  401. type: integer
  402. required:
  403. - name
  404. - port
  405. type: object
  406. type: array
  407. required:
  408. - match
  409. type: object
  410. type: array
  411. tls:
  412. description: 'TLS defines the TLS configuration on a layer 4 / TCP
  413. Route. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls_1'
  414. properties:
  415. certResolver:
  416. description: 'CertResolver defines the name of the certificate
  417. resolver to use. Cert resolvers have to be configured in the
  418. static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers'
  419. type: string
  420. domains:
  421. description: 'Domains defines the list of domains that will be
  422. used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains'
  423. items:
  424. description: Domain holds a domain name with SANs.
  425. properties:
  426. main:
  427. description: Main defines the main domain name.
  428. type: string
  429. sans:
  430. description: SANs defines the subject alternative domain
  431. names.
  432. items:
  433. type: string
  434. type: array
  435. type: object
  436. type: array
  437. options:
  438. description: 'Options defines the reference to a TLSOption, that
  439. specifies the parameters of the TLS connection. If not defined,
  440. the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options'
  441. properties:
  442. name:
  443. description: Name defines the name of the referenced Traefik
  444. resource.
  445. type: string
  446. namespace:
  447. description: Namespace defines the namespace of the referenced
  448. Traefik resource.
  449. type: string
  450. required:
  451. - name
  452. type: object
  453. passthrough:
  454. description: Passthrough defines whether a TLS router will terminate
  455. the TLS connection.
  456. type: boolean
  457. secretName:
  458. description: SecretName is the name of the referenced Kubernetes
  459. Secret to specify the certificate details.
  460. type: string
  461. store:
  462. description: Store defines the reference to the TLSStore, that
  463. will be used to store certificates. Please note that only `default`
  464. TLSStore can be used.
  465. properties:
  466. name:
  467. description: Name defines the name of the referenced Traefik
  468. resource.
  469. type: string
  470. namespace:
  471. description: Namespace defines the namespace of the referenced
  472. Traefik resource.
  473. type: string
  474. required:
  475. - name
  476. type: object
  477. type: object
  478. required:
  479. - routes
  480. type: object
  481. required:
  482. - metadata
  483. - spec
  484. type: object
  485. served: true
  486. storage: true
  487. status:
  488. acceptedNames:
  489. kind: ""
  490. plural: ""
  491. conditions: []
  492. storedVersions: []
  493. ---
  494. apiVersion: apiextensions.k8s.io/v1
  495. kind: CustomResourceDefinition
  496. metadata:
  497. annotations:
  498. controller-gen.kubebuilder.io/version: v0.6.2
  499. creationTimestamp: null
  500. name: ingressrouteudps.traefik.io
  501. spec:
  502. group: traefik.io
  503. names:
  504. kind: IngressRouteUDP
  505. listKind: IngressRouteUDPList
  506. plural: ingressrouteudps
  507. singular: ingressrouteudp
  508. scope: Namespaced
  509. versions:
  510. - name: v1alpha1
  511. schema:
  512. openAPIV3Schema:
  513. description: IngressRouteUDP is a CRD implementation of a Traefik UDP Router.
  514. properties:
  515. apiVersion:
  516. description: 'APIVersion defines the versioned schema of this representation
  517. of an object. Servers should convert recognized schemas to the latest
  518. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  519. type: string
  520. kind:
  521. description: 'Kind is a string value representing the REST resource this
  522. object represents. Servers may infer this from the endpoint the client
  523. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  524. type: string
  525. metadata:
  526. type: object
  527. spec:
  528. description: IngressRouteUDPSpec defines the desired state of a IngressRouteUDP.
  529. properties:
  530. entryPoints:
  531. description: 'EntryPoints defines the list of entry point names to
  532. bind to. Entry points have to be configured in the static configuration.
  533. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/
  534. Default: all.'
  535. items:
  536. type: string
  537. type: array
  538. routes:
  539. description: Routes defines the list of routes.
  540. items:
  541. description: RouteUDP holds the UDP route configuration.
  542. properties:
  543. services:
  544. description: Services defines the list of UDP services.
  545. items:
  546. description: ServiceUDP defines an upstream UDP service to
  547. proxy traffic to.
  548. properties:
  549. name:
  550. description: Name defines the name of the referenced Kubernetes
  551. Service.
  552. type: string
  553. namespace:
  554. description: Namespace defines the namespace of the referenced
  555. Kubernetes Service.
  556. type: string
  557. nativeLB:
  558. description: NativeLB controls, when creating the load-balancer,
  559. whether the LB's children are directly the pods IPs
  560. or if the only child is the Kubernetes Service clusterIP.
  561. The Kubernetes Service itself does load-balance to the
  562. pods. By default, NativeLB is false.
  563. type: boolean
  564. port:
  565. anyOf:
  566. - type: integer
  567. - type: string
  568. description: Port defines the port of a Kubernetes Service.
  569. This can be a reference to a named port.
  570. x-kubernetes-int-or-string: true
  571. weight:
  572. description: Weight defines the weight used when balancing
  573. requests between multiple Kubernetes Service.
  574. type: integer
  575. required:
  576. - name
  577. - port
  578. type: object
  579. type: array
  580. type: object
  581. type: array
  582. required:
  583. - routes
  584. type: object
  585. required:
  586. - metadata
  587. - spec
  588. type: object
  589. served: true
  590. storage: true
  591. status:
  592. acceptedNames:
  593. kind: ""
  594. plural: ""
  595. conditions: []
  596. storedVersions: []
  597. ---
  598. apiVersion: apiextensions.k8s.io/v1
  599. kind: CustomResourceDefinition
  600. metadata:
  601. annotations:
  602. controller-gen.kubebuilder.io/version: v0.6.2
  603. creationTimestamp: null
  604. name: middlewares.traefik.io
  605. spec:
  606. group: traefik.io
  607. names:
  608. kind: Middleware
  609. listKind: MiddlewareList
  610. plural: middlewares
  611. singular: middleware
  612. scope: Namespaced
  613. versions:
  614. - name: v1alpha1
  615. schema:
  616. openAPIV3Schema:
  617. description: 'Middleware is the CRD implementation of a Traefik Middleware.
  618. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/overview/'
  619. properties:
  620. apiVersion:
  621. description: 'APIVersion defines the versioned schema of this representation
  622. of an object. Servers should convert recognized schemas to the latest
  623. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  624. type: string
  625. kind:
  626. description: 'Kind is a string value representing the REST resource this
  627. object represents. Servers may infer this from the endpoint the client
  628. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  629. type: string
  630. metadata:
  631. type: object
  632. spec:
  633. description: MiddlewareSpec defines the desired state of a Middleware.
  634. properties:
  635. addPrefix:
  636. description: 'AddPrefix holds the add prefix middleware configuration.
  637. This middleware updates the path of a request before forwarding
  638. it. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/addprefix/'
  639. properties:
  640. prefix:
  641. description: Prefix is the string to add before the current path
  642. in the requested URL. It should include a leading slash (/).
  643. type: string
  644. type: object
  645. basicAuth:
  646. description: 'BasicAuth holds the basic auth middleware configuration.
  647. This middleware restricts access to your services to known users.
  648. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/'
  649. properties:
  650. headerField:
  651. description: 'HeaderField defines a header field to store the
  652. authenticated user. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/#headerfield'
  653. type: string
  654. realm:
  655. description: 'Realm allows the protected resources on a server
  656. to be partitioned into a set of protection spaces, each with
  657. its own authentication scheme. Default: traefik.'
  658. type: string
  659. removeHeader:
  660. description: 'RemoveHeader sets the removeHeader option to true
  661. to remove the authorization header before forwarding the request
  662. to your service. Default: false.'
  663. type: boolean
  664. secret:
  665. description: Secret is the name of the referenced Kubernetes Secret
  666. containing user credentials.
  667. type: string
  668. type: object
  669. buffering:
  670. description: 'Buffering holds the buffering middleware configuration.
  671. This middleware retries or limits the size of requests that can
  672. be forwarded to backends. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#maxrequestbodybytes'
  673. properties:
  674. maxRequestBodyBytes:
  675. description: 'MaxRequestBodyBytes defines the maximum allowed
  676. body size for the request (in bytes). If the request exceeds
  677. the allowed size, it is not forwarded to the service, and the
  678. client gets a 413 (Request Entity Too Large) response. Default:
  679. 0 (no maximum).'
  680. format: int64
  681. type: integer
  682. maxResponseBodyBytes:
  683. description: 'MaxResponseBodyBytes defines the maximum allowed
  684. response size from the service (in bytes). If the response exceeds
  685. the allowed size, it is not forwarded to the client. The client
  686. gets a 500 (Internal Server Error) response instead. Default:
  687. 0 (no maximum).'
  688. format: int64
  689. type: integer
  690. memRequestBodyBytes:
  691. description: 'MemRequestBodyBytes defines the threshold (in bytes)
  692. from which the request will be buffered on disk instead of in
  693. memory. Default: 1048576 (1Mi).'
  694. format: int64
  695. type: integer
  696. memResponseBodyBytes:
  697. description: 'MemResponseBodyBytes defines the threshold (in bytes)
  698. from which the response will be buffered on disk instead of
  699. in memory. Default: 1048576 (1Mi).'
  700. format: int64
  701. type: integer
  702. retryExpression:
  703. description: 'RetryExpression defines the retry conditions. It
  704. is a logical combination of functions with operators AND (&&)
  705. and OR (||). More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#retryexpression'
  706. type: string
  707. type: object
  708. chain:
  709. description: 'Chain holds the configuration of the chain middleware.
  710. This middleware enables to define reusable combinations of other
  711. pieces of middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/chain/'
  712. properties:
  713. middlewares:
  714. description: Middlewares is the list of MiddlewareRef which composes
  715. the chain.
  716. items:
  717. description: MiddlewareRef is a reference to a Middleware resource.
  718. properties:
  719. name:
  720. description: Name defines the name of the referenced Middleware
  721. resource.
  722. type: string
  723. namespace:
  724. description: Namespace defines the namespace of the referenced
  725. Middleware resource.
  726. type: string
  727. required:
  728. - name
  729. type: object
  730. type: array
  731. type: object
  732. circuitBreaker:
  733. description: CircuitBreaker holds the circuit breaker configuration.
  734. properties:
  735. checkPeriod:
  736. anyOf:
  737. - type: integer
  738. - type: string
  739. description: CheckPeriod is the interval between successive checks
  740. of the circuit breaker condition (when in standby state).
  741. x-kubernetes-int-or-string: true
  742. expression:
  743. description: Expression is the condition that triggers the tripped
  744. state.
  745. type: string
  746. fallbackDuration:
  747. anyOf:
  748. - type: integer
  749. - type: string
  750. description: FallbackDuration is the duration for which the circuit
  751. breaker will wait before trying to recover (from a tripped state).
  752. x-kubernetes-int-or-string: true
  753. recoveryDuration:
  754. anyOf:
  755. - type: integer
  756. - type: string
  757. description: RecoveryDuration is the duration for which the circuit
  758. breaker will try to recover (as soon as it is in recovering
  759. state).
  760. x-kubernetes-int-or-string: true
  761. type: object
  762. compress:
  763. description: 'Compress holds the compress middleware configuration.
  764. This middleware compresses responses before sending them to the
  765. client, using gzip compression. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/compress/'
  766. properties:
  767. excludedContentTypes:
  768. description: ExcludedContentTypes defines the list of content
  769. types to compare the Content-Type header of the incoming requests
  770. and responses before compressing.
  771. items:
  772. type: string
  773. type: array
  774. minResponseBodyBytes:
  775. description: 'MinResponseBodyBytes defines the minimum amount
  776. of bytes a response body must have to be compressed. Default:
  777. 1024.'
  778. type: integer
  779. type: object
  780. contentType:
  781. description: ContentType holds the content-type middleware configuration.
  782. This middleware exists to enable the correct behavior until at least
  783. the default one can be changed in a future version.
  784. properties:
  785. autoDetect:
  786. description: AutoDetect specifies whether to let the `Content-Type`
  787. header, if it has not been set by the backend, be automatically
  788. set to a value derived from the contents of the response. As
  789. a proxy, the default behavior should be to leave the header
  790. alone, regardless of what the backend did with it. However,
  791. the historic default was to always auto-detect and set the header
  792. if it was nil, and it is going to be kept that way in order
  793. to support users currently relying on it.
  794. type: boolean
  795. type: object
  796. digestAuth:
  797. description: 'DigestAuth holds the digest auth middleware configuration.
  798. This middleware restricts access to your services to known users.
  799. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/digestauth/'
  800. properties:
  801. headerField:
  802. description: 'HeaderField defines a header field to store the
  803. authenticated user. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/#headerfield'
  804. type: string
  805. realm:
  806. description: 'Realm allows the protected resources on a server
  807. to be partitioned into a set of protection spaces, each with
  808. its own authentication scheme. Default: traefik.'
  809. type: string
  810. removeHeader:
  811. description: RemoveHeader defines whether to remove the authorization
  812. header before forwarding the request to the backend.
  813. type: boolean
  814. secret:
  815. description: Secret is the name of the referenced Kubernetes Secret
  816. containing user credentials.
  817. type: string
  818. type: object
  819. errors:
  820. description: 'ErrorPage holds the custom error middleware configuration.
  821. This middleware returns a custom page in lieu of the default, according
  822. to configured ranges of HTTP Status codes. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/'
  823. properties:
  824. query:
  825. description: Query defines the URL for the error page (hosted
  826. by service). The {status} variable can be used in order to insert
  827. the status code in the URL.
  828. type: string
  829. service:
  830. description: 'Service defines the reference to a Kubernetes Service
  831. that will serve the error page. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/#service'
  832. properties:
  833. kind:
  834. description: Kind defines the kind of the Service.
  835. enum:
  836. - Service
  837. - TraefikService
  838. type: string
  839. name:
  840. description: Name defines the name of the referenced Kubernetes
  841. Service or TraefikService. The differentiation between the
  842. two is specified in the Kind field.
  843. type: string
  844. namespace:
  845. description: Namespace defines the namespace of the referenced
  846. Kubernetes Service or TraefikService.
  847. type: string
  848. nativeLB:
  849. description: NativeLB controls, when creating the load-balancer,
  850. whether the LB's children are directly the pods IPs or if
  851. the only child is the Kubernetes Service clusterIP. The
  852. Kubernetes Service itself does load-balance to the pods.
  853. By default, NativeLB is false.
  854. type: boolean
  855. passHostHeader:
  856. description: PassHostHeader defines whether the client Host
  857. header is forwarded to the upstream Kubernetes Service.
  858. By default, passHostHeader is true.
  859. type: boolean
  860. port:
  861. anyOf:
  862. - type: integer
  863. - type: string
  864. description: Port defines the port of a Kubernetes Service.
  865. This can be a reference to a named port.
  866. x-kubernetes-int-or-string: true
  867. responseForwarding:
  868. description: ResponseForwarding defines how Traefik forwards
  869. the response from the upstream Kubernetes Service to the
  870. client.
  871. properties:
  872. flushInterval:
  873. description: 'FlushInterval defines the interval, in milliseconds,
  874. in between flushes to the client while copying the response
  875. body. A negative value means to flush immediately after
  876. each write to the client. This configuration is ignored
  877. when ReverseProxy recognizes a response as a streaming
  878. response; for such responses, writes are flushed to
  879. the client immediately. Default: 100ms'
  880. type: string
  881. type: object
  882. scheme:
  883. description: Scheme defines the scheme to use for the request
  884. to the upstream Kubernetes Service. It defaults to https
  885. when Kubernetes Service port is 443, http otherwise.
  886. type: string
  887. serversTransport:
  888. description: ServersTransport defines the name of ServersTransport
  889. resource to use. It allows to configure the transport between
  890. Traefik and your servers. Can only be used on a Kubernetes
  891. Service.
  892. type: string
  893. sticky:
  894. description: 'Sticky defines the sticky sessions configuration.
  895. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions'
  896. properties:
  897. cookie:
  898. description: Cookie defines the sticky cookie configuration.
  899. properties:
  900. httpOnly:
  901. description: HTTPOnly defines whether the cookie can
  902. be accessed by client-side APIs, such as JavaScript.
  903. type: boolean
  904. name:
  905. description: Name defines the Cookie name.
  906. type: string
  907. sameSite:
  908. description: 'SameSite defines the same site policy.
  909. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite'
  910. type: string
  911. secure:
  912. description: Secure defines whether the cookie can
  913. only be transmitted over an encrypted connection
  914. (i.e. HTTPS).
  915. type: boolean
  916. type: object
  917. type: object
  918. strategy:
  919. description: Strategy defines the load balancing strategy
  920. between the servers. RoundRobin is the only supported value
  921. at the moment.
  922. type: string
  923. weight:
  924. description: Weight defines the weight and should only be
  925. specified when Name references a TraefikService object (and
  926. to be precise, one that embeds a Weighted Round Robin).
  927. type: integer
  928. required:
  929. - name
  930. type: object
  931. status:
  932. description: Status defines which status or range of statuses
  933. should result in an error page. It can be either a status code
  934. as a number (500), as multiple comma-separated numbers (500,502),
  935. as ranges by separating two codes with a dash (500-599), or
  936. a combination of the two (404,418,500-599).
  937. items:
  938. type: string
  939. type: array
  940. type: object
  941. forwardAuth:
  942. description: 'ForwardAuth holds the forward auth middleware configuration.
  943. This middleware delegates the request authentication to a Service.
  944. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/'
  945. properties:
  946. address:
  947. description: Address defines the authentication server address.
  948. type: string
  949. authRequestHeaders:
  950. description: AuthRequestHeaders defines the list of the headers
  951. to copy from the request to the authentication server. If not
  952. set or empty then all request headers are passed.
  953. items:
  954. type: string
  955. type: array
  956. authResponseHeaders:
  957. description: AuthResponseHeaders defines the list of headers to
  958. copy from the authentication server response and set on forwarded
  959. request, replacing any existing conflicting headers.
  960. items:
  961. type: string
  962. type: array
  963. authResponseHeadersRegex:
  964. description: 'AuthResponseHeadersRegex defines the regex to match
  965. headers to copy from the authentication server response and
  966. set on forwarded request, after stripping all headers that match
  967. the regex. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/#authresponseheadersregex'
  968. type: string
  969. tls:
  970. description: TLS defines the configuration used to secure the
  971. connection to the authentication server.
  972. properties:
  973. caOptional:
  974. type: boolean
  975. caSecret:
  976. description: CASecret is the name of the referenced Kubernetes
  977. Secret containing the CA to validate the server certificate.
  978. The CA certificate is extracted from key `tls.ca` or `ca.crt`.
  979. type: string
  980. certSecret:
  981. description: CertSecret is the name of the referenced Kubernetes
  982. Secret containing the client certificate. The client certificate
  983. is extracted from the keys `tls.crt` and `tls.key`.
  984. type: string
  985. insecureSkipVerify:
  986. description: InsecureSkipVerify defines whether the server
  987. certificates should be validated.
  988. type: boolean
  989. type: object
  990. trustForwardHeader:
  991. description: 'TrustForwardHeader defines whether to trust (ie:
  992. forward) all X-Forwarded-* headers.'
  993. type: boolean
  994. type: object
  995. headers:
  996. description: 'Headers holds the headers middleware configuration.
  997. This middleware manages the requests and responses headers. More
  998. info: https://doc.traefik.io/traefik/v2.10/middlewares/http/headers/#customrequestheaders'
  999. properties:
  1000. accessControlAllowCredentials:
  1001. description: AccessControlAllowCredentials defines whether the
  1002. request can include user credentials.
  1003. type: boolean
  1004. accessControlAllowHeaders:
  1005. description: AccessControlAllowHeaders defines the Access-Control-Request-Headers
  1006. values sent in preflight response.
  1007. items:
  1008. type: string
  1009. type: array
  1010. accessControlAllowMethods:
  1011. description: AccessControlAllowMethods defines the Access-Control-Request-Method
  1012. values sent in preflight response.
  1013. items:
  1014. type: string
  1015. type: array
  1016. accessControlAllowOriginList:
  1017. description: AccessControlAllowOriginList is a list of allowable
  1018. origins. Can also be a wildcard origin "*".
  1019. items:
  1020. type: string
  1021. type: array
  1022. accessControlAllowOriginListRegex:
  1023. description: AccessControlAllowOriginListRegex is a list of allowable
  1024. origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/).
  1025. items:
  1026. type: string
  1027. type: array
  1028. accessControlExposeHeaders:
  1029. description: AccessControlExposeHeaders defines the Access-Control-Expose-Headers
  1030. values sent in preflight response.
  1031. items:
  1032. type: string
  1033. type: array
  1034. accessControlMaxAge:
  1035. description: AccessControlMaxAge defines the time that a preflight
  1036. request may be cached.
  1037. format: int64
  1038. type: integer
  1039. addVaryHeader:
  1040. description: AddVaryHeader defines whether the Vary header is
  1041. automatically added/updated when the AccessControlAllowOriginList
  1042. is set.
  1043. type: boolean
  1044. allowedHosts:
  1045. description: AllowedHosts defines the fully qualified list of
  1046. allowed domain names.
  1047. items:
  1048. type: string
  1049. type: array
  1050. browserXssFilter:
  1051. description: BrowserXSSFilter defines whether to add the X-XSS-Protection
  1052. header with the value 1; mode=block.
  1053. type: boolean
  1054. contentSecurityPolicy:
  1055. description: ContentSecurityPolicy defines the Content-Security-Policy
  1056. header value.
  1057. type: string
  1058. contentTypeNosniff:
  1059. description: ContentTypeNosniff defines whether to add the X-Content-Type-Options
  1060. header with the nosniff value.
  1061. type: boolean
  1062. customBrowserXSSValue:
  1063. description: CustomBrowserXSSValue defines the X-XSS-Protection
  1064. header value. This overrides the BrowserXssFilter option.
  1065. type: string
  1066. customFrameOptionsValue:
  1067. description: CustomFrameOptionsValue defines the X-Frame-Options
  1068. header value. This overrides the FrameDeny option.
  1069. type: string
  1070. customRequestHeaders:
  1071. additionalProperties:
  1072. type: string
  1073. description: CustomRequestHeaders defines the header names and
  1074. values to apply to the request.
  1075. type: object
  1076. customResponseHeaders:
  1077. additionalProperties:
  1078. type: string
  1079. description: CustomResponseHeaders defines the header names and
  1080. values to apply to the response.
  1081. type: object
  1082. featurePolicy:
  1083. description: 'Deprecated: use PermissionsPolicy instead.'
  1084. type: string
  1085. forceSTSHeader:
  1086. description: ForceSTSHeader defines whether to add the STS header
  1087. even when the connection is HTTP.
  1088. type: boolean
  1089. frameDeny:
  1090. description: FrameDeny defines whether to add the X-Frame-Options
  1091. header with the DENY value.
  1092. type: boolean
  1093. hostsProxyHeaders:
  1094. description: HostsProxyHeaders defines the header keys that may
  1095. hold a proxied hostname value for the request.
  1096. items:
  1097. type: string
  1098. type: array
  1099. isDevelopment:
  1100. description: IsDevelopment defines whether to mitigate the unwanted
  1101. effects of the AllowedHosts, SSL, and STS options when developing.
  1102. Usually testing takes place using HTTP, not HTTPS, and on localhost,
  1103. not your production domain. If you would like your development
  1104. environment to mimic production with complete Host blocking,
  1105. SSL redirects, and STS headers, leave this as false.
  1106. type: boolean
  1107. permissionsPolicy:
  1108. description: PermissionsPolicy defines the Permissions-Policy
  1109. header value. This allows sites to control browser features.
  1110. type: string
  1111. publicKey:
  1112. description: PublicKey is the public key that implements HPKP
  1113. to prevent MITM attacks with forged certificates.
  1114. type: string
  1115. referrerPolicy:
  1116. description: ReferrerPolicy defines the Referrer-Policy header
  1117. value. This allows sites to control whether browsers forward
  1118. the Referer header to other sites.
  1119. type: string
  1120. sslForceHost:
  1121. description: 'Deprecated: use RedirectRegex instead.'
  1122. type: boolean
  1123. sslHost:
  1124. description: 'Deprecated: use RedirectRegex instead.'
  1125. type: string
  1126. sslProxyHeaders:
  1127. additionalProperties:
  1128. type: string
  1129. description: 'SSLProxyHeaders defines the header keys with associated
  1130. values that would indicate a valid HTTPS request. It can be
  1131. useful when using other proxies (example: "X-Forwarded-Proto":
  1132. "https").'
  1133. type: object
  1134. sslRedirect:
  1135. description: 'Deprecated: use EntryPoint redirection or RedirectScheme
  1136. instead.'
  1137. type: boolean
  1138. sslTemporaryRedirect:
  1139. description: 'Deprecated: use EntryPoint redirection or RedirectScheme
  1140. instead.'
  1141. type: boolean
  1142. stsIncludeSubdomains:
  1143. description: STSIncludeSubdomains defines whether the includeSubDomains
  1144. directive is appended to the Strict-Transport-Security header.
  1145. type: boolean
  1146. stsPreload:
  1147. description: STSPreload defines whether the preload flag is appended
  1148. to the Strict-Transport-Security header.
  1149. type: boolean
  1150. stsSeconds:
  1151. description: STSSeconds defines the max-age of the Strict-Transport-Security
  1152. header. If set to 0, the header is not set.
  1153. format: int64
  1154. type: integer
  1155. type: object
  1156. inFlightReq:
  1157. description: 'InFlightReq holds the in-flight request middleware configuration.
  1158. This middleware limits the number of requests being processed and
  1159. served concurrently. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/'
  1160. properties:
  1161. amount:
  1162. description: Amount defines the maximum amount of allowed simultaneous
  1163. in-flight request. The middleware responds with HTTP 429 Too
  1164. Many Requests if there are already amount requests in progress
  1165. (based on the same sourceCriterion strategy).
  1166. format: int64
  1167. type: integer
  1168. sourceCriterion:
  1169. description: 'SourceCriterion defines what criterion is used to
  1170. group requests as originating from a common source. If several
  1171. strategies are defined at the same time, an error will be raised.
  1172. If none are set, the default is to use the requestHost. More
  1173. info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/#sourcecriterion'
  1174. properties:
  1175. ipStrategy:
  1176. description: 'IPStrategy holds the IP strategy configuration
  1177. used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy'
  1178. properties:
  1179. depth:
  1180. description: Depth tells Traefik to use the X-Forwarded-For
  1181. header and take the IP located at the depth position
  1182. (starting from the right).
  1183. type: integer
  1184. excludedIPs:
  1185. description: ExcludedIPs configures Traefik to scan the
  1186. X-Forwarded-For header and select the first IP not in
  1187. the list.
  1188. items:
  1189. type: string
  1190. type: array
  1191. type: object
  1192. requestHeaderName:
  1193. description: RequestHeaderName defines the name of the header
  1194. used to group incoming requests.
  1195. type: string
  1196. requestHost:
  1197. description: RequestHost defines whether to consider the request
  1198. Host as the source.
  1199. type: boolean
  1200. type: object
  1201. type: object
  1202. ipWhiteList:
  1203. description: 'IPWhiteList holds the IP whitelist middleware configuration.
  1204. This middleware accepts / refuses requests based on the client IP.
  1205. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/'
  1206. properties:
  1207. ipStrategy:
  1208. description: 'IPStrategy holds the IP strategy configuration used
  1209. by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy'
  1210. properties:
  1211. depth:
  1212. description: Depth tells Traefik to use the X-Forwarded-For
  1213. header and take the IP located at the depth position (starting
  1214. from the right).
  1215. type: integer
  1216. excludedIPs:
  1217. description: ExcludedIPs configures Traefik to scan the X-Forwarded-For
  1218. header and select the first IP not in the list.
  1219. items:
  1220. type: string
  1221. type: array
  1222. type: object
  1223. sourceRange:
  1224. description: SourceRange defines the set of allowed IPs (or ranges
  1225. of allowed IPs by using CIDR notation).
  1226. items:
  1227. type: string
  1228. type: array
  1229. type: object
  1230. passTLSClientCert:
  1231. description: 'PassTLSClientCert holds the pass TLS client cert middleware
  1232. configuration. This middleware adds the selected data from the passed
  1233. client TLS certificate to a header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/passtlsclientcert/'
  1234. properties:
  1235. info:
  1236. description: Info selects the specific client certificate details
  1237. you want to add to the X-Forwarded-Tls-Client-Cert-Info header.
  1238. properties:
  1239. issuer:
  1240. description: Issuer defines the client certificate issuer
  1241. details to add to the X-Forwarded-Tls-Client-Cert-Info header.
  1242. properties:
  1243. commonName:
  1244. description: CommonName defines whether to add the organizationalUnit
  1245. information into the issuer.
  1246. type: boolean
  1247. country:
  1248. description: Country defines whether to add the country
  1249. information into the issuer.
  1250. type: boolean
  1251. domainComponent:
  1252. description: DomainComponent defines whether to add the
  1253. domainComponent information into the issuer.
  1254. type: boolean
  1255. locality:
  1256. description: Locality defines whether to add the locality
  1257. information into the issuer.
  1258. type: boolean
  1259. organization:
  1260. description: Organization defines whether to add the organization
  1261. information into the issuer.
  1262. type: boolean
  1263. province:
  1264. description: Province defines whether to add the province
  1265. information into the issuer.
  1266. type: boolean
  1267. serialNumber:
  1268. description: SerialNumber defines whether to add the serialNumber
  1269. information into the issuer.
  1270. type: boolean
  1271. type: object
  1272. notAfter:
  1273. description: NotAfter defines whether to add the Not After
  1274. information from the Validity part.
  1275. type: boolean
  1276. notBefore:
  1277. description: NotBefore defines whether to add the Not Before
  1278. information from the Validity part.
  1279. type: boolean
  1280. sans:
  1281. description: Sans defines whether to add the Subject Alternative
  1282. Name information from the Subject Alternative Name part.
  1283. type: boolean
  1284. serialNumber:
  1285. description: SerialNumber defines whether to add the client
  1286. serialNumber information.
  1287. type: boolean
  1288. subject:
  1289. description: Subject defines the client certificate subject
  1290. details to add to the X-Forwarded-Tls-Client-Cert-Info header.
  1291. properties:
  1292. commonName:
  1293. description: CommonName defines whether to add the organizationalUnit
  1294. information into the subject.
  1295. type: boolean
  1296. country:
  1297. description: Country defines whether to add the country
  1298. information into the subject.
  1299. type: boolean
  1300. domainComponent:
  1301. description: DomainComponent defines whether to add the
  1302. domainComponent information into the subject.
  1303. type: boolean
  1304. locality:
  1305. description: Locality defines whether to add the locality
  1306. information into the subject.
  1307. type: boolean
  1308. organization:
  1309. description: Organization defines whether to add the organization
  1310. information into the subject.
  1311. type: boolean
  1312. organizationalUnit:
  1313. description: OrganizationalUnit defines whether to add
  1314. the organizationalUnit information into the subject.
  1315. type: boolean
  1316. province:
  1317. description: Province defines whether to add the province
  1318. information into the subject.
  1319. type: boolean
  1320. serialNumber:
  1321. description: SerialNumber defines whether to add the serialNumber
  1322. information into the subject.
  1323. type: boolean
  1324. type: object
  1325. type: object
  1326. pem:
  1327. description: PEM sets the X-Forwarded-Tls-Client-Cert header with
  1328. the certificate.
  1329. type: boolean
  1330. type: object
  1331. plugin:
  1332. additionalProperties:
  1333. x-kubernetes-preserve-unknown-fields: true
  1334. description: 'Plugin defines the middleware plugin configuration.
  1335. More info: https://doc.traefik.io/traefik/plugins/'
  1336. type: object
  1337. rateLimit:
  1338. description: 'RateLimit holds the rate limit configuration. This middleware
  1339. ensures that services will receive a fair amount of requests, and
  1340. allows one to define what fair is. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ratelimit/'
  1341. properties:
  1342. average:
  1343. description: Average is the maximum rate, by default in requests/s,
  1344. allowed for the given source. It defaults to 0, which means
  1345. no rate limiting. The rate is actually defined by dividing Average
  1346. by Period. So for a rate below 1req/s, one needs to define a
  1347. Period larger than a second.
  1348. format: int64
  1349. type: integer
  1350. burst:
  1351. description: Burst is the maximum number of requests allowed to
  1352. arrive in the same arbitrarily small period of time. It defaults
  1353. to 1.
  1354. format: int64
  1355. type: integer
  1356. period:
  1357. anyOf:
  1358. - type: integer
  1359. - type: string
  1360. description: 'Period, in combination with Average, defines the
  1361. actual maximum rate, such as: r = Average / Period. It defaults
  1362. to a second.'
  1363. x-kubernetes-int-or-string: true
  1364. sourceCriterion:
  1365. description: SourceCriterion defines what criterion is used to
  1366. group requests as originating from a common source. If several
  1367. strategies are defined at the same time, an error will be raised.
  1368. If none are set, the default is to use the request's remote
  1369. address field (as an ipStrategy).
  1370. properties:
  1371. ipStrategy:
  1372. description: 'IPStrategy holds the IP strategy configuration
  1373. used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy'
  1374. properties:
  1375. depth:
  1376. description: Depth tells Traefik to use the X-Forwarded-For
  1377. header and take the IP located at the depth position
  1378. (starting from the right).
  1379. type: integer
  1380. excludedIPs:
  1381. description: ExcludedIPs configures Traefik to scan the
  1382. X-Forwarded-For header and select the first IP not in
  1383. the list.
  1384. items:
  1385. type: string
  1386. type: array
  1387. type: object
  1388. requestHeaderName:
  1389. description: RequestHeaderName defines the name of the header
  1390. used to group incoming requests.
  1391. type: string
  1392. requestHost:
  1393. description: RequestHost defines whether to consider the request
  1394. Host as the source.
  1395. type: boolean
  1396. type: object
  1397. type: object
  1398. redirectRegex:
  1399. description: 'RedirectRegex holds the redirect regex middleware configuration.
  1400. This middleware redirects a request using regex matching and replacement.
  1401. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectregex/#regex'
  1402. properties:
  1403. permanent:
  1404. description: Permanent defines whether the redirection is permanent
  1405. (301).
  1406. type: boolean
  1407. regex:
  1408. description: Regex defines the regex used to match and capture
  1409. elements from the request URL.
  1410. type: string
  1411. replacement:
  1412. description: Replacement defines how to modify the URL to have
  1413. the new target URL.
  1414. type: string
  1415. type: object
  1416. redirectScheme:
  1417. description: 'RedirectScheme holds the redirect scheme middleware
  1418. configuration. This middleware redirects requests from a scheme/port
  1419. to another. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectscheme/'
  1420. properties:
  1421. permanent:
  1422. description: Permanent defines whether the redirection is permanent
  1423. (301).
  1424. type: boolean
  1425. port:
  1426. description: Port defines the port of the new URL.
  1427. type: string
  1428. scheme:
  1429. description: Scheme defines the scheme of the new URL.
  1430. type: string
  1431. type: object
  1432. replacePath:
  1433. description: 'ReplacePath holds the replace path middleware configuration.
  1434. This middleware replaces the path of the request URL and store the
  1435. original path in an X-Replaced-Path header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepath/'
  1436. properties:
  1437. path:
  1438. description: Path defines the path to use as replacement in the
  1439. request URL.
  1440. type: string
  1441. type: object
  1442. replacePathRegex:
  1443. description: 'ReplacePathRegex holds the replace path regex middleware
  1444. configuration. This middleware replaces the path of a URL using
  1445. regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepathregex/'
  1446. properties:
  1447. regex:
  1448. description: Regex defines the regular expression used to match
  1449. and capture the path from the request URL.
  1450. type: string
  1451. replacement:
  1452. description: Replacement defines the replacement path format,
  1453. which can include captured variables.
  1454. type: string
  1455. type: object
  1456. retry:
  1457. description: 'Retry holds the retry middleware configuration. This
  1458. middleware reissues requests a given number of times to a backend
  1459. server if that server does not reply. As soon as the server answers,
  1460. the middleware stops retrying, regardless of the response status.
  1461. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/retry/'
  1462. properties:
  1463. attempts:
  1464. description: Attempts defines how many times the request should
  1465. be retried.
  1466. type: integer
  1467. initialInterval:
  1468. anyOf:
  1469. - type: integer
  1470. - type: string
  1471. description: InitialInterval defines the first wait time in the
  1472. exponential backoff series. The maximum interval is calculated
  1473. as twice the initialInterval. If unspecified, requests will
  1474. be retried immediately. The value of initialInterval should
  1475. be provided in seconds or as a valid duration format, see https://pkg.go.dev/time#ParseDuration.
  1476. x-kubernetes-int-or-string: true
  1477. type: object
  1478. stripPrefix:
  1479. description: 'StripPrefix holds the strip prefix middleware configuration.
  1480. This middleware removes the specified prefixes from the URL path.
  1481. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefix/'
  1482. properties:
  1483. forceSlash:
  1484. description: 'ForceSlash ensures that the resulting stripped path
  1485. is not the empty string, by replacing it with / when necessary.
  1486. Default: true.'
  1487. type: boolean
  1488. prefixes:
  1489. description: Prefixes defines the prefixes to strip from the request
  1490. URL.
  1491. items:
  1492. type: string
  1493. type: array
  1494. type: object
  1495. stripPrefixRegex:
  1496. description: 'StripPrefixRegex holds the strip prefix regex middleware
  1497. configuration. This middleware removes the matching prefixes from
  1498. the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefixregex/'
  1499. properties:
  1500. regex:
  1501. description: Regex defines the regular expression to match the
  1502. path prefix from the request URL.
  1503. items:
  1504. type: string
  1505. type: array
  1506. type: object
  1507. type: object
  1508. required:
  1509. - metadata
  1510. - spec
  1511. type: object
  1512. served: true
  1513. storage: true
  1514. status:
  1515. acceptedNames:
  1516. kind: ""
  1517. plural: ""
  1518. conditions: []
  1519. storedVersions: []
  1520. ---
  1521. apiVersion: apiextensions.k8s.io/v1
  1522. kind: CustomResourceDefinition
  1523. metadata:
  1524. annotations:
  1525. controller-gen.kubebuilder.io/version: v0.6.2
  1526. creationTimestamp: null
  1527. name: middlewaretcps.traefik.io
  1528. spec:
  1529. group: traefik.io
  1530. names:
  1531. kind: MiddlewareTCP
  1532. listKind: MiddlewareTCPList
  1533. plural: middlewaretcps
  1534. singular: middlewaretcp
  1535. scope: Namespaced
  1536. versions:
  1537. - name: v1alpha1
  1538. schema:
  1539. openAPIV3Schema:
  1540. description: 'MiddlewareTCP is the CRD implementation of a Traefik TCP middleware.
  1541. More info: https://doc.traefik.io/traefik/v2.10/middlewares/overview/'
  1542. properties:
  1543. apiVersion:
  1544. description: 'APIVersion defines the versioned schema of this representation
  1545. of an object. Servers should convert recognized schemas to the latest
  1546. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  1547. type: string
  1548. kind:
  1549. description: 'Kind is a string value representing the REST resource this
  1550. object represents. Servers may infer this from the endpoint the client
  1551. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  1552. type: string
  1553. metadata:
  1554. type: object
  1555. spec:
  1556. description: MiddlewareTCPSpec defines the desired state of a MiddlewareTCP.
  1557. properties:
  1558. inFlightConn:
  1559. description: InFlightConn defines the InFlightConn middleware configuration.
  1560. properties:
  1561. amount:
  1562. description: Amount defines the maximum amount of allowed simultaneous
  1563. connections. The middleware closes the connection if there are
  1564. already amount connections opened.
  1565. format: int64
  1566. type: integer
  1567. type: object
  1568. ipWhiteList:
  1569. description: IPWhiteList defines the IPWhiteList middleware configuration.
  1570. properties:
  1571. sourceRange:
  1572. description: SourceRange defines the allowed IPs (or ranges of
  1573. allowed IPs by using CIDR notation).
  1574. items:
  1575. type: string
  1576. type: array
  1577. type: object
  1578. type: object
  1579. required:
  1580. - metadata
  1581. - spec
  1582. type: object
  1583. served: true
  1584. storage: true
  1585. status:
  1586. acceptedNames:
  1587. kind: ""
  1588. plural: ""
  1589. conditions: []
  1590. storedVersions: []
  1591. ---
  1592. apiVersion: apiextensions.k8s.io/v1
  1593. kind: CustomResourceDefinition
  1594. metadata:
  1595. annotations:
  1596. controller-gen.kubebuilder.io/version: v0.6.2
  1597. creationTimestamp: null
  1598. name: serverstransports.traefik.io
  1599. spec:
  1600. group: traefik.io
  1601. names:
  1602. kind: ServersTransport
  1603. listKind: ServersTransportList
  1604. plural: serverstransports
  1605. singular: serverstransport
  1606. scope: Namespaced
  1607. versions:
  1608. - name: v1alpha1
  1609. schema:
  1610. openAPIV3Schema:
  1611. description: 'ServersTransport is the CRD implementation of a ServersTransport.
  1612. If no serversTransport is specified, the [email protected] will be used.
  1613. The [email protected] serversTransport is created from the static configuration.
  1614. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#serverstransport_1'
  1615. properties:
  1616. apiVersion:
  1617. description: 'APIVersion defines the versioned schema of this representation
  1618. of an object. Servers should convert recognized schemas to the latest
  1619. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  1620. type: string
  1621. kind:
  1622. description: 'Kind is a string value representing the REST resource this
  1623. object represents. Servers may infer this from the endpoint the client
  1624. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  1625. type: string
  1626. metadata:
  1627. type: object
  1628. spec:
  1629. description: ServersTransportSpec defines the desired state of a ServersTransport.
  1630. properties:
  1631. certificatesSecrets:
  1632. description: CertificatesSecrets defines a list of secret storing
  1633. client certificates for mTLS.
  1634. items:
  1635. type: string
  1636. type: array
  1637. disableHTTP2:
  1638. description: DisableHTTP2 disables HTTP/2 for connections with backend
  1639. servers.
  1640. type: boolean
  1641. forwardingTimeouts:
  1642. description: ForwardingTimeouts defines the timeouts for requests
  1643. forwarded to the backend servers.
  1644. properties:
  1645. dialTimeout:
  1646. anyOf:
  1647. - type: integer
  1648. - type: string
  1649. description: DialTimeout is the amount of time to wait until a
  1650. connection to a backend server can be established.
  1651. x-kubernetes-int-or-string: true
  1652. idleConnTimeout:
  1653. anyOf:
  1654. - type: integer
  1655. - type: string
  1656. description: IdleConnTimeout is the maximum period for which an
  1657. idle HTTP keep-alive connection will remain open before closing
  1658. itself.
  1659. x-kubernetes-int-or-string: true
  1660. pingTimeout:
  1661. anyOf:
  1662. - type: integer
  1663. - type: string
  1664. description: PingTimeout is the timeout after which the HTTP/2
  1665. connection will be closed if a response to ping is not received.
  1666. x-kubernetes-int-or-string: true
  1667. readIdleTimeout:
  1668. anyOf:
  1669. - type: integer
  1670. - type: string
  1671. description: ReadIdleTimeout is the timeout after which a health
  1672. check using ping frame will be carried out if no frame is received
  1673. on the HTTP/2 connection.
  1674. x-kubernetes-int-or-string: true
  1675. responseHeaderTimeout:
  1676. anyOf:
  1677. - type: integer
  1678. - type: string
  1679. description: ResponseHeaderTimeout is the amount of time to wait
  1680. for a server's response headers after fully writing the request
  1681. (including its body, if any).
  1682. x-kubernetes-int-or-string: true
  1683. type: object
  1684. insecureSkipVerify:
  1685. description: InsecureSkipVerify disables SSL certificate verification.
  1686. type: boolean
  1687. maxIdleConnsPerHost:
  1688. description: MaxIdleConnsPerHost controls the maximum idle (keep-alive)
  1689. to keep per-host.
  1690. type: integer
  1691. peerCertURI:
  1692. description: PeerCertURI defines the peer cert URI used to match against
  1693. SAN URI during the peer certificate verification.
  1694. type: string
  1695. rootCAsSecrets:
  1696. description: RootCAsSecrets defines a list of CA secret used to validate
  1697. self-signed certificate.
  1698. items:
  1699. type: string
  1700. type: array
  1701. serverName:
  1702. description: ServerName defines the server name used to contact the
  1703. server.
  1704. type: string
  1705. type: object
  1706. required:
  1707. - metadata
  1708. - spec
  1709. type: object
  1710. served: true
  1711. storage: true
  1712. status:
  1713. acceptedNames:
  1714. kind: ""
  1715. plural: ""
  1716. conditions: []
  1717. storedVersions: []
  1718. ---
  1719. apiVersion: apiextensions.k8s.io/v1
  1720. kind: CustomResourceDefinition
  1721. metadata:
  1722. annotations:
  1723. controller-gen.kubebuilder.io/version: v0.6.2
  1724. creationTimestamp: null
  1725. name: tlsoptions.traefik.io
  1726. spec:
  1727. group: traefik.io
  1728. names:
  1729. kind: TLSOption
  1730. listKind: TLSOptionList
  1731. plural: tlsoptions
  1732. singular: tlsoption
  1733. scope: Namespaced
  1734. versions:
  1735. - name: v1alpha1
  1736. schema:
  1737. openAPIV3Schema:
  1738. description: 'TLSOption is the CRD implementation of a Traefik TLS Option,
  1739. allowing to configure some parameters of the TLS connection. More info:
  1740. https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options'
  1741. properties:
  1742. apiVersion:
  1743. description: 'APIVersion defines the versioned schema of this representation
  1744. of an object. Servers should convert recognized schemas to the latest
  1745. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  1746. type: string
  1747. kind:
  1748. description: 'Kind is a string value representing the REST resource this
  1749. object represents. Servers may infer this from the endpoint the client
  1750. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  1751. type: string
  1752. metadata:
  1753. type: object
  1754. spec:
  1755. description: TLSOptionSpec defines the desired state of a TLSOption.
  1756. properties:
  1757. alpnProtocols:
  1758. description: 'ALPNProtocols defines the list of supported application
  1759. level protocols for the TLS handshake, in order of preference. More
  1760. info: https://doc.traefik.io/traefik/v2.10/https/tls/#alpn-protocols'
  1761. items:
  1762. type: string
  1763. type: array
  1764. cipherSuites:
  1765. description: 'CipherSuites defines the list of supported cipher suites
  1766. for TLS versions up to TLS 1.2. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#cipher-suites'
  1767. items:
  1768. type: string
  1769. type: array
  1770. clientAuth:
  1771. description: ClientAuth defines the server's policy for TLS Client
  1772. Authentication.
  1773. properties:
  1774. clientAuthType:
  1775. description: ClientAuthType defines the client authentication
  1776. type to apply.
  1777. enum:
  1778. - NoClientCert
  1779. - RequestClientCert
  1780. - RequireAnyClientCert
  1781. - VerifyClientCertIfGiven
  1782. - RequireAndVerifyClientCert
  1783. type: string
  1784. secretNames:
  1785. description: SecretNames defines the names of the referenced Kubernetes
  1786. Secret storing certificate details.
  1787. items:
  1788. type: string
  1789. type: array
  1790. type: object
  1791. curvePreferences:
  1792. description: 'CurvePreferences defines the preferred elliptic curves
  1793. in a specific order. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#curve-preferences'
  1794. items:
  1795. type: string
  1796. type: array
  1797. maxVersion:
  1798. description: 'MaxVersion defines the maximum TLS version that Traefik
  1799. will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12,
  1800. VersionTLS13. Default: None.'
  1801. type: string
  1802. minVersion:
  1803. description: 'MinVersion defines the minimum TLS version that Traefik
  1804. will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12,
  1805. VersionTLS13. Default: VersionTLS10.'
  1806. type: string
  1807. preferServerCipherSuites:
  1808. description: 'PreferServerCipherSuites defines whether the server
  1809. chooses a cipher suite among his own instead of among the client''s.
  1810. It is enabled automatically when minVersion or maxVersion is set.
  1811. Deprecated: https://github.com/golang/go/issues/45430'
  1812. type: boolean
  1813. sniStrict:
  1814. description: SniStrict defines whether Traefik allows connections
  1815. from clients connections that do not specify a server_name extension.
  1816. type: boolean
  1817. type: object
  1818. required:
  1819. - metadata
  1820. - spec
  1821. type: object
  1822. served: true
  1823. storage: true
  1824. status:
  1825. acceptedNames:
  1826. kind: ""
  1827. plural: ""
  1828. conditions: []
  1829. storedVersions: []
  1830. ---
  1831. apiVersion: apiextensions.k8s.io/v1
  1832. kind: CustomResourceDefinition
  1833. metadata:
  1834. annotations:
  1835. controller-gen.kubebuilder.io/version: v0.6.2
  1836. creationTimestamp: null
  1837. name: tlsstores.traefik.io
  1838. spec:
  1839. group: traefik.io
  1840. names:
  1841. kind: TLSStore
  1842. listKind: TLSStoreList
  1843. plural: tlsstores
  1844. singular: tlsstore
  1845. scope: Namespaced
  1846. versions:
  1847. - name: v1alpha1
  1848. schema:
  1849. openAPIV3Schema:
  1850. description: 'TLSStore is the CRD implementation of a Traefik TLS Store. For
  1851. the time being, only the TLSStore named default is supported. This means
  1852. that you cannot have two stores that are named default in different Kubernetes
  1853. namespaces. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#certificates-stores'
  1854. properties:
  1855. apiVersion:
  1856. description: 'APIVersion defines the versioned schema of this representation
  1857. of an object. Servers should convert recognized schemas to the latest
  1858. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  1859. type: string
  1860. kind:
  1861. description: 'Kind is a string value representing the REST resource this
  1862. object represents. Servers may infer this from the endpoint the client
  1863. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  1864. type: string
  1865. metadata:
  1866. type: object
  1867. spec:
  1868. description: TLSStoreSpec defines the desired state of a TLSStore.
  1869. properties:
  1870. certificates:
  1871. description: Certificates is a list of secret names, each secret holding
  1872. a key/certificate pair to add to the store.
  1873. items:
  1874. description: Certificate holds a secret name for the TLSStore resource.
  1875. properties:
  1876. secretName:
  1877. description: SecretName is the name of the referenced Kubernetes
  1878. Secret to specify the certificate details.
  1879. type: string
  1880. required:
  1881. - secretName
  1882. type: object
  1883. type: array
  1884. defaultCertificate:
  1885. description: DefaultCertificate defines the default certificate configuration.
  1886. properties:
  1887. secretName:
  1888. description: SecretName is the name of the referenced Kubernetes
  1889. Secret to specify the certificate details.
  1890. type: string
  1891. required:
  1892. - secretName
  1893. type: object
  1894. defaultGeneratedCert:
  1895. description: DefaultGeneratedCert defines the default generated certificate
  1896. configuration.
  1897. properties:
  1898. domain:
  1899. description: Domain is the domain definition for the DefaultCertificate.
  1900. properties:
  1901. main:
  1902. description: Main defines the main domain name.
  1903. type: string
  1904. sans:
  1905. description: SANs defines the subject alternative domain names.
  1906. items:
  1907. type: string
  1908. type: array
  1909. type: object
  1910. resolver:
  1911. description: Resolver is the name of the resolver that will be
  1912. used to issue the DefaultCertificate.
  1913. type: string
  1914. type: object
  1915. type: object
  1916. required:
  1917. - metadata
  1918. - spec
  1919. type: object
  1920. served: true
  1921. storage: true
  1922. status:
  1923. acceptedNames:
  1924. kind: ""
  1925. plural: ""
  1926. conditions: []
  1927. storedVersions: []
  1928. ---
  1929. apiVersion: apiextensions.k8s.io/v1
  1930. kind: CustomResourceDefinition
  1931. metadata:
  1932. annotations:
  1933. controller-gen.kubebuilder.io/version: v0.6.2
  1934. creationTimestamp: null
  1935. name: traefikservices.traefik.io
  1936. spec:
  1937. group: traefik.io
  1938. names:
  1939. kind: TraefikService
  1940. listKind: TraefikServiceList
  1941. plural: traefikservices
  1942. singular: traefikservice
  1943. scope: Namespaced
  1944. versions:
  1945. - name: v1alpha1
  1946. schema:
  1947. openAPIV3Schema:
  1948. description: 'TraefikService is the CRD implementation of a Traefik Service.
  1949. TraefikService object allows to: - Apply weight to Services on load-balancing
  1950. - Mirror traffic on services More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-traefikservice'
  1951. properties:
  1952. apiVersion:
  1953. description: 'APIVersion defines the versioned schema of this representation
  1954. of an object. Servers should convert recognized schemas to the latest
  1955. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  1956. type: string
  1957. kind:
  1958. description: 'Kind is a string value representing the REST resource this
  1959. object represents. Servers may infer this from the endpoint the client
  1960. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  1961. type: string
  1962. metadata:
  1963. type: object
  1964. spec:
  1965. description: TraefikServiceSpec defines the desired state of a TraefikService.
  1966. properties:
  1967. mirroring:
  1968. description: Mirroring defines the Mirroring service configuration.
  1969. properties:
  1970. kind:
  1971. description: Kind defines the kind of the Service.
  1972. enum:
  1973. - Service
  1974. - TraefikService
  1975. type: string
  1976. maxBodySize:
  1977. description: MaxBodySize defines the maximum size allowed for
  1978. the body of the request. If the body is larger, the request
  1979. is not mirrored. Default value is -1, which means unlimited
  1980. size.
  1981. format: int64
  1982. type: integer
  1983. mirrors:
  1984. description: Mirrors defines the list of mirrors where Traefik
  1985. will duplicate the traffic.
  1986. items:
  1987. description: MirrorService holds the mirror configuration.
  1988. properties:
  1989. kind:
  1990. description: Kind defines the kind of the Service.
  1991. enum:
  1992. - Service
  1993. - TraefikService
  1994. type: string
  1995. name:
  1996. description: Name defines the name of the referenced Kubernetes
  1997. Service or TraefikService. The differentiation between
  1998. the two is specified in the Kind field.
  1999. type: string
  2000. namespace:
  2001. description: Namespace defines the namespace of the referenced
  2002. Kubernetes Service or TraefikService.
  2003. type: string
  2004. nativeLB:
  2005. description: NativeLB controls, when creating the load-balancer,
  2006. whether the LB's children are directly the pods IPs or
  2007. if the only child is the Kubernetes Service clusterIP.
  2008. The Kubernetes Service itself does load-balance to the
  2009. pods. By default, NativeLB is false.
  2010. type: boolean
  2011. passHostHeader:
  2012. description: PassHostHeader defines whether the client Host
  2013. header is forwarded to the upstream Kubernetes Service.
  2014. By default, passHostHeader is true.
  2015. type: boolean
  2016. percent:
  2017. description: 'Percent defines the part of the traffic to
  2018. mirror. Supported values: 0 to 100.'
  2019. type: integer
  2020. port:
  2021. anyOf:
  2022. - type: integer
  2023. - type: string
  2024. description: Port defines the port of a Kubernetes Service.
  2025. This can be a reference to a named port.
  2026. x-kubernetes-int-or-string: true
  2027. responseForwarding:
  2028. description: ResponseForwarding defines how Traefik forwards
  2029. the response from the upstream Kubernetes Service to the
  2030. client.
  2031. properties:
  2032. flushInterval:
  2033. description: 'FlushInterval defines the interval, in
  2034. milliseconds, in between flushes to the client while
  2035. copying the response body. A negative value means
  2036. to flush immediately after each write to the client.
  2037. This configuration is ignored when ReverseProxy recognizes
  2038. a response as a streaming response; for such responses,
  2039. writes are flushed to the client immediately. Default:
  2040. 100ms'
  2041. type: string
  2042. type: object
  2043. scheme:
  2044. description: Scheme defines the scheme to use for the request
  2045. to the upstream Kubernetes Service. It defaults to https
  2046. when Kubernetes Service port is 443, http otherwise.
  2047. type: string
  2048. serversTransport:
  2049. description: ServersTransport defines the name of ServersTransport
  2050. resource to use. It allows to configure the transport
  2051. between Traefik and your servers. Can only be used on
  2052. a Kubernetes Service.
  2053. type: string
  2054. sticky:
  2055. description: 'Sticky defines the sticky sessions configuration.
  2056. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions'
  2057. properties:
  2058. cookie:
  2059. description: Cookie defines the sticky cookie configuration.
  2060. properties:
  2061. httpOnly:
  2062. description: HTTPOnly defines whether the cookie
  2063. can be accessed by client-side APIs, such as JavaScript.
  2064. type: boolean
  2065. name:
  2066. description: Name defines the Cookie name.
  2067. type: string
  2068. sameSite:
  2069. description: 'SameSite defines the same site policy.
  2070. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite'
  2071. type: string
  2072. secure:
  2073. description: Secure defines whether the cookie can
  2074. only be transmitted over an encrypted connection
  2075. (i.e. HTTPS).
  2076. type: boolean
  2077. type: object
  2078. type: object
  2079. strategy:
  2080. description: Strategy defines the load balancing strategy
  2081. between the servers. RoundRobin is the only supported
  2082. value at the moment.
  2083. type: string
  2084. weight:
  2085. description: Weight defines the weight and should only be
  2086. specified when Name references a TraefikService object
  2087. (and to be precise, one that embeds a Weighted Round Robin).
  2088. type: integer
  2089. required:
  2090. - name
  2091. type: object
  2092. type: array
  2093. name:
  2094. description: Name defines the name of the referenced Kubernetes
  2095. Service or TraefikService. The differentiation between the two
  2096. is specified in the Kind field.
  2097. type: string
  2098. namespace:
  2099. description: Namespace defines the namespace of the referenced
  2100. Kubernetes Service or TraefikService.
  2101. type: string
  2102. nativeLB:
  2103. description: NativeLB controls, when creating the load-balancer,
  2104. whether the LB's children are directly the pods IPs or if the
  2105. only child is the Kubernetes Service clusterIP. The Kubernetes
  2106. Service itself does load-balance to the pods. By default, NativeLB
  2107. is false.
  2108. type: boolean
  2109. passHostHeader:
  2110. description: PassHostHeader defines whether the client Host header
  2111. is forwarded to the upstream Kubernetes Service. By default,
  2112. passHostHeader is true.
  2113. type: boolean
  2114. port:
  2115. anyOf:
  2116. - type: integer
  2117. - type: string
  2118. description: Port defines the port of a Kubernetes Service. This
  2119. can be a reference to a named port.
  2120. x-kubernetes-int-or-string: true
  2121. responseForwarding:
  2122. description: ResponseForwarding defines how Traefik forwards the
  2123. response from the upstream Kubernetes Service to the client.
  2124. properties:
  2125. flushInterval:
  2126. description: 'FlushInterval defines the interval, in milliseconds,
  2127. in between flushes to the client while copying the response
  2128. body. A negative value means to flush immediately after
  2129. each write to the client. This configuration is ignored
  2130. when ReverseProxy recognizes a response as a streaming response;
  2131. for such responses, writes are flushed to the client immediately.
  2132. Default: 100ms'
  2133. type: string
  2134. type: object
  2135. scheme:
  2136. description: Scheme defines the scheme to use for the request
  2137. to the upstream Kubernetes Service. It defaults to https when
  2138. Kubernetes Service port is 443, http otherwise.
  2139. type: string
  2140. serversTransport:
  2141. description: ServersTransport defines the name of ServersTransport
  2142. resource to use. It allows to configure the transport between
  2143. Traefik and your servers. Can only be used on a Kubernetes Service.
  2144. type: string
  2145. sticky:
  2146. description: 'Sticky defines the sticky sessions configuration.
  2147. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions'
  2148. properties:
  2149. cookie:
  2150. description: Cookie defines the sticky cookie configuration.
  2151. properties:
  2152. httpOnly:
  2153. description: HTTPOnly defines whether the cookie can be
  2154. accessed by client-side APIs, such as JavaScript.
  2155. type: boolean
  2156. name:
  2157. description: Name defines the Cookie name.
  2158. type: string
  2159. sameSite:
  2160. description: 'SameSite defines the same site policy. More
  2161. info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite'
  2162. type: string
  2163. secure:
  2164. description: Secure defines whether the cookie can only
  2165. be transmitted over an encrypted connection (i.e. HTTPS).
  2166. type: boolean
  2167. type: object
  2168. type: object
  2169. strategy:
  2170. description: Strategy defines the load balancing strategy between
  2171. the servers. RoundRobin is the only supported value at the moment.
  2172. type: string
  2173. weight:
  2174. description: Weight defines the weight and should only be specified
  2175. when Name references a TraefikService object (and to be precise,
  2176. one that embeds a Weighted Round Robin).
  2177. type: integer
  2178. required:
  2179. - name
  2180. type: object
  2181. weighted:
  2182. description: Weighted defines the Weighted Round Robin configuration.
  2183. properties:
  2184. services:
  2185. description: Services defines the list of Kubernetes Service and/or
  2186. TraefikService to load-balance, with weight.
  2187. items:
  2188. description: Service defines an upstream HTTP service to proxy
  2189. traffic to.
  2190. properties:
  2191. kind:
  2192. description: Kind defines the kind of the Service.
  2193. enum:
  2194. - Service
  2195. - TraefikService
  2196. type: string
  2197. name:
  2198. description: Name defines the name of the referenced Kubernetes
  2199. Service or TraefikService. The differentiation between
  2200. the two is specified in the Kind field.
  2201. type: string
  2202. namespace:
  2203. description: Namespace defines the namespace of the referenced
  2204. Kubernetes Service or TraefikService.
  2205. type: string
  2206. nativeLB:
  2207. description: NativeLB controls, when creating the load-balancer,
  2208. whether the LB's children are directly the pods IPs or
  2209. if the only child is the Kubernetes Service clusterIP.
  2210. The Kubernetes Service itself does load-balance to the
  2211. pods. By default, NativeLB is false.
  2212. type: boolean
  2213. passHostHeader:
  2214. description: PassHostHeader defines whether the client Host
  2215. header is forwarded to the upstream Kubernetes Service.
  2216. By default, passHostHeader is true.
  2217. type: boolean
  2218. port:
  2219. anyOf:
  2220. - type: integer
  2221. - type: string
  2222. description: Port defines the port of a Kubernetes Service.
  2223. This can be a reference to a named port.
  2224. x-kubernetes-int-or-string: true
  2225. responseForwarding:
  2226. description: ResponseForwarding defines how Traefik forwards
  2227. the response from the upstream Kubernetes Service to the
  2228. client.
  2229. properties:
  2230. flushInterval:
  2231. description: 'FlushInterval defines the interval, in
  2232. milliseconds, in between flushes to the client while
  2233. copying the response body. A negative value means
  2234. to flush immediately after each write to the client.
  2235. This configuration is ignored when ReverseProxy recognizes
  2236. a response as a streaming response; for such responses,
  2237. writes are flushed to the client immediately. Default:
  2238. 100ms'
  2239. type: string
  2240. type: object
  2241. scheme:
  2242. description: Scheme defines the scheme to use for the request
  2243. to the upstream Kubernetes Service. It defaults to https
  2244. when Kubernetes Service port is 443, http otherwise.
  2245. type: string
  2246. serversTransport:
  2247. description: ServersTransport defines the name of ServersTransport
  2248. resource to use. It allows to configure the transport
  2249. between Traefik and your servers. Can only be used on
  2250. a Kubernetes Service.
  2251. type: string
  2252. sticky:
  2253. description: 'Sticky defines the sticky sessions configuration.
  2254. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions'
  2255. properties:
  2256. cookie:
  2257. description: Cookie defines the sticky cookie configuration.
  2258. properties:
  2259. httpOnly:
  2260. description: HTTPOnly defines whether the cookie
  2261. can be accessed by client-side APIs, such as JavaScript.
  2262. type: boolean
  2263. name:
  2264. description: Name defines the Cookie name.
  2265. type: string
  2266. sameSite:
  2267. description: 'SameSite defines the same site policy.
  2268. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite'
  2269. type: string
  2270. secure:
  2271. description: Secure defines whether the cookie can
  2272. only be transmitted over an encrypted connection
  2273. (i.e. HTTPS).
  2274. type: boolean
  2275. type: object
  2276. type: object
  2277. strategy:
  2278. description: Strategy defines the load balancing strategy
  2279. between the servers. RoundRobin is the only supported
  2280. value at the moment.
  2281. type: string
  2282. weight:
  2283. description: Weight defines the weight and should only be
  2284. specified when Name references a TraefikService object
  2285. (and to be precise, one that embeds a Weighted Round Robin).
  2286. type: integer
  2287. required:
  2288. - name
  2289. type: object
  2290. type: array
  2291. sticky:
  2292. description: 'Sticky defines whether sticky sessions are enabled.
  2293. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#stickiness-and-load-balancing'
  2294. properties:
  2295. cookie:
  2296. description: Cookie defines the sticky cookie configuration.
  2297. properties:
  2298. httpOnly:
  2299. description: HTTPOnly defines whether the cookie can be
  2300. accessed by client-side APIs, such as JavaScript.
  2301. type: boolean
  2302. name:
  2303. description: Name defines the Cookie name.
  2304. type: string
  2305. sameSite:
  2306. description: 'SameSite defines the same site policy. More
  2307. info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite'
  2308. type: string
  2309. secure:
  2310. description: Secure defines whether the cookie can only
  2311. be transmitted over an encrypted connection (i.e. HTTPS).
  2312. type: boolean
  2313. type: object
  2314. type: object
  2315. type: object
  2316. type: object
  2317. required:
  2318. - metadata
  2319. - spec
  2320. type: object
  2321. served: true
  2322. storage: true
  2323. status:
  2324. acceptedNames:
  2325. kind: ""
  2326. plural: ""
  2327. conditions: []
  2328. storedVersions: []
  2329. ---
  2330. apiVersion: apiextensions.k8s.io/v1
  2331. kind: CustomResourceDefinition
  2332. metadata:
  2333. annotations:
  2334. controller-gen.kubebuilder.io/version: v0.6.2
  2335. creationTimestamp: null
  2336. name: ingressroutes.traefik.containo.us
  2337. spec:
  2338. group: traefik.containo.us
  2339. names:
  2340. kind: IngressRoute
  2341. listKind: IngressRouteList
  2342. plural: ingressroutes
  2343. singular: ingressroute
  2344. scope: Namespaced
  2345. versions:
  2346. - name: v1alpha1
  2347. schema:
  2348. openAPIV3Schema:
  2349. description: IngressRoute is the CRD implementation of a Traefik HTTP Router.
  2350. properties:
  2351. apiVersion:
  2352. description: 'APIVersion defines the versioned schema of this representation
  2353. of an object. Servers should convert recognized schemas to the latest
  2354. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  2355. type: string
  2356. kind:
  2357. description: 'Kind is a string value representing the REST resource this
  2358. object represents. Servers may infer this from the endpoint the client
  2359. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  2360. type: string
  2361. metadata:
  2362. type: object
  2363. spec:
  2364. description: IngressRouteSpec defines the desired state of IngressRoute.
  2365. properties:
  2366. entryPoints:
  2367. description: 'EntryPoints defines the list of entry point names to
  2368. bind to. Entry points have to be configured in the static configuration.
  2369. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/
  2370. Default: all.'
  2371. items:
  2372. type: string
  2373. type: array
  2374. routes:
  2375. description: Routes defines the list of routes.
  2376. items:
  2377. description: Route holds the HTTP route configuration.
  2378. properties:
  2379. kind:
  2380. description: Kind defines the kind of the route. Rule is the
  2381. only supported kind.
  2382. enum:
  2383. - Rule
  2384. type: string
  2385. match:
  2386. description: 'Match defines the router''s rule. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#rule'
  2387. type: string
  2388. middlewares:
  2389. description: 'Middlewares defines the list of references to
  2390. Middleware resources. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-middleware'
  2391. items:
  2392. description: MiddlewareRef is a reference to a Middleware
  2393. resource.
  2394. properties:
  2395. name:
  2396. description: Name defines the name of the referenced Middleware
  2397. resource.
  2398. type: string
  2399. namespace:
  2400. description: Namespace defines the namespace of the referenced
  2401. Middleware resource.
  2402. type: string
  2403. required:
  2404. - name
  2405. type: object
  2406. type: array
  2407. priority:
  2408. description: 'Priority defines the router''s priority. More
  2409. info: https://doc.traefik.io/traefik/v2.10/routing/routers/#priority'
  2410. type: integer
  2411. services:
  2412. description: Services defines the list of Service. It can contain
  2413. any combination of TraefikService and/or reference to a Kubernetes
  2414. Service.
  2415. items:
  2416. description: Service defines an upstream HTTP service to proxy
  2417. traffic to.
  2418. properties:
  2419. kind:
  2420. description: Kind defines the kind of the Service.
  2421. enum:
  2422. - Service
  2423. - TraefikService
  2424. type: string
  2425. name:
  2426. description: Name defines the name of the referenced Kubernetes
  2427. Service or TraefikService. The differentiation between
  2428. the two is specified in the Kind field.
  2429. type: string
  2430. namespace:
  2431. description: Namespace defines the namespace of the referenced
  2432. Kubernetes Service or TraefikService.
  2433. type: string
  2434. nativeLB:
  2435. description: NativeLB controls, when creating the load-balancer,
  2436. whether the LB's children are directly the pods IPs
  2437. or if the only child is the Kubernetes Service clusterIP.
  2438. The Kubernetes Service itself does load-balance to the
  2439. pods. By default, NativeLB is false.
  2440. type: boolean
  2441. passHostHeader:
  2442. description: PassHostHeader defines whether the client
  2443. Host header is forwarded to the upstream Kubernetes
  2444. Service. By default, passHostHeader is true.
  2445. type: boolean
  2446. port:
  2447. anyOf:
  2448. - type: integer
  2449. - type: string
  2450. description: Port defines the port of a Kubernetes Service.
  2451. This can be a reference to a named port.
  2452. x-kubernetes-int-or-string: true
  2453. responseForwarding:
  2454. description: ResponseForwarding defines how Traefik forwards
  2455. the response from the upstream Kubernetes Service to
  2456. the client.
  2457. properties:
  2458. flushInterval:
  2459. description: 'FlushInterval defines the interval,
  2460. in milliseconds, in between flushes to the client
  2461. while copying the response body. A negative value
  2462. means to flush immediately after each write to the
  2463. client. This configuration is ignored when ReverseProxy
  2464. recognizes a response as a streaming response; for
  2465. such responses, writes are flushed to the client
  2466. immediately. Default: 100ms'
  2467. type: string
  2468. type: object
  2469. scheme:
  2470. description: Scheme defines the scheme to use for the
  2471. request to the upstream Kubernetes Service. It defaults
  2472. to https when Kubernetes Service port is 443, http otherwise.
  2473. type: string
  2474. serversTransport:
  2475. description: ServersTransport defines the name of ServersTransport
  2476. resource to use. It allows to configure the transport
  2477. between Traefik and your servers. Can only be used on
  2478. a Kubernetes Service.
  2479. type: string
  2480. sticky:
  2481. description: 'Sticky defines the sticky sessions configuration.
  2482. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions'
  2483. properties:
  2484. cookie:
  2485. description: Cookie defines the sticky cookie configuration.
  2486. properties:
  2487. httpOnly:
  2488. description: HTTPOnly defines whether the cookie
  2489. can be accessed by client-side APIs, such as
  2490. JavaScript.
  2491. type: boolean
  2492. name:
  2493. description: Name defines the Cookie name.
  2494. type: string
  2495. sameSite:
  2496. description: 'SameSite defines the same site policy.
  2497. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite'
  2498. type: string
  2499. secure:
  2500. description: Secure defines whether the cookie
  2501. can only be transmitted over an encrypted connection
  2502. (i.e. HTTPS).
  2503. type: boolean
  2504. type: object
  2505. type: object
  2506. strategy:
  2507. description: Strategy defines the load balancing strategy
  2508. between the servers. RoundRobin is the only supported
  2509. value at the moment.
  2510. type: string
  2511. weight:
  2512. description: Weight defines the weight and should only
  2513. be specified when Name references a TraefikService object
  2514. (and to be precise, one that embeds a Weighted Round
  2515. Robin).
  2516. type: integer
  2517. required:
  2518. - name
  2519. type: object
  2520. type: array
  2521. required:
  2522. - kind
  2523. - match
  2524. type: object
  2525. type: array
  2526. tls:
  2527. description: 'TLS defines the TLS configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls'
  2528. properties:
  2529. certResolver:
  2530. description: 'CertResolver defines the name of the certificate
  2531. resolver to use. Cert resolvers have to be configured in the
  2532. static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers'
  2533. type: string
  2534. domains:
  2535. description: 'Domains defines the list of domains that will be
  2536. used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains'
  2537. items:
  2538. description: Domain holds a domain name with SANs.
  2539. properties:
  2540. main:
  2541. description: Main defines the main domain name.
  2542. type: string
  2543. sans:
  2544. description: SANs defines the subject alternative domain
  2545. names.
  2546. items:
  2547. type: string
  2548. type: array
  2549. type: object
  2550. type: array
  2551. options:
  2552. description: 'Options defines the reference to a TLSOption, that
  2553. specifies the parameters of the TLS connection. If not defined,
  2554. the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options'
  2555. properties:
  2556. name:
  2557. description: 'Name defines the name of the referenced TLSOption.
  2558. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption'
  2559. type: string
  2560. namespace:
  2561. description: 'Namespace defines the namespace of the referenced
  2562. TLSOption. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption'
  2563. type: string
  2564. required:
  2565. - name
  2566. type: object
  2567. secretName:
  2568. description: SecretName is the name of the referenced Kubernetes
  2569. Secret to specify the certificate details.
  2570. type: string
  2571. store:
  2572. description: Store defines the reference to the TLSStore, that
  2573. will be used to store certificates. Please note that only `default`
  2574. TLSStore can be used.
  2575. properties:
  2576. name:
  2577. description: 'Name defines the name of the referenced TLSStore.
  2578. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore'
  2579. type: string
  2580. namespace:
  2581. description: 'Namespace defines the namespace of the referenced
  2582. TLSStore. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore'
  2583. type: string
  2584. required:
  2585. - name
  2586. type: object
  2587. type: object
  2588. required:
  2589. - routes
  2590. type: object
  2591. required:
  2592. - metadata
  2593. - spec
  2594. type: object
  2595. served: true
  2596. storage: true
  2597. status:
  2598. acceptedNames:
  2599. kind: ""
  2600. plural: ""
  2601. conditions: []
  2602. storedVersions: []
  2603. ---
  2604. apiVersion: apiextensions.k8s.io/v1
  2605. kind: CustomResourceDefinition
  2606. metadata:
  2607. annotations:
  2608. controller-gen.kubebuilder.io/version: v0.6.2
  2609. creationTimestamp: null
  2610. name: ingressroutetcps.traefik.containo.us
  2611. spec:
  2612. group: traefik.containo.us
  2613. names:
  2614. kind: IngressRouteTCP
  2615. listKind: IngressRouteTCPList
  2616. plural: ingressroutetcps
  2617. singular: ingressroutetcp
  2618. scope: Namespaced
  2619. versions:
  2620. - name: v1alpha1
  2621. schema:
  2622. openAPIV3Schema:
  2623. description: IngressRouteTCP is the CRD implementation of a Traefik TCP Router.
  2624. properties:
  2625. apiVersion:
  2626. description: 'APIVersion defines the versioned schema of this representation
  2627. of an object. Servers should convert recognized schemas to the latest
  2628. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  2629. type: string
  2630. kind:
  2631. description: 'Kind is a string value representing the REST resource this
  2632. object represents. Servers may infer this from the endpoint the client
  2633. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  2634. type: string
  2635. metadata:
  2636. type: object
  2637. spec:
  2638. description: IngressRouteTCPSpec defines the desired state of IngressRouteTCP.
  2639. properties:
  2640. entryPoints:
  2641. description: 'EntryPoints defines the list of entry point names to
  2642. bind to. Entry points have to be configured in the static configuration.
  2643. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/
  2644. Default: all.'
  2645. items:
  2646. type: string
  2647. type: array
  2648. routes:
  2649. description: Routes defines the list of routes.
  2650. items:
  2651. description: RouteTCP holds the TCP route configuration.
  2652. properties:
  2653. match:
  2654. description: 'Match defines the router''s rule. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#rule_1'
  2655. type: string
  2656. middlewares:
  2657. description: Middlewares defines the list of references to MiddlewareTCP
  2658. resources.
  2659. items:
  2660. description: ObjectReference is a generic reference to a Traefik
  2661. resource.
  2662. properties:
  2663. name:
  2664. description: Name defines the name of the referenced Traefik
  2665. resource.
  2666. type: string
  2667. namespace:
  2668. description: Namespace defines the namespace of the referenced
  2669. Traefik resource.
  2670. type: string
  2671. required:
  2672. - name
  2673. type: object
  2674. type: array
  2675. priority:
  2676. description: 'Priority defines the router''s priority. More
  2677. info: https://doc.traefik.io/traefik/v2.10/routing/routers/#priority_1'
  2678. type: integer
  2679. services:
  2680. description: Services defines the list of TCP services.
  2681. items:
  2682. description: ServiceTCP defines an upstream TCP service to
  2683. proxy traffic to.
  2684. properties:
  2685. name:
  2686. description: Name defines the name of the referenced Kubernetes
  2687. Service.
  2688. type: string
  2689. namespace:
  2690. description: Namespace defines the namespace of the referenced
  2691. Kubernetes Service.
  2692. type: string
  2693. nativeLB:
  2694. description: NativeLB controls, when creating the load-balancer,
  2695. whether the LB's children are directly the pods IPs
  2696. or if the only child is the Kubernetes Service clusterIP.
  2697. The Kubernetes Service itself does load-balance to the
  2698. pods. By default, NativeLB is false.
  2699. type: boolean
  2700. port:
  2701. anyOf:
  2702. - type: integer
  2703. - type: string
  2704. description: Port defines the port of a Kubernetes Service.
  2705. This can be a reference to a named port.
  2706. x-kubernetes-int-or-string: true
  2707. proxyProtocol:
  2708. description: 'ProxyProtocol defines the PROXY protocol
  2709. configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#proxy-protocol'
  2710. properties:
  2711. version:
  2712. description: Version defines the PROXY Protocol version
  2713. to use.
  2714. type: integer
  2715. type: object
  2716. terminationDelay:
  2717. description: TerminationDelay defines the deadline that
  2718. the proxy sets, after one of its connected peers indicates
  2719. it has closed the writing capability of its connection,
  2720. to close the reading capability as well, hence fully
  2721. terminating the connection. It is a duration in milliseconds,
  2722. defaulting to 100. A negative value means an infinite
  2723. deadline (i.e. the reading capability is never closed).
  2724. type: integer
  2725. weight:
  2726. description: Weight defines the weight used when balancing
  2727. requests between multiple Kubernetes Service.
  2728. type: integer
  2729. required:
  2730. - name
  2731. - port
  2732. type: object
  2733. type: array
  2734. required:
  2735. - match
  2736. type: object
  2737. type: array
  2738. tls:
  2739. description: 'TLS defines the TLS configuration on a layer 4 / TCP
  2740. Route. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls_1'
  2741. properties:
  2742. certResolver:
  2743. description: 'CertResolver defines the name of the certificate
  2744. resolver to use. Cert resolvers have to be configured in the
  2745. static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers'
  2746. type: string
  2747. domains:
  2748. description: 'Domains defines the list of domains that will be
  2749. used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains'
  2750. items:
  2751. description: Domain holds a domain name with SANs.
  2752. properties:
  2753. main:
  2754. description: Main defines the main domain name.
  2755. type: string
  2756. sans:
  2757. description: SANs defines the subject alternative domain
  2758. names.
  2759. items:
  2760. type: string
  2761. type: array
  2762. type: object
  2763. type: array
  2764. options:
  2765. description: 'Options defines the reference to a TLSOption, that
  2766. specifies the parameters of the TLS connection. If not defined,
  2767. the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options'
  2768. properties:
  2769. name:
  2770. description: Name defines the name of the referenced Traefik
  2771. resource.
  2772. type: string
  2773. namespace:
  2774. description: Namespace defines the namespace of the referenced
  2775. Traefik resource.
  2776. type: string
  2777. required:
  2778. - name
  2779. type: object
  2780. passthrough:
  2781. description: Passthrough defines whether a TLS router will terminate
  2782. the TLS connection.
  2783. type: boolean
  2784. secretName:
  2785. description: SecretName is the name of the referenced Kubernetes
  2786. Secret to specify the certificate details.
  2787. type: string
  2788. store:
  2789. description: Store defines the reference to the TLSStore, that
  2790. will be used to store certificates. Please note that only `default`
  2791. TLSStore can be used.
  2792. properties:
  2793. name:
  2794. description: Name defines the name of the referenced Traefik
  2795. resource.
  2796. type: string
  2797. namespace:
  2798. description: Namespace defines the namespace of the referenced
  2799. Traefik resource.
  2800. type: string
  2801. required:
  2802. - name
  2803. type: object
  2804. type: object
  2805. required:
  2806. - routes
  2807. type: object
  2808. required:
  2809. - metadata
  2810. - spec
  2811. type: object
  2812. served: true
  2813. storage: true
  2814. status:
  2815. acceptedNames:
  2816. kind: ""
  2817. plural: ""
  2818. conditions: []
  2819. storedVersions: []
  2820. ---
  2821. apiVersion: apiextensions.k8s.io/v1
  2822. kind: CustomResourceDefinition
  2823. metadata:
  2824. annotations:
  2825. controller-gen.kubebuilder.io/version: v0.6.2
  2826. creationTimestamp: null
  2827. name: ingressrouteudps.traefik.containo.us
  2828. spec:
  2829. group: traefik.containo.us
  2830. names:
  2831. kind: IngressRouteUDP
  2832. listKind: IngressRouteUDPList
  2833. plural: ingressrouteudps
  2834. singular: ingressrouteudp
  2835. scope: Namespaced
  2836. versions:
  2837. - name: v1alpha1
  2838. schema:
  2839. openAPIV3Schema:
  2840. description: IngressRouteUDP is a CRD implementation of a Traefik UDP Router.
  2841. properties:
  2842. apiVersion:
  2843. description: 'APIVersion defines the versioned schema of this representation
  2844. of an object. Servers should convert recognized schemas to the latest
  2845. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  2846. type: string
  2847. kind:
  2848. description: 'Kind is a string value representing the REST resource this
  2849. object represents. Servers may infer this from the endpoint the client
  2850. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  2851. type: string
  2852. metadata:
  2853. type: object
  2854. spec:
  2855. description: IngressRouteUDPSpec defines the desired state of a IngressRouteUDP.
  2856. properties:
  2857. entryPoints:
  2858. description: 'EntryPoints defines the list of entry point names to
  2859. bind to. Entry points have to be configured in the static configuration.
  2860. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/
  2861. Default: all.'
  2862. items:
  2863. type: string
  2864. type: array
  2865. routes:
  2866. description: Routes defines the list of routes.
  2867. items:
  2868. description: RouteUDP holds the UDP route configuration.
  2869. properties:
  2870. services:
  2871. description: Services defines the list of UDP services.
  2872. items:
  2873. description: ServiceUDP defines an upstream UDP service to
  2874. proxy traffic to.
  2875. properties:
  2876. name:
  2877. description: Name defines the name of the referenced Kubernetes
  2878. Service.
  2879. type: string
  2880. namespace:
  2881. description: Namespace defines the namespace of the referenced
  2882. Kubernetes Service.
  2883. type: string
  2884. nativeLB:
  2885. description: NativeLB controls, when creating the load-balancer,
  2886. whether the LB's children are directly the pods IPs
  2887. or if the only child is the Kubernetes Service clusterIP.
  2888. The Kubernetes Service itself does load-balance to the
  2889. pods. By default, NativeLB is false.
  2890. type: boolean
  2891. port:
  2892. anyOf:
  2893. - type: integer
  2894. - type: string
  2895. description: Port defines the port of a Kubernetes Service.
  2896. This can be a reference to a named port.
  2897. x-kubernetes-int-or-string: true
  2898. weight:
  2899. description: Weight defines the weight used when balancing
  2900. requests between multiple Kubernetes Service.
  2901. type: integer
  2902. required:
  2903. - name
  2904. - port
  2905. type: object
  2906. type: array
  2907. type: object
  2908. type: array
  2909. required:
  2910. - routes
  2911. type: object
  2912. required:
  2913. - metadata
  2914. - spec
  2915. type: object
  2916. served: true
  2917. storage: true
  2918. status:
  2919. acceptedNames:
  2920. kind: ""
  2921. plural: ""
  2922. conditions: []
  2923. storedVersions: []
  2924. ---
  2925. apiVersion: apiextensions.k8s.io/v1
  2926. kind: CustomResourceDefinition
  2927. metadata:
  2928. annotations:
  2929. controller-gen.kubebuilder.io/version: v0.6.2
  2930. creationTimestamp: null
  2931. name: middlewares.traefik.containo.us
  2932. spec:
  2933. group: traefik.containo.us
  2934. names:
  2935. kind: Middleware
  2936. listKind: MiddlewareList
  2937. plural: middlewares
  2938. singular: middleware
  2939. scope: Namespaced
  2940. versions:
  2941. - name: v1alpha1
  2942. schema:
  2943. openAPIV3Schema:
  2944. description: 'Middleware is the CRD implementation of a Traefik Middleware.
  2945. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/overview/'
  2946. properties:
  2947. apiVersion:
  2948. description: 'APIVersion defines the versioned schema of this representation
  2949. of an object. Servers should convert recognized schemas to the latest
  2950. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  2951. type: string
  2952. kind:
  2953. description: 'Kind is a string value representing the REST resource this
  2954. object represents. Servers may infer this from the endpoint the client
  2955. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  2956. type: string
  2957. metadata:
  2958. type: object
  2959. spec:
  2960. description: MiddlewareSpec defines the desired state of a Middleware.
  2961. properties:
  2962. addPrefix:
  2963. description: 'AddPrefix holds the add prefix middleware configuration.
  2964. This middleware updates the path of a request before forwarding
  2965. it. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/addprefix/'
  2966. properties:
  2967. prefix:
  2968. description: Prefix is the string to add before the current path
  2969. in the requested URL. It should include a leading slash (/).
  2970. type: string
  2971. type: object
  2972. basicAuth:
  2973. description: 'BasicAuth holds the basic auth middleware configuration.
  2974. This middleware restricts access to your services to known users.
  2975. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/'
  2976. properties:
  2977. headerField:
  2978. description: 'HeaderField defines a header field to store the
  2979. authenticated user. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/#headerfield'
  2980. type: string
  2981. realm:
  2982. description: 'Realm allows the protected resources on a server
  2983. to be partitioned into a set of protection spaces, each with
  2984. its own authentication scheme. Default: traefik.'
  2985. type: string
  2986. removeHeader:
  2987. description: 'RemoveHeader sets the removeHeader option to true
  2988. to remove the authorization header before forwarding the request
  2989. to your service. Default: false.'
  2990. type: boolean
  2991. secret:
  2992. description: Secret is the name of the referenced Kubernetes Secret
  2993. containing user credentials.
  2994. type: string
  2995. type: object
  2996. buffering:
  2997. description: 'Buffering holds the buffering middleware configuration.
  2998. This middleware retries or limits the size of requests that can
  2999. be forwarded to backends. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#maxrequestbodybytes'
  3000. properties:
  3001. maxRequestBodyBytes:
  3002. description: 'MaxRequestBodyBytes defines the maximum allowed
  3003. body size for the request (in bytes). If the request exceeds
  3004. the allowed size, it is not forwarded to the service, and the
  3005. client gets a 413 (Request Entity Too Large) response. Default:
  3006. 0 (no maximum).'
  3007. format: int64
  3008. type: integer
  3009. maxResponseBodyBytes:
  3010. description: 'MaxResponseBodyBytes defines the maximum allowed
  3011. response size from the service (in bytes). If the response exceeds
  3012. the allowed size, it is not forwarded to the client. The client
  3013. gets a 500 (Internal Server Error) response instead. Default:
  3014. 0 (no maximum).'
  3015. format: int64
  3016. type: integer
  3017. memRequestBodyBytes:
  3018. description: 'MemRequestBodyBytes defines the threshold (in bytes)
  3019. from which the request will be buffered on disk instead of in
  3020. memory. Default: 1048576 (1Mi).'
  3021. format: int64
  3022. type: integer
  3023. memResponseBodyBytes:
  3024. description: 'MemResponseBodyBytes defines the threshold (in bytes)
  3025. from which the response will be buffered on disk instead of
  3026. in memory. Default: 1048576 (1Mi).'
  3027. format: int64
  3028. type: integer
  3029. retryExpression:
  3030. description: 'RetryExpression defines the retry conditions. It
  3031. is a logical combination of functions with operators AND (&&)
  3032. and OR (||). More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#retryexpression'
  3033. type: string
  3034. type: object
  3035. chain:
  3036. description: 'Chain holds the configuration of the chain middleware.
  3037. This middleware enables to define reusable combinations of other
  3038. pieces of middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/chain/'
  3039. properties:
  3040. middlewares:
  3041. description: Middlewares is the list of MiddlewareRef which composes
  3042. the chain.
  3043. items:
  3044. description: MiddlewareRef is a reference to a Middleware resource.
  3045. properties:
  3046. name:
  3047. description: Name defines the name of the referenced Middleware
  3048. resource.
  3049. type: string
  3050. namespace:
  3051. description: Namespace defines the namespace of the referenced
  3052. Middleware resource.
  3053. type: string
  3054. required:
  3055. - name
  3056. type: object
  3057. type: array
  3058. type: object
  3059. circuitBreaker:
  3060. description: CircuitBreaker holds the circuit breaker configuration.
  3061. properties:
  3062. checkPeriod:
  3063. anyOf:
  3064. - type: integer
  3065. - type: string
  3066. description: CheckPeriod is the interval between successive checks
  3067. of the circuit breaker condition (when in standby state).
  3068. x-kubernetes-int-or-string: true
  3069. expression:
  3070. description: Expression is the condition that triggers the tripped
  3071. state.
  3072. type: string
  3073. fallbackDuration:
  3074. anyOf:
  3075. - type: integer
  3076. - type: string
  3077. description: FallbackDuration is the duration for which the circuit
  3078. breaker will wait before trying to recover (from a tripped state).
  3079. x-kubernetes-int-or-string: true
  3080. recoveryDuration:
  3081. anyOf:
  3082. - type: integer
  3083. - type: string
  3084. description: RecoveryDuration is the duration for which the circuit
  3085. breaker will try to recover (as soon as it is in recovering
  3086. state).
  3087. x-kubernetes-int-or-string: true
  3088. type: object
  3089. compress:
  3090. description: 'Compress holds the compress middleware configuration.
  3091. This middleware compresses responses before sending them to the
  3092. client, using gzip compression. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/compress/'
  3093. properties:
  3094. excludedContentTypes:
  3095. description: ExcludedContentTypes defines the list of content
  3096. types to compare the Content-Type header of the incoming requests
  3097. and responses before compressing.
  3098. items:
  3099. type: string
  3100. type: array
  3101. minResponseBodyBytes:
  3102. description: 'MinResponseBodyBytes defines the minimum amount
  3103. of bytes a response body must have to be compressed. Default:
  3104. 1024.'
  3105. type: integer
  3106. type: object
  3107. contentType:
  3108. description: ContentType holds the content-type middleware configuration.
  3109. This middleware exists to enable the correct behavior until at least
  3110. the default one can be changed in a future version.
  3111. properties:
  3112. autoDetect:
  3113. description: AutoDetect specifies whether to let the `Content-Type`
  3114. header, if it has not been set by the backend, be automatically
  3115. set to a value derived from the contents of the response. As
  3116. a proxy, the default behavior should be to leave the header
  3117. alone, regardless of what the backend did with it. However,
  3118. the historic default was to always auto-detect and set the header
  3119. if it was nil, and it is going to be kept that way in order
  3120. to support users currently relying on it.
  3121. type: boolean
  3122. type: object
  3123. digestAuth:
  3124. description: 'DigestAuth holds the digest auth middleware configuration.
  3125. This middleware restricts access to your services to known users.
  3126. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/digestauth/'
  3127. properties:
  3128. headerField:
  3129. description: 'HeaderField defines a header field to store the
  3130. authenticated user. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/#headerfield'
  3131. type: string
  3132. realm:
  3133. description: 'Realm allows the protected resources on a server
  3134. to be partitioned into a set of protection spaces, each with
  3135. its own authentication scheme. Default: traefik.'
  3136. type: string
  3137. removeHeader:
  3138. description: RemoveHeader defines whether to remove the authorization
  3139. header before forwarding the request to the backend.
  3140. type: boolean
  3141. secret:
  3142. description: Secret is the name of the referenced Kubernetes Secret
  3143. containing user credentials.
  3144. type: string
  3145. type: object
  3146. errors:
  3147. description: 'ErrorPage holds the custom error middleware configuration.
  3148. This middleware returns a custom page in lieu of the default, according
  3149. to configured ranges of HTTP Status codes. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/'
  3150. properties:
  3151. query:
  3152. description: Query defines the URL for the error page (hosted
  3153. by service). The {status} variable can be used in order to insert
  3154. the status code in the URL.
  3155. type: string
  3156. service:
  3157. description: 'Service defines the reference to a Kubernetes Service
  3158. that will serve the error page. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/#service'
  3159. properties:
  3160. kind:
  3161. description: Kind defines the kind of the Service.
  3162. enum:
  3163. - Service
  3164. - TraefikService
  3165. type: string
  3166. name:
  3167. description: Name defines the name of the referenced Kubernetes
  3168. Service or TraefikService. The differentiation between the
  3169. two is specified in the Kind field.
  3170. type: string
  3171. namespace:
  3172. description: Namespace defines the namespace of the referenced
  3173. Kubernetes Service or TraefikService.
  3174. type: string
  3175. nativeLB:
  3176. description: NativeLB controls, when creating the load-balancer,
  3177. whether the LB's children are directly the pods IPs or if
  3178. the only child is the Kubernetes Service clusterIP. The
  3179. Kubernetes Service itself does load-balance to the pods.
  3180. By default, NativeLB is false.
  3181. type: boolean
  3182. passHostHeader:
  3183. description: PassHostHeader defines whether the client Host
  3184. header is forwarded to the upstream Kubernetes Service.
  3185. By default, passHostHeader is true.
  3186. type: boolean
  3187. port:
  3188. anyOf:
  3189. - type: integer
  3190. - type: string
  3191. description: Port defines the port of a Kubernetes Service.
  3192. This can be a reference to a named port.
  3193. x-kubernetes-int-or-string: true
  3194. responseForwarding:
  3195. description: ResponseForwarding defines how Traefik forwards
  3196. the response from the upstream Kubernetes Service to the
  3197. client.
  3198. properties:
  3199. flushInterval:
  3200. description: 'FlushInterval defines the interval, in milliseconds,
  3201. in between flushes to the client while copying the response
  3202. body. A negative value means to flush immediately after
  3203. each write to the client. This configuration is ignored
  3204. when ReverseProxy recognizes a response as a streaming
  3205. response; for such responses, writes are flushed to
  3206. the client immediately. Default: 100ms'
  3207. type: string
  3208. type: object
  3209. scheme:
  3210. description: Scheme defines the scheme to use for the request
  3211. to the upstream Kubernetes Service. It defaults to https
  3212. when Kubernetes Service port is 443, http otherwise.
  3213. type: string
  3214. serversTransport:
  3215. description: ServersTransport defines the name of ServersTransport
  3216. resource to use. It allows to configure the transport between
  3217. Traefik and your servers. Can only be used on a Kubernetes
  3218. Service.
  3219. type: string
  3220. sticky:
  3221. description: 'Sticky defines the sticky sessions configuration.
  3222. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions'
  3223. properties:
  3224. cookie:
  3225. description: Cookie defines the sticky cookie configuration.
  3226. properties:
  3227. httpOnly:
  3228. description: HTTPOnly defines whether the cookie can
  3229. be accessed by client-side APIs, such as JavaScript.
  3230. type: boolean
  3231. name:
  3232. description: Name defines the Cookie name.
  3233. type: string
  3234. sameSite:
  3235. description: 'SameSite defines the same site policy.
  3236. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite'
  3237. type: string
  3238. secure:
  3239. description: Secure defines whether the cookie can
  3240. only be transmitted over an encrypted connection
  3241. (i.e. HTTPS).
  3242. type: boolean
  3243. type: object
  3244. type: object
  3245. strategy:
  3246. description: Strategy defines the load balancing strategy
  3247. between the servers. RoundRobin is the only supported value
  3248. at the moment.
  3249. type: string
  3250. weight:
  3251. description: Weight defines the weight and should only be
  3252. specified when Name references a TraefikService object (and
  3253. to be precise, one that embeds a Weighted Round Robin).
  3254. type: integer
  3255. required:
  3256. - name
  3257. type: object
  3258. status:
  3259. description: Status defines which status or range of statuses
  3260. should result in an error page. It can be either a status code
  3261. as a number (500), as multiple comma-separated numbers (500,502),
  3262. as ranges by separating two codes with a dash (500-599), or
  3263. a combination of the two (404,418,500-599).
  3264. items:
  3265. type: string
  3266. type: array
  3267. type: object
  3268. forwardAuth:
  3269. description: 'ForwardAuth holds the forward auth middleware configuration.
  3270. This middleware delegates the request authentication to a Service.
  3271. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/'
  3272. properties:
  3273. address:
  3274. description: Address defines the authentication server address.
  3275. type: string
  3276. authRequestHeaders:
  3277. description: AuthRequestHeaders defines the list of the headers
  3278. to copy from the request to the authentication server. If not
  3279. set or empty then all request headers are passed.
  3280. items:
  3281. type: string
  3282. type: array
  3283. authResponseHeaders:
  3284. description: AuthResponseHeaders defines the list of headers to
  3285. copy from the authentication server response and set on forwarded
  3286. request, replacing any existing conflicting headers.
  3287. items:
  3288. type: string
  3289. type: array
  3290. authResponseHeadersRegex:
  3291. description: 'AuthResponseHeadersRegex defines the regex to match
  3292. headers to copy from the authentication server response and
  3293. set on forwarded request, after stripping all headers that match
  3294. the regex. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/#authresponseheadersregex'
  3295. type: string
  3296. tls:
  3297. description: TLS defines the configuration used to secure the
  3298. connection to the authentication server.
  3299. properties:
  3300. caOptional:
  3301. type: boolean
  3302. caSecret:
  3303. description: CASecret is the name of the referenced Kubernetes
  3304. Secret containing the CA to validate the server certificate.
  3305. The CA certificate is extracted from key `tls.ca` or `ca.crt`.
  3306. type: string
  3307. certSecret:
  3308. description: CertSecret is the name of the referenced Kubernetes
  3309. Secret containing the client certificate. The client certificate
  3310. is extracted from the keys `tls.crt` and `tls.key`.
  3311. type: string
  3312. insecureSkipVerify:
  3313. description: InsecureSkipVerify defines whether the server
  3314. certificates should be validated.
  3315. type: boolean
  3316. type: object
  3317. trustForwardHeader:
  3318. description: 'TrustForwardHeader defines whether to trust (ie:
  3319. forward) all X-Forwarded-* headers.'
  3320. type: boolean
  3321. type: object
  3322. headers:
  3323. description: 'Headers holds the headers middleware configuration.
  3324. This middleware manages the requests and responses headers. More
  3325. info: https://doc.traefik.io/traefik/v2.10/middlewares/http/headers/#customrequestheaders'
  3326. properties:
  3327. accessControlAllowCredentials:
  3328. description: AccessControlAllowCredentials defines whether the
  3329. request can include user credentials.
  3330. type: boolean
  3331. accessControlAllowHeaders:
  3332. description: AccessControlAllowHeaders defines the Access-Control-Request-Headers
  3333. values sent in preflight response.
  3334. items:
  3335. type: string
  3336. type: array
  3337. accessControlAllowMethods:
  3338. description: AccessControlAllowMethods defines the Access-Control-Request-Method
  3339. values sent in preflight response.
  3340. items:
  3341. type: string
  3342. type: array
  3343. accessControlAllowOriginList:
  3344. description: AccessControlAllowOriginList is a list of allowable
  3345. origins. Can also be a wildcard origin "*".
  3346. items:
  3347. type: string
  3348. type: array
  3349. accessControlAllowOriginListRegex:
  3350. description: AccessControlAllowOriginListRegex is a list of allowable
  3351. origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/).
  3352. items:
  3353. type: string
  3354. type: array
  3355. accessControlExposeHeaders:
  3356. description: AccessControlExposeHeaders defines the Access-Control-Expose-Headers
  3357. values sent in preflight response.
  3358. items:
  3359. type: string
  3360. type: array
  3361. accessControlMaxAge:
  3362. description: AccessControlMaxAge defines the time that a preflight
  3363. request may be cached.
  3364. format: int64
  3365. type: integer
  3366. addVaryHeader:
  3367. description: AddVaryHeader defines whether the Vary header is
  3368. automatically added/updated when the AccessControlAllowOriginList
  3369. is set.
  3370. type: boolean
  3371. allowedHosts:
  3372. description: AllowedHosts defines the fully qualified list of
  3373. allowed domain names.
  3374. items:
  3375. type: string
  3376. type: array
  3377. browserXssFilter:
  3378. description: BrowserXSSFilter defines whether to add the X-XSS-Protection
  3379. header with the value 1; mode=block.
  3380. type: boolean
  3381. contentSecurityPolicy:
  3382. description: ContentSecurityPolicy defines the Content-Security-Policy
  3383. header value.
  3384. type: string
  3385. contentTypeNosniff:
  3386. description: ContentTypeNosniff defines whether to add the X-Content-Type-Options
  3387. header with the nosniff value.
  3388. type: boolean
  3389. customBrowserXSSValue:
  3390. description: CustomBrowserXSSValue defines the X-XSS-Protection
  3391. header value. This overrides the BrowserXssFilter option.
  3392. type: string
  3393. customFrameOptionsValue:
  3394. description: CustomFrameOptionsValue defines the X-Frame-Options
  3395. header value. This overrides the FrameDeny option.
  3396. type: string
  3397. customRequestHeaders:
  3398. additionalProperties:
  3399. type: string
  3400. description: CustomRequestHeaders defines the header names and
  3401. values to apply to the request.
  3402. type: object
  3403. customResponseHeaders:
  3404. additionalProperties:
  3405. type: string
  3406. description: CustomResponseHeaders defines the header names and
  3407. values to apply to the response.
  3408. type: object
  3409. featurePolicy:
  3410. description: 'Deprecated: use PermissionsPolicy instead.'
  3411. type: string
  3412. forceSTSHeader:
  3413. description: ForceSTSHeader defines whether to add the STS header
  3414. even when the connection is HTTP.
  3415. type: boolean
  3416. frameDeny:
  3417. description: FrameDeny defines whether to add the X-Frame-Options
  3418. header with the DENY value.
  3419. type: boolean
  3420. hostsProxyHeaders:
  3421. description: HostsProxyHeaders defines the header keys that may
  3422. hold a proxied hostname value for the request.
  3423. items:
  3424. type: string
  3425. type: array
  3426. isDevelopment:
  3427. description: IsDevelopment defines whether to mitigate the unwanted
  3428. effects of the AllowedHosts, SSL, and STS options when developing.
  3429. Usually testing takes place using HTTP, not HTTPS, and on localhost,
  3430. not your production domain. If you would like your development
  3431. environment to mimic production with complete Host blocking,
  3432. SSL redirects, and STS headers, leave this as false.
  3433. type: boolean
  3434. permissionsPolicy:
  3435. description: PermissionsPolicy defines the Permissions-Policy
  3436. header value. This allows sites to control browser features.
  3437. type: string
  3438. publicKey:
  3439. description: PublicKey is the public key that implements HPKP
  3440. to prevent MITM attacks with forged certificates.
  3441. type: string
  3442. referrerPolicy:
  3443. description: ReferrerPolicy defines the Referrer-Policy header
  3444. value. This allows sites to control whether browsers forward
  3445. the Referer header to other sites.
  3446. type: string
  3447. sslForceHost:
  3448. description: 'Deprecated: use RedirectRegex instead.'
  3449. type: boolean
  3450. sslHost:
  3451. description: 'Deprecated: use RedirectRegex instead.'
  3452. type: string
  3453. sslProxyHeaders:
  3454. additionalProperties:
  3455. type: string
  3456. description: 'SSLProxyHeaders defines the header keys with associated
  3457. values that would indicate a valid HTTPS request. It can be
  3458. useful when using other proxies (example: "X-Forwarded-Proto":
  3459. "https").'
  3460. type: object
  3461. sslRedirect:
  3462. description: 'Deprecated: use EntryPoint redirection or RedirectScheme
  3463. instead.'
  3464. type: boolean
  3465. sslTemporaryRedirect:
  3466. description: 'Deprecated: use EntryPoint redirection or RedirectScheme
  3467. instead.'
  3468. type: boolean
  3469. stsIncludeSubdomains:
  3470. description: STSIncludeSubdomains defines whether the includeSubDomains
  3471. directive is appended to the Strict-Transport-Security header.
  3472. type: boolean
  3473. stsPreload:
  3474. description: STSPreload defines whether the preload flag is appended
  3475. to the Strict-Transport-Security header.
  3476. type: boolean
  3477. stsSeconds:
  3478. description: STSSeconds defines the max-age of the Strict-Transport-Security
  3479. header. If set to 0, the header is not set.
  3480. format: int64
  3481. type: integer
  3482. type: object
  3483. inFlightReq:
  3484. description: 'InFlightReq holds the in-flight request middleware configuration.
  3485. This middleware limits the number of requests being processed and
  3486. served concurrently. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/'
  3487. properties:
  3488. amount:
  3489. description: Amount defines the maximum amount of allowed simultaneous
  3490. in-flight request. The middleware responds with HTTP 429 Too
  3491. Many Requests if there are already amount requests in progress
  3492. (based on the same sourceCriterion strategy).
  3493. format: int64
  3494. type: integer
  3495. sourceCriterion:
  3496. description: 'SourceCriterion defines what criterion is used to
  3497. group requests as originating from a common source. If several
  3498. strategies are defined at the same time, an error will be raised.
  3499. If none are set, the default is to use the requestHost. More
  3500. info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/#sourcecriterion'
  3501. properties:
  3502. ipStrategy:
  3503. description: 'IPStrategy holds the IP strategy configuration
  3504. used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy'
  3505. properties:
  3506. depth:
  3507. description: Depth tells Traefik to use the X-Forwarded-For
  3508. header and take the IP located at the depth position
  3509. (starting from the right).
  3510. type: integer
  3511. excludedIPs:
  3512. description: ExcludedIPs configures Traefik to scan the
  3513. X-Forwarded-For header and select the first IP not in
  3514. the list.
  3515. items:
  3516. type: string
  3517. type: array
  3518. type: object
  3519. requestHeaderName:
  3520. description: RequestHeaderName defines the name of the header
  3521. used to group incoming requests.
  3522. type: string
  3523. requestHost:
  3524. description: RequestHost defines whether to consider the request
  3525. Host as the source.
  3526. type: boolean
  3527. type: object
  3528. type: object
  3529. ipWhiteList:
  3530. description: 'IPWhiteList holds the IP whitelist middleware configuration.
  3531. This middleware accepts / refuses requests based on the client IP.
  3532. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/'
  3533. properties:
  3534. ipStrategy:
  3535. description: 'IPStrategy holds the IP strategy configuration used
  3536. by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy'
  3537. properties:
  3538. depth:
  3539. description: Depth tells Traefik to use the X-Forwarded-For
  3540. header and take the IP located at the depth position (starting
  3541. from the right).
  3542. type: integer
  3543. excludedIPs:
  3544. description: ExcludedIPs configures Traefik to scan the X-Forwarded-For
  3545. header and select the first IP not in the list.
  3546. items:
  3547. type: string
  3548. type: array
  3549. type: object
  3550. sourceRange:
  3551. description: SourceRange defines the set of allowed IPs (or ranges
  3552. of allowed IPs by using CIDR notation).
  3553. items:
  3554. type: string
  3555. type: array
  3556. type: object
  3557. passTLSClientCert:
  3558. description: 'PassTLSClientCert holds the pass TLS client cert middleware
  3559. configuration. This middleware adds the selected data from the passed
  3560. client TLS certificate to a header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/passtlsclientcert/'
  3561. properties:
  3562. info:
  3563. description: Info selects the specific client certificate details
  3564. you want to add to the X-Forwarded-Tls-Client-Cert-Info header.
  3565. properties:
  3566. issuer:
  3567. description: Issuer defines the client certificate issuer
  3568. details to add to the X-Forwarded-Tls-Client-Cert-Info header.
  3569. properties:
  3570. commonName:
  3571. description: CommonName defines whether to add the organizationalUnit
  3572. information into the issuer.
  3573. type: boolean
  3574. country:
  3575. description: Country defines whether to add the country
  3576. information into the issuer.
  3577. type: boolean
  3578. domainComponent:
  3579. description: DomainComponent defines whether to add the
  3580. domainComponent information into the issuer.
  3581. type: boolean
  3582. locality:
  3583. description: Locality defines whether to add the locality
  3584. information into the issuer.
  3585. type: boolean
  3586. organization:
  3587. description: Organization defines whether to add the organization
  3588. information into the issuer.
  3589. type: boolean
  3590. province:
  3591. description: Province defines whether to add the province
  3592. information into the issuer.
  3593. type: boolean
  3594. serialNumber:
  3595. description: SerialNumber defines whether to add the serialNumber
  3596. information into the issuer.
  3597. type: boolean
  3598. type: object
  3599. notAfter:
  3600. description: NotAfter defines whether to add the Not After
  3601. information from the Validity part.
  3602. type: boolean
  3603. notBefore:
  3604. description: NotBefore defines whether to add the Not Before
  3605. information from the Validity part.
  3606. type: boolean
  3607. sans:
  3608. description: Sans defines whether to add the Subject Alternative
  3609. Name information from the Subject Alternative Name part.
  3610. type: boolean
  3611. serialNumber:
  3612. description: SerialNumber defines whether to add the client
  3613. serialNumber information.
  3614. type: boolean
  3615. subject:
  3616. description: Subject defines the client certificate subject
  3617. details to add to the X-Forwarded-Tls-Client-Cert-Info header.
  3618. properties:
  3619. commonName:
  3620. description: CommonName defines whether to add the organizationalUnit
  3621. information into the subject.
  3622. type: boolean
  3623. country:
  3624. description: Country defines whether to add the country
  3625. information into the subject.
  3626. type: boolean
  3627. domainComponent:
  3628. description: DomainComponent defines whether to add the
  3629. domainComponent information into the subject.
  3630. type: boolean
  3631. locality:
  3632. description: Locality defines whether to add the locality
  3633. information into the subject.
  3634. type: boolean
  3635. organization:
  3636. description: Organization defines whether to add the organization
  3637. information into the subject.
  3638. type: boolean
  3639. organizationalUnit:
  3640. description: OrganizationalUnit defines whether to add
  3641. the organizationalUnit information into the subject.
  3642. type: boolean
  3643. province:
  3644. description: Province defines whether to add the province
  3645. information into the subject.
  3646. type: boolean
  3647. serialNumber:
  3648. description: SerialNumber defines whether to add the serialNumber
  3649. information into the subject.
  3650. type: boolean
  3651. type: object
  3652. type: object
  3653. pem:
  3654. description: PEM sets the X-Forwarded-Tls-Client-Cert header with
  3655. the certificate.
  3656. type: boolean
  3657. type: object
  3658. plugin:
  3659. additionalProperties:
  3660. x-kubernetes-preserve-unknown-fields: true
  3661. description: 'Plugin defines the middleware plugin configuration.
  3662. More info: https://doc.traefik.io/traefik/plugins/'
  3663. type: object
  3664. rateLimit:
  3665. description: 'RateLimit holds the rate limit configuration. This middleware
  3666. ensures that services will receive a fair amount of requests, and
  3667. allows one to define what fair is. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ratelimit/'
  3668. properties:
  3669. average:
  3670. description: Average is the maximum rate, by default in requests/s,
  3671. allowed for the given source. It defaults to 0, which means
  3672. no rate limiting. The rate is actually defined by dividing Average
  3673. by Period. So for a rate below 1req/s, one needs to define a
  3674. Period larger than a second.
  3675. format: int64
  3676. type: integer
  3677. burst:
  3678. description: Burst is the maximum number of requests allowed to
  3679. arrive in the same arbitrarily small period of time. It defaults
  3680. to 1.
  3681. format: int64
  3682. type: integer
  3683. period:
  3684. anyOf:
  3685. - type: integer
  3686. - type: string
  3687. description: 'Period, in combination with Average, defines the
  3688. actual maximum rate, such as: r = Average / Period. It defaults
  3689. to a second.'
  3690. x-kubernetes-int-or-string: true
  3691. sourceCriterion:
  3692. description: SourceCriterion defines what criterion is used to
  3693. group requests as originating from a common source. If several
  3694. strategies are defined at the same time, an error will be raised.
  3695. If none are set, the default is to use the request's remote
  3696. address field (as an ipStrategy).
  3697. properties:
  3698. ipStrategy:
  3699. description: 'IPStrategy holds the IP strategy configuration
  3700. used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy'
  3701. properties:
  3702. depth:
  3703. description: Depth tells Traefik to use the X-Forwarded-For
  3704. header and take the IP located at the depth position
  3705. (starting from the right).
  3706. type: integer
  3707. excludedIPs:
  3708. description: ExcludedIPs configures Traefik to scan the
  3709. X-Forwarded-For header and select the first IP not in
  3710. the list.
  3711. items:
  3712. type: string
  3713. type: array
  3714. type: object
  3715. requestHeaderName:
  3716. description: RequestHeaderName defines the name of the header
  3717. used to group incoming requests.
  3718. type: string
  3719. requestHost:
  3720. description: RequestHost defines whether to consider the request
  3721. Host as the source.
  3722. type: boolean
  3723. type: object
  3724. type: object
  3725. redirectRegex:
  3726. description: 'RedirectRegex holds the redirect regex middleware configuration.
  3727. This middleware redirects a request using regex matching and replacement.
  3728. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectregex/#regex'
  3729. properties:
  3730. permanent:
  3731. description: Permanent defines whether the redirection is permanent
  3732. (301).
  3733. type: boolean
  3734. regex:
  3735. description: Regex defines the regex used to match and capture
  3736. elements from the request URL.
  3737. type: string
  3738. replacement:
  3739. description: Replacement defines how to modify the URL to have
  3740. the new target URL.
  3741. type: string
  3742. type: object
  3743. redirectScheme:
  3744. description: 'RedirectScheme holds the redirect scheme middleware
  3745. configuration. This middleware redirects requests from a scheme/port
  3746. to another. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectscheme/'
  3747. properties:
  3748. permanent:
  3749. description: Permanent defines whether the redirection is permanent
  3750. (301).
  3751. type: boolean
  3752. port:
  3753. description: Port defines the port of the new URL.
  3754. type: string
  3755. scheme:
  3756. description: Scheme defines the scheme of the new URL.
  3757. type: string
  3758. type: object
  3759. replacePath:
  3760. description: 'ReplacePath holds the replace path middleware configuration.
  3761. This middleware replaces the path of the request URL and store the
  3762. original path in an X-Replaced-Path header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepath/'
  3763. properties:
  3764. path:
  3765. description: Path defines the path to use as replacement in the
  3766. request URL.
  3767. type: string
  3768. type: object
  3769. replacePathRegex:
  3770. description: 'ReplacePathRegex holds the replace path regex middleware
  3771. configuration. This middleware replaces the path of a URL using
  3772. regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepathregex/'
  3773. properties:
  3774. regex:
  3775. description: Regex defines the regular expression used to match
  3776. and capture the path from the request URL.
  3777. type: string
  3778. replacement:
  3779. description: Replacement defines the replacement path format,
  3780. which can include captured variables.
  3781. type: string
  3782. type: object
  3783. retry:
  3784. description: 'Retry holds the retry middleware configuration. This
  3785. middleware reissues requests a given number of times to a backend
  3786. server if that server does not reply. As soon as the server answers,
  3787. the middleware stops retrying, regardless of the response status.
  3788. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/retry/'
  3789. properties:
  3790. attempts:
  3791. description: Attempts defines how many times the request should
  3792. be retried.
  3793. type: integer
  3794. initialInterval:
  3795. anyOf:
  3796. - type: integer
  3797. - type: string
  3798. description: InitialInterval defines the first wait time in the
  3799. exponential backoff series. The maximum interval is calculated
  3800. as twice the initialInterval. If unspecified, requests will
  3801. be retried immediately. The value of initialInterval should
  3802. be provided in seconds or as a valid duration format, see https://pkg.go.dev/time#ParseDuration.
  3803. x-kubernetes-int-or-string: true
  3804. type: object
  3805. stripPrefix:
  3806. description: 'StripPrefix holds the strip prefix middleware configuration.
  3807. This middleware removes the specified prefixes from the URL path.
  3808. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefix/'
  3809. properties:
  3810. forceSlash:
  3811. description: 'ForceSlash ensures that the resulting stripped path
  3812. is not the empty string, by replacing it with / when necessary.
  3813. Default: true.'
  3814. type: boolean
  3815. prefixes:
  3816. description: Prefixes defines the prefixes to strip from the request
  3817. URL.
  3818. items:
  3819. type: string
  3820. type: array
  3821. type: object
  3822. stripPrefixRegex:
  3823. description: 'StripPrefixRegex holds the strip prefix regex middleware
  3824. configuration. This middleware removes the matching prefixes from
  3825. the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefixregex/'
  3826. properties:
  3827. regex:
  3828. description: Regex defines the regular expression to match the
  3829. path prefix from the request URL.
  3830. items:
  3831. type: string
  3832. type: array
  3833. type: object
  3834. type: object
  3835. required:
  3836. - metadata
  3837. - spec
  3838. type: object
  3839. served: true
  3840. storage: true
  3841. status:
  3842. acceptedNames:
  3843. kind: ""
  3844. plural: ""
  3845. conditions: []
  3846. storedVersions: []
  3847. ---
  3848. apiVersion: apiextensions.k8s.io/v1
  3849. kind: CustomResourceDefinition
  3850. metadata:
  3851. annotations:
  3852. controller-gen.kubebuilder.io/version: v0.6.2
  3853. creationTimestamp: null
  3854. name: middlewaretcps.traefik.containo.us
  3855. spec:
  3856. group: traefik.containo.us
  3857. names:
  3858. kind: MiddlewareTCP
  3859. listKind: MiddlewareTCPList
  3860. plural: middlewaretcps
  3861. singular: middlewaretcp
  3862. scope: Namespaced
  3863. versions:
  3864. - name: v1alpha1
  3865. schema:
  3866. openAPIV3Schema:
  3867. description: 'MiddlewareTCP is the CRD implementation of a Traefik TCP middleware.
  3868. More info: https://doc.traefik.io/traefik/v2.10/middlewares/overview/'
  3869. properties:
  3870. apiVersion:
  3871. description: 'APIVersion defines the versioned schema of this representation
  3872. of an object. Servers should convert recognized schemas to the latest
  3873. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  3874. type: string
  3875. kind:
  3876. description: 'Kind is a string value representing the REST resource this
  3877. object represents. Servers may infer this from the endpoint the client
  3878. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  3879. type: string
  3880. metadata:
  3881. type: object
  3882. spec:
  3883. description: MiddlewareTCPSpec defines the desired state of a MiddlewareTCP.
  3884. properties:
  3885. inFlightConn:
  3886. description: InFlightConn defines the InFlightConn middleware configuration.
  3887. properties:
  3888. amount:
  3889. description: Amount defines the maximum amount of allowed simultaneous
  3890. connections. The middleware closes the connection if there are
  3891. already amount connections opened.
  3892. format: int64
  3893. type: integer
  3894. type: object
  3895. ipWhiteList:
  3896. description: IPWhiteList defines the IPWhiteList middleware configuration.
  3897. properties:
  3898. sourceRange:
  3899. description: SourceRange defines the allowed IPs (or ranges of
  3900. allowed IPs by using CIDR notation).
  3901. items:
  3902. type: string
  3903. type: array
  3904. type: object
  3905. type: object
  3906. required:
  3907. - metadata
  3908. - spec
  3909. type: object
  3910. served: true
  3911. storage: true
  3912. status:
  3913. acceptedNames:
  3914. kind: ""
  3915. plural: ""
  3916. conditions: []
  3917. storedVersions: []
  3918. ---
  3919. apiVersion: apiextensions.k8s.io/v1
  3920. kind: CustomResourceDefinition
  3921. metadata:
  3922. annotations:
  3923. controller-gen.kubebuilder.io/version: v0.6.2
  3924. creationTimestamp: null
  3925. name: serverstransports.traefik.containo.us
  3926. spec:
  3927. group: traefik.containo.us
  3928. names:
  3929. kind: ServersTransport
  3930. listKind: ServersTransportList
  3931. plural: serverstransports
  3932. singular: serverstransport
  3933. scope: Namespaced
  3934. versions:
  3935. - name: v1alpha1
  3936. schema:
  3937. openAPIV3Schema:
  3938. description: 'ServersTransport is the CRD implementation of a ServersTransport.
  3939. If no serversTransport is specified, the [email protected] will be used.
  3940. The [email protected] serversTransport is created from the static configuration.
  3941. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#serverstransport_1'
  3942. properties:
  3943. apiVersion:
  3944. description: 'APIVersion defines the versioned schema of this representation
  3945. of an object. Servers should convert recognized schemas to the latest
  3946. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  3947. type: string
  3948. kind:
  3949. description: 'Kind is a string value representing the REST resource this
  3950. object represents. Servers may infer this from the endpoint the client
  3951. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  3952. type: string
  3953. metadata:
  3954. type: object
  3955. spec:
  3956. description: ServersTransportSpec defines the desired state of a ServersTransport.
  3957. properties:
  3958. certificatesSecrets:
  3959. description: CertificatesSecrets defines a list of secret storing
  3960. client certificates for mTLS.
  3961. items:
  3962. type: string
  3963. type: array
  3964. disableHTTP2:
  3965. description: DisableHTTP2 disables HTTP/2 for connections with backend
  3966. servers.
  3967. type: boolean
  3968. forwardingTimeouts:
  3969. description: ForwardingTimeouts defines the timeouts for requests
  3970. forwarded to the backend servers.
  3971. properties:
  3972. dialTimeout:
  3973. anyOf:
  3974. - type: integer
  3975. - type: string
  3976. description: DialTimeout is the amount of time to wait until a
  3977. connection to a backend server can be established.
  3978. x-kubernetes-int-or-string: true
  3979. idleConnTimeout:
  3980. anyOf:
  3981. - type: integer
  3982. - type: string
  3983. description: IdleConnTimeout is the maximum period for which an
  3984. idle HTTP keep-alive connection will remain open before closing
  3985. itself.
  3986. x-kubernetes-int-or-string: true
  3987. pingTimeout:
  3988. anyOf:
  3989. - type: integer
  3990. - type: string
  3991. description: PingTimeout is the timeout after which the HTTP/2
  3992. connection will be closed if a response to ping is not received.
  3993. x-kubernetes-int-or-string: true
  3994. readIdleTimeout:
  3995. anyOf:
  3996. - type: integer
  3997. - type: string
  3998. description: ReadIdleTimeout is the timeout after which a health
  3999. check using ping frame will be carried out if no frame is received
  4000. on the HTTP/2 connection.
  4001. x-kubernetes-int-or-string: true
  4002. responseHeaderTimeout:
  4003. anyOf:
  4004. - type: integer
  4005. - type: string
  4006. description: ResponseHeaderTimeout is the amount of time to wait
  4007. for a server's response headers after fully writing the request
  4008. (including its body, if any).
  4009. x-kubernetes-int-or-string: true
  4010. type: object
  4011. insecureSkipVerify:
  4012. description: InsecureSkipVerify disables SSL certificate verification.
  4013. type: boolean
  4014. maxIdleConnsPerHost:
  4015. description: MaxIdleConnsPerHost controls the maximum idle (keep-alive)
  4016. to keep per-host.
  4017. type: integer
  4018. peerCertURI:
  4019. description: PeerCertURI defines the peer cert URI used to match against
  4020. SAN URI during the peer certificate verification.
  4021. type: string
  4022. rootCAsSecrets:
  4023. description: RootCAsSecrets defines a list of CA secret used to validate
  4024. self-signed certificate.
  4025. items:
  4026. type: string
  4027. type: array
  4028. serverName:
  4029. description: ServerName defines the server name used to contact the
  4030. server.
  4031. type: string
  4032. type: object
  4033. required:
  4034. - metadata
  4035. - spec
  4036. type: object
  4037. served: true
  4038. storage: true
  4039. status:
  4040. acceptedNames:
  4041. kind: ""
  4042. plural: ""
  4043. conditions: []
  4044. storedVersions: []
  4045. ---
  4046. apiVersion: apiextensions.k8s.io/v1
  4047. kind: CustomResourceDefinition
  4048. metadata:
  4049. annotations:
  4050. controller-gen.kubebuilder.io/version: v0.6.2
  4051. creationTimestamp: null
  4052. name: tlsoptions.traefik.containo.us
  4053. spec:
  4054. group: traefik.containo.us
  4055. names:
  4056. kind: TLSOption
  4057. listKind: TLSOptionList
  4058. plural: tlsoptions
  4059. singular: tlsoption
  4060. scope: Namespaced
  4061. versions:
  4062. - name: v1alpha1
  4063. schema:
  4064. openAPIV3Schema:
  4065. description: 'TLSOption is the CRD implementation of a Traefik TLS Option,
  4066. allowing to configure some parameters of the TLS connection. More info:
  4067. https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options'
  4068. properties:
  4069. apiVersion:
  4070. description: 'APIVersion defines the versioned schema of this representation
  4071. of an object. Servers should convert recognized schemas to the latest
  4072. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  4073. type: string
  4074. kind:
  4075. description: 'Kind is a string value representing the REST resource this
  4076. object represents. Servers may infer this from the endpoint the client
  4077. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  4078. type: string
  4079. metadata:
  4080. type: object
  4081. spec:
  4082. description: TLSOptionSpec defines the desired state of a TLSOption.
  4083. properties:
  4084. alpnProtocols:
  4085. description: 'ALPNProtocols defines the list of supported application
  4086. level protocols for the TLS handshake, in order of preference. More
  4087. info: https://doc.traefik.io/traefik/v2.10/https/tls/#alpn-protocols'
  4088. items:
  4089. type: string
  4090. type: array
  4091. cipherSuites:
  4092. description: 'CipherSuites defines the list of supported cipher suites
  4093. for TLS versions up to TLS 1.2. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#cipher-suites'
  4094. items:
  4095. type: string
  4096. type: array
  4097. clientAuth:
  4098. description: ClientAuth defines the server's policy for TLS Client
  4099. Authentication.
  4100. properties:
  4101. clientAuthType:
  4102. description: ClientAuthType defines the client authentication
  4103. type to apply.
  4104. enum:
  4105. - NoClientCert
  4106. - RequestClientCert
  4107. - RequireAnyClientCert
  4108. - VerifyClientCertIfGiven
  4109. - RequireAndVerifyClientCert
  4110. type: string
  4111. secretNames:
  4112. description: SecretNames defines the names of the referenced Kubernetes
  4113. Secret storing certificate details.
  4114. items:
  4115. type: string
  4116. type: array
  4117. type: object
  4118. curvePreferences:
  4119. description: 'CurvePreferences defines the preferred elliptic curves
  4120. in a specific order. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#curve-preferences'
  4121. items:
  4122. type: string
  4123. type: array
  4124. maxVersion:
  4125. description: 'MaxVersion defines the maximum TLS version that Traefik
  4126. will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12,
  4127. VersionTLS13. Default: None.'
  4128. type: string
  4129. minVersion:
  4130. description: 'MinVersion defines the minimum TLS version that Traefik
  4131. will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12,
  4132. VersionTLS13. Default: VersionTLS10.'
  4133. type: string
  4134. preferServerCipherSuites:
  4135. description: 'PreferServerCipherSuites defines whether the server
  4136. chooses a cipher suite among his own instead of among the client''s.
  4137. It is enabled automatically when minVersion or maxVersion is set.
  4138. Deprecated: https://github.com/golang/go/issues/45430'
  4139. type: boolean
  4140. sniStrict:
  4141. description: SniStrict defines whether Traefik allows connections
  4142. from clients connections that do not specify a server_name extension.
  4143. type: boolean
  4144. type: object
  4145. required:
  4146. - metadata
  4147. - spec
  4148. type: object
  4149. served: true
  4150. storage: true
  4151. status:
  4152. acceptedNames:
  4153. kind: ""
  4154. plural: ""
  4155. conditions: []
  4156. storedVersions: []
  4157. ---
  4158. apiVersion: apiextensions.k8s.io/v1
  4159. kind: CustomResourceDefinition
  4160. metadata:
  4161. annotations:
  4162. controller-gen.kubebuilder.io/version: v0.6.2
  4163. creationTimestamp: null
  4164. name: tlsstores.traefik.containo.us
  4165. spec:
  4166. group: traefik.containo.us
  4167. names:
  4168. kind: TLSStore
  4169. listKind: TLSStoreList
  4170. plural: tlsstores
  4171. singular: tlsstore
  4172. scope: Namespaced
  4173. versions:
  4174. - name: v1alpha1
  4175. schema:
  4176. openAPIV3Schema:
  4177. description: 'TLSStore is the CRD implementation of a Traefik TLS Store. For
  4178. the time being, only the TLSStore named default is supported. This means
  4179. that you cannot have two stores that are named default in different Kubernetes
  4180. namespaces. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#certificates-stores'
  4181. properties:
  4182. apiVersion:
  4183. description: 'APIVersion defines the versioned schema of this representation
  4184. of an object. Servers should convert recognized schemas to the latest
  4185. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  4186. type: string
  4187. kind:
  4188. description: 'Kind is a string value representing the REST resource this
  4189. object represents. Servers may infer this from the endpoint the client
  4190. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  4191. type: string
  4192. metadata:
  4193. type: object
  4194. spec:
  4195. description: TLSStoreSpec defines the desired state of a TLSStore.
  4196. properties:
  4197. certificates:
  4198. description: Certificates is a list of secret names, each secret holding
  4199. a key/certificate pair to add to the store.
  4200. items:
  4201. description: Certificate holds a secret name for the TLSStore resource.
  4202. properties:
  4203. secretName:
  4204. description: SecretName is the name of the referenced Kubernetes
  4205. Secret to specify the certificate details.
  4206. type: string
  4207. required:
  4208. - secretName
  4209. type: object
  4210. type: array
  4211. defaultCertificate:
  4212. description: DefaultCertificate defines the default certificate configuration.
  4213. properties:
  4214. secretName:
  4215. description: SecretName is the name of the referenced Kubernetes
  4216. Secret to specify the certificate details.
  4217. type: string
  4218. required:
  4219. - secretName
  4220. type: object
  4221. defaultGeneratedCert:
  4222. description: DefaultGeneratedCert defines the default generated certificate
  4223. configuration.
  4224. properties:
  4225. domain:
  4226. description: Domain is the domain definition for the DefaultCertificate.
  4227. properties:
  4228. main:
  4229. description: Main defines the main domain name.
  4230. type: string
  4231. sans:
  4232. description: SANs defines the subject alternative domain names.
  4233. items:
  4234. type: string
  4235. type: array
  4236. type: object
  4237. resolver:
  4238. description: Resolver is the name of the resolver that will be
  4239. used to issue the DefaultCertificate.
  4240. type: string
  4241. type: object
  4242. type: object
  4243. required:
  4244. - metadata
  4245. - spec
  4246. type: object
  4247. served: true
  4248. storage: true
  4249. status:
  4250. acceptedNames:
  4251. kind: ""
  4252. plural: ""
  4253. conditions: []
  4254. storedVersions: []
  4255. ---
  4256. apiVersion: apiextensions.k8s.io/v1
  4257. kind: CustomResourceDefinition
  4258. metadata:
  4259. annotations:
  4260. controller-gen.kubebuilder.io/version: v0.6.2
  4261. creationTimestamp: null
  4262. name: traefikservices.traefik.containo.us
  4263. spec:
  4264. group: traefik.containo.us
  4265. names:
  4266. kind: TraefikService
  4267. listKind: TraefikServiceList
  4268. plural: traefikservices
  4269. singular: traefikservice
  4270. scope: Namespaced
  4271. versions:
  4272. - name: v1alpha1
  4273. schema:
  4274. openAPIV3Schema:
  4275. description: 'TraefikService is the CRD implementation of a Traefik Service.
  4276. TraefikService object allows to: - Apply weight to Services on load-balancing
  4277. - Mirror traffic on services More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-traefikservice'
  4278. properties:
  4279. apiVersion:
  4280. description: 'APIVersion defines the versioned schema of this representation
  4281. of an object. Servers should convert recognized schemas to the latest
  4282. internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
  4283. type: string
  4284. kind:
  4285. description: 'Kind is a string value representing the REST resource this
  4286. object represents. Servers may infer this from the endpoint the client
  4287. submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
  4288. type: string
  4289. metadata:
  4290. type: object
  4291. spec:
  4292. description: TraefikServiceSpec defines the desired state of a TraefikService.
  4293. properties:
  4294. mirroring:
  4295. description: Mirroring defines the Mirroring service configuration.
  4296. properties:
  4297. kind:
  4298. description: Kind defines the kind of the Service.
  4299. enum:
  4300. - Service
  4301. - TraefikService
  4302. type: string
  4303. maxBodySize:
  4304. description: MaxBodySize defines the maximum size allowed for
  4305. the body of the request. If the body is larger, the request
  4306. is not mirrored. Default value is -1, which means unlimited
  4307. size.
  4308. format: int64
  4309. type: integer
  4310. mirrors:
  4311. description: Mirrors defines the list of mirrors where Traefik
  4312. will duplicate the traffic.
  4313. items:
  4314. description: MirrorService holds the mirror configuration.
  4315. properties:
  4316. kind:
  4317. description: Kind defines the kind of the Service.
  4318. enum:
  4319. - Service
  4320. - TraefikService
  4321. type: string
  4322. name:
  4323. description: Name defines the name of the referenced Kubernetes
  4324. Service or TraefikService. The differentiation between
  4325. the two is specified in the Kind field.
  4326. type: string
  4327. namespace:
  4328. description: Namespace defines the namespace of the referenced
  4329. Kubernetes Service or TraefikService.
  4330. type: string
  4331. nativeLB:
  4332. description: NativeLB controls, when creating the load-balancer,
  4333. whether the LB's children are directly the pods IPs or
  4334. if the only child is the Kubernetes Service clusterIP.
  4335. The Kubernetes Service itself does load-balance to the
  4336. pods. By default, NativeLB is false.
  4337. type: boolean
  4338. passHostHeader:
  4339. description: PassHostHeader defines whether the client Host
  4340. header is forwarded to the upstream Kubernetes Service.
  4341. By default, passHostHeader is true.
  4342. type: boolean
  4343. percent:
  4344. description: 'Percent defines the part of the traffic to
  4345. mirror. Supported values: 0 to 100.'
  4346. type: integer
  4347. port:
  4348. anyOf:
  4349. - type: integer
  4350. - type: string
  4351. description: Port defines the port of a Kubernetes Service.
  4352. This can be a reference to a named port.
  4353. x-kubernetes-int-or-string: true
  4354. responseForwarding:
  4355. description: ResponseForwarding defines how Traefik forwards
  4356. the response from the upstream Kubernetes Service to the
  4357. client.
  4358. properties:
  4359. flushInterval:
  4360. description: 'FlushInterval defines the interval, in
  4361. milliseconds, in between flushes to the client while
  4362. copying the response body. A negative value means
  4363. to flush immediately after each write to the client.
  4364. This configuration is ignored when ReverseProxy recognizes
  4365. a response as a streaming response; for such responses,
  4366. writes are flushed to the client immediately. Default:
  4367. 100ms'
  4368. type: string
  4369. type: object
  4370. scheme:
  4371. description: Scheme defines the scheme to use for the request
  4372. to the upstream Kubernetes Service. It defaults to https
  4373. when Kubernetes Service port is 443, http otherwise.
  4374. type: string
  4375. serversTransport:
  4376. description: ServersTransport defines the name of ServersTransport
  4377. resource to use. It allows to configure the transport
  4378. between Traefik and your servers. Can only be used on
  4379. a Kubernetes Service.
  4380. type: string
  4381. sticky:
  4382. description: 'Sticky defines the sticky sessions configuration.
  4383. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions'
  4384. properties:
  4385. cookie:
  4386. description: Cookie defines the sticky cookie configuration.
  4387. properties:
  4388. httpOnly:
  4389. description: HTTPOnly defines whether the cookie
  4390. can be accessed by client-side APIs, such as JavaScript.
  4391. type: boolean
  4392. name:
  4393. description: Name defines the Cookie name.
  4394. type: string
  4395. sameSite:
  4396. description: 'SameSite defines the same site policy.
  4397. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite'
  4398. type: string
  4399. secure:
  4400. description: Secure defines whether the cookie can
  4401. only be transmitted over an encrypted connection
  4402. (i.e. HTTPS).
  4403. type: boolean
  4404. type: object
  4405. type: object
  4406. strategy:
  4407. description: Strategy defines the load balancing strategy
  4408. between the servers. RoundRobin is the only supported
  4409. value at the moment.
  4410. type: string
  4411. weight:
  4412. description: Weight defines the weight and should only be
  4413. specified when Name references a TraefikService object
  4414. (and to be precise, one that embeds a Weighted Round Robin).
  4415. type: integer
  4416. required:
  4417. - name
  4418. type: object
  4419. type: array
  4420. name:
  4421. description: Name defines the name of the referenced Kubernetes
  4422. Service or TraefikService. The differentiation between the two
  4423. is specified in the Kind field.
  4424. type: string
  4425. namespace:
  4426. description: Namespace defines the namespace of the referenced
  4427. Kubernetes Service or TraefikService.
  4428. type: string
  4429. nativeLB:
  4430. description: NativeLB controls, when creating the load-balancer,
  4431. whether the LB's children are directly the pods IPs or if the
  4432. only child is the Kubernetes Service clusterIP. The Kubernetes
  4433. Service itself does load-balance to the pods. By default, NativeLB
  4434. is false.
  4435. type: boolean
  4436. passHostHeader:
  4437. description: PassHostHeader defines whether the client Host header
  4438. is forwarded to the upstream Kubernetes Service. By default,
  4439. passHostHeader is true.
  4440. type: boolean
  4441. port:
  4442. anyOf:
  4443. - type: integer
  4444. - type: string
  4445. description: Port defines the port of a Kubernetes Service. This
  4446. can be a reference to a named port.
  4447. x-kubernetes-int-or-string: true
  4448. responseForwarding:
  4449. description: ResponseForwarding defines how Traefik forwards the
  4450. response from the upstream Kubernetes Service to the client.
  4451. properties:
  4452. flushInterval:
  4453. description: 'FlushInterval defines the interval, in milliseconds,
  4454. in between flushes to the client while copying the response
  4455. body. A negative value means to flush immediately after
  4456. each write to the client. This configuration is ignored
  4457. when ReverseProxy recognizes a response as a streaming response;
  4458. for such responses, writes are flushed to the client immediately.
  4459. Default: 100ms'
  4460. type: string
  4461. type: object
  4462. scheme:
  4463. description: Scheme defines the scheme to use for the request
  4464. to the upstream Kubernetes Service. It defaults to https when
  4465. Kubernetes Service port is 443, http otherwise.
  4466. type: string
  4467. serversTransport:
  4468. description: ServersTransport defines the name of ServersTransport
  4469. resource to use. It allows to configure the transport between
  4470. Traefik and your servers. Can only be used on a Kubernetes Service.
  4471. type: string
  4472. sticky:
  4473. description: 'Sticky defines the sticky sessions configuration.
  4474. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions'
  4475. properties:
  4476. cookie:
  4477. description: Cookie defines the sticky cookie configuration.
  4478. properties:
  4479. httpOnly:
  4480. description: HTTPOnly defines whether the cookie can be
  4481. accessed by client-side APIs, such as JavaScript.
  4482. type: boolean
  4483. name:
  4484. description: Name defines the Cookie name.
  4485. type: string
  4486. sameSite:
  4487. description: 'SameSite defines the same site policy. More
  4488. info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite'
  4489. type: string
  4490. secure:
  4491. description: Secure defines whether the cookie can only
  4492. be transmitted over an encrypted connection (i.e. HTTPS).
  4493. type: boolean
  4494. type: object
  4495. type: object
  4496. strategy:
  4497. description: Strategy defines the load balancing strategy between
  4498. the servers. RoundRobin is the only supported value at the moment.
  4499. type: string
  4500. weight:
  4501. description: Weight defines the weight and should only be specified
  4502. when Name references a TraefikService object (and to be precise,
  4503. one that embeds a Weighted Round Robin).
  4504. type: integer
  4505. required:
  4506. - name
  4507. type: object
  4508. weighted:
  4509. description: Weighted defines the Weighted Round Robin configuration.
  4510. properties:
  4511. services:
  4512. description: Services defines the list of Kubernetes Service and/or
  4513. TraefikService to load-balance, with weight.
  4514. items:
  4515. description: Service defines an upstream HTTP service to proxy
  4516. traffic to.
  4517. properties:
  4518. kind:
  4519. description: Kind defines the kind of the Service.
  4520. enum:
  4521. - Service
  4522. - TraefikService
  4523. type: string
  4524. name:
  4525. description: Name defines the name of the referenced Kubernetes
  4526. Service or TraefikService. The differentiation between
  4527. the two is specified in the Kind field.
  4528. type: string
  4529. namespace:
  4530. description: Namespace defines the namespace of the referenced
  4531. Kubernetes Service or TraefikService.
  4532. type: string
  4533. nativeLB:
  4534. description: NativeLB controls, when creating the load-balancer,
  4535. whether the LB's children are directly the pods IPs or
  4536. if the only child is the Kubernetes Service clusterIP.
  4537. The Kubernetes Service itself does load-balance to the
  4538. pods. By default, NativeLB is false.
  4539. type: boolean
  4540. passHostHeader:
  4541. description: PassHostHeader defines whether the client Host
  4542. header is forwarded to the upstream Kubernetes Service.
  4543. By default, passHostHeader is true.
  4544. type: boolean
  4545. port:
  4546. anyOf:
  4547. - type: integer
  4548. - type: string
  4549. description: Port defines the port of a Kubernetes Service.
  4550. This can be a reference to a named port.
  4551. x-kubernetes-int-or-string: true
  4552. responseForwarding:
  4553. description: ResponseForwarding defines how Traefik forwards
  4554. the response from the upstream Kubernetes Service to the
  4555. client.
  4556. properties:
  4557. flushInterval:
  4558. description: 'FlushInterval defines the interval, in
  4559. milliseconds, in between flushes to the client while
  4560. copying the response body. A negative value means
  4561. to flush immediately after each write to the client.
  4562. This configuration is ignored when ReverseProxy recognizes
  4563. a response as a streaming response; for such responses,
  4564. writes are flushed to the client immediately. Default:
  4565. 100ms'
  4566. type: string
  4567. type: object
  4568. scheme:
  4569. description: Scheme defines the scheme to use for the request
  4570. to the upstream Kubernetes Service. It defaults to https
  4571. when Kubernetes Service port is 443, http otherwise.
  4572. type: string
  4573. serversTransport:
  4574. description: ServersTransport defines the name of ServersTransport
  4575. resource to use. It allows to configure the transport
  4576. between Traefik and your servers. Can only be used on
  4577. a Kubernetes Service.
  4578. type: string
  4579. sticky:
  4580. description: 'Sticky defines the sticky sessions configuration.
  4581. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions'
  4582. properties:
  4583. cookie:
  4584. description: Cookie defines the sticky cookie configuration.
  4585. properties:
  4586. httpOnly:
  4587. description: HTTPOnly defines whether the cookie
  4588. can be accessed by client-side APIs, such as JavaScript.
  4589. type: boolean
  4590. name:
  4591. description: Name defines the Cookie name.
  4592. type: string
  4593. sameSite:
  4594. description: 'SameSite defines the same site policy.
  4595. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite'
  4596. type: string
  4597. secure:
  4598. description: Secure defines whether the cookie can
  4599. only be transmitted over an encrypted connection
  4600. (i.e. HTTPS).
  4601. type: boolean
  4602. type: object
  4603. type: object
  4604. strategy:
  4605. description: Strategy defines the load balancing strategy
  4606. between the servers. RoundRobin is the only supported
  4607. value at the moment.
  4608. type: string
  4609. weight:
  4610. description: Weight defines the weight and should only be
  4611. specified when Name references a TraefikService object
  4612. (and to be precise, one that embeds a Weighted Round Robin).
  4613. type: integer
  4614. required:
  4615. - name
  4616. type: object
  4617. type: array
  4618. sticky:
  4619. description: 'Sticky defines whether sticky sessions are enabled.
  4620. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#stickiness-and-load-balancing'
  4621. properties:
  4622. cookie:
  4623. description: Cookie defines the sticky cookie configuration.
  4624. properties:
  4625. httpOnly:
  4626. description: HTTPOnly defines whether the cookie can be
  4627. accessed by client-side APIs, such as JavaScript.
  4628. type: boolean
  4629. name:
  4630. description: Name defines the Cookie name.
  4631. type: string
  4632. sameSite:
  4633. description: 'SameSite defines the same site policy. More
  4634. info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite'
  4635. type: string
  4636. secure:
  4637. description: Secure defines whether the cookie can only
  4638. be transmitted over an encrypted connection (i.e. HTTPS).
  4639. type: boolean
  4640. type: object
  4641. type: object
  4642. type: object
  4643. type: object
  4644. required:
  4645. - metadata
  4646. - spec
  4647. type: object
  4648. served: true
  4649. storage: true
  4650. status:
  4651. acceptedNames:
  4652. kind: ""
  4653. plural: ""
  4654. conditions: []
  4655. storedVersions: []

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
      - traefik.containo.us
    resources:
      - middlewares
      - middlewaretcps
      - ingressroutes
      - traefikservices
      - ingressroutetcps
      - ingressrouteudps
      - tlsoptions
      - tlsstores
      - serverstransports
    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

Traefik

apiVersion: v1
kind: ServiceAccount
metadata:
  name: traefik-ingress-controller

---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: traefik
  labels:
    app: traefik

spec:
  replicas: 1
  selector:
    matchLabels:
      app: traefik
  template:
    metadata:
      labels:
        app: traefik
    spec:
      serviceAccountName: traefik-ingress-controller
      containers:
        - name: traefik
          image: traefik:v2.10
          args:
            - --log.level=DEBUG
            - --api
            - --api.insecure
            - --entrypoints.web.address=:80
            - --entrypoints.tcpep.address=:8000
            - --entrypoints.udpep.address=:9000/udp
            - --providers.kubernetescrd
          ports:
            - name: web
              containerPort: 80
            - name: admin
              containerPort: 8080
            - name: tcpep
              containerPort: 8000
            - name: udpep
              containerPort: 9000

---
apiVersion: v1
kind: Service
metadata:
  name: traefik
spec:
  type: LoadBalancer
  selector:
    app: traefik
  ports:
    - protocol: TCP
      port: 80
      name: web
      targetPort: 80
    - protocol: TCP
      port: 8080
      name: admin
      targetPort: 8080
    - protocol: TCP
      port: 8000
      name: tcpep
      targetPort: 8000

---
apiVersion: v1
kind: Service
metadata:
  name: traefikudp
spec:
  type: LoadBalancer
  selector:
    app: traefik
  ports:
    - protocol: UDP
      port: 9000
      name: udpep
      targetPort: 9000

IngressRoute

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: myingressroute
  namespace: default

spec:
  entryPoints:
    - web

  routes:
  - match: Host(`foo`) && PathPrefix(`/bar`)
    kind: Rule
    services:
    - name: whoami
      port: 80

---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
  name: ingressroute.tcp
  namespace: default

spec:
  entryPoints:
    - tcpep
  routes:
  - match: HostSNI(`bar`)
    services:
      - name: whoamitcp
        port: 8080

---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteUDP
metadata:
  name: ingressroute.udp
  namespace: default

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

Whoami

kind: Deployment
apiVersion: apps/v1
metadata:
  name: whoami
  namespace: default
  labels:
    app: traefiklabs
    name: whoami

spec:
  replicas: 2
  selector:
    matchLabels:
      app: traefiklabs
      task: whoami
  template:
    metadata:
      labels:
        app: traefiklabs
        task: whoami
    spec:
      containers:
        - name: whoami
          image: traefik/whoami
          ports:
            - containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
  name: whoami
  namespace: default

spec:
  ports:
    - name: http
      port: 80
  selector:
    app: traefiklabs
    task: whoami

---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: whoamitcp
  namespace: default
  labels:
    app: traefiklabs
    name: whoamitcp

spec:
  replicas: 2
  selector:
    matchLabels:
      app: traefiklabs
      task: whoamitcp
  template:
    metadata:
      labels:
        app: traefiklabs
        task: whoamitcp
    spec:
      containers:
        - name: whoamitcp
          image: traefik/whoamitcp
          ports:
            - containerPort: 8080

---
apiVersion: v1
kind: Service
metadata:
  name: whoamitcp
  namespace: default

spec:
  ports:
    - protocol: TCP
      port: 8080
  selector:
    app: traefiklabs
    task: whoamitcp

---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: whoamiudp
  namespace: default
  labels:
    app: traefiklabs
    name: whoamiudp

spec:
  replicas: 2
  selector:
    matchLabels:
      app: traefiklabs
      task: whoamiudp
  template:
    metadata:
      labels:
        app: traefiklabs
        task: whoamiudp
    spec:
      containers:
        - name: whoamiudp
          image: traefik/whoamiudp:latest
          ports:
            - containerPort: 8080

---
apiVersion: v1
kind: Service
metadata:
  name: whoamiudp
  namespace: default

spec:
  ports:
    - port: 8080
  selector:
    app: traefiklabs
    task: whoamiudp

Routing Configuration

Custom Resource Definition (CRD)

  • You can find an exhaustive list, generated from Traefik’s source code, of the custom resources and their attributes in the reference page.
  • Validate that the prerequisites are fulfilled before using the Traefik custom resources.
  • Traefik CRDs are building blocks that you can assemble according to your needs.

You can find an excerpt of the available custom resources in the table below:

KindPurposeConcept Behind
IngressRouteHTTP RoutingHTTP router
MiddlewareTweaks the HTTP requests before they are sent to your serviceHTTP Middlewares
TraefikServiceAbstraction for HTTP loadbalancing/mirroringHTTP service
IngressRouteTCPTCP RoutingTCP router
MiddlewareTCPTweaks the TCP requests before they are sent to your serviceTCP Middlewares
IngressRouteUDPUDP RoutingUDP router
TLSOptionsAllows to configure some parameters of the TLS connectionTLSOptions
TLSStoresAllows to configure the default TLS storeTLSStores
ServersTransportAllows to configure the transport between Traefik and the backendsServersTransport

Kind: IngressRoute

IngressRoute is the CRD implementation of a Traefik HTTP router.

Register the IngressRoute kind in the Kubernetes cluster before creating IngressRoute objects.

IngressRoute Attributes

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: foo
  namespace: bar
spec:
  entryPoints:                      # [1]
    - foo
  routes:                           # [2]
  - kind: Rule
    match: Host(`test.example.com`) # [3]
    priority: 10                    # [4]
    middlewares:                    # [5]
    - name: middleware1             # [6]
      namespace: default            # [7]
    services:                       # [8]
    - kind: Service
      name: foo
      namespace: default
      passHostHeader: true
      port: 80                      # [9]
      responseForwarding:
        flushInterval: 1ms
      scheme: https
      serversTransport: transport   # [10]
      sticky:
        cookie:
          httpOnly: true
          name: cookie
          secure: true
          sameSite: none
      strategy: RoundRobin
      weight: 10
      nativeLB: true                # [11]
  tls:                              # [12]
    secretName: supersecret         # [13]
    options:                        # [14]
      name: opt                     # [15]
      namespace: default            # [16]
    certResolver: foo               # [17]
    domains:                        # [18]
    - main: example.net             # [19]
      sans:                         # [20]
      - a.example.net
      - b.example.net
RefAttributePurpose
[1]entryPointsList of entry points names
[2]routesList of routes
[3]routes[n].matchDefines the rule corresponding to an underlying router.
[4]routes[n].priorityDefines the priority to disambiguate rules of the same length, for route matching
[5]routes[n].middlewaresList of reference to Middleware
[6]middlewares[n].nameDefines the Middleware name
[7]middlewares[n].namespaceDefines the Middleware namespace
[8]routes[n].servicesList of any combination of TraefikService and reference to a Kubernetes service (See below for ExternalName Service setup)
[9]services[n].portDefines the port of a Kubernetes service. This can be a reference to a named port.
[10]services[n].serversTransportDefines the reference to a ServersTransport. The ServersTransport namespace is assumed to be the Kubernetes service namespace (see ServersTransport reference).
[11]services[n].nativeLBControls, when creating the load-balancer, whether the LB’s children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP.
[12]tlsDefines TLS certificate configuration
[13]tls.secretNameDefines the secret name used to store the certificate (in the IngressRoute namespace)
[14]tls.optionsDefines the reference to a TLSOption
[15]options.nameDefines the TLSOption name
[16]options.namespaceDefines the TLSOption namespace
[17]tls.certResolverDefines the reference to a CertResolver
[18]tls.domainsList of domains
[19]domains[n].mainDefines the main domain name
[20]domains[n].sansList of SANs (alternative domains)

Declaring an IngressRoute

IngressRoute

# All resources definition must be declared
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: test-name
  namespace: default
spec:
  entryPoints:
    - web
  routes:
  - kind: Rule
    match: Host(`test.example.com`)
    middlewares:
    - name: middleware1
      namespace: default
    priority: 10
    services:
    - kind: Service
      name: foo
      namespace: default
      passHostHeader: true
      port: 80
      responseForwarding:
        flushInterval: 1ms
      scheme: https
      sticky:
        cookie:
          httpOnly: true
          name: cookie
          secure: true
      strategy: RoundRobin
      weight: 10
  tls:
    certResolver: foo
    domains:
    - main: example.net
      sans:
      - a.example.net
      - b.example.net
    options:
      name: opt
      namespace: default
    secretName: supersecret

Middlewares

# All resources definition must be declared
# Prefixing with /foo
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: middleware1
  namespace: default
spec:
  addPrefix:
    prefix: /foo

TLSOption

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

spec:
  minVersion: VersionTLS12

Secret

apiVersion: v1
kind: Secret
metadata:
  name: supersecret

data:
  tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0=
  tls.key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0=

Configuring Backend Protocol

There are 3 ways to configure the backend protocol for communication between Traefik and your pods:

  • Setting the scheme explicitly (http/https/h2c)
  • Configuring the name of the kubernetes service port to start with https (https)
  • Setting the kubernetes service port to use port 443 (https)

If you do not configure the above, Traefik will assume an http connection.

Using Kubernetes ExternalName Service

Traefik backends creation needs a port to be set, however Kubernetes ExternalName Service could be defined without any port. Accordingly, Traefik supports defining a port in two ways:

  • only on IngressRoute service
  • on both sides, you’ll be warned if the ports don’t match, and the IngressRoute service port is used

Thus, in case of two sides port definition, Traefik expects a match between ports.

Examples

IngressRoute

---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: test.route
  namespace: default

spec:
  entryPoints:
    - foo

  routes:
  - match: Host(`example.net`)
    kind: Rule
    services:
    - name: external-svc
      port: 80

---
apiVersion: v1
kind: Service
metadata:
  name: external-svc
  namespace: default
spec:
  externalName: external.domain
  type: ExternalName

ExternalName Service

---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: test.route
  namespace: default

spec:
  entryPoints:
    - foo

  routes:
  - match: Host(`example.net`)
    kind: Rule
    services:
    - name: external-svc

---
apiVersion: v1
kind: Service
metadata:
  name: external-svc
  namespace: default
spec:
  externalName: external.domain
  type: ExternalName
  ports:
    - port: 80

Both sides

---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: test.route
  namespace: default

spec:
  entryPoints:
    - foo

  routes:
  - match: Host(`example.net`)
    kind: Rule
    services:
    - name: external-svc
      port: 80

---
apiVersion: v1
kind: Service
metadata:
  name: external-svc
  namespace: default
spec:
  externalName: external.domain
  type: ExternalName
  ports:
    - port: 80

Load Balancing

More information in the dedicated server load balancing section.

Declaring and using Kubernetes Service Load Balancing

IngressRoute

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroutebar
  namespace: default

spec:
  entryPoints:
    - web
  routes:
  - match: Host(`example.com`) && PathPrefix(`/foo`)
    kind: Rule
    services:
    - name: svc1
      namespace: default
    - name: svc2
      namespace: default

K8s Service

apiVersion: v1
kind: Service
metadata:
  name: svc1
  namespace: default

spec:
  ports:
    - name: http
      port: 80
  selector:
    app: traefiklabs
    task: app1
---
apiVersion: v1
kind: Service
metadata:
  name: svc2
  namespace: default

spec:
  ports:
    - name: http
      port: 80
  selector:
    app: traefiklabs
    task: app2

Kubernetes Service Native Load-Balancing

To avoid creating the server load-balancer with the pods IPs and use Kubernetes Service clusterIP directly, one should set the service NativeLB option to true. Please note that, by default, Traefik reuses the established connections to the backends for performance purposes. This can prevent the requests load balancing between the replicas from behaving as one would expect when the option is set. By default, NativeLB is false.

Example

---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: test.route
  namespace: default

spec:
  entryPoints:
    - foo

  routes:
  - match: Host(`example.net`)
    kind: Rule
    services:
    - name: svc
      port: 80
      # Here, nativeLB instructs to build the servers load balancer with the Kubernetes Service clusterIP only.
      nativeLB: true

---
apiVersion: v1
kind: Service
metadata:
  name: svc
  namespace: default
spec:
  type: ClusterIP
  ...

Kind: Middleware

Middleware is the CRD implementation of a Traefik middleware.

Register the Middleware kind in the Kubernetes cluster before creating Middleware objects or referencing middlewares in the IngressRoute objects.

Declaring and Referencing a Middleware

Middleware

apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: stripprefix
  namespace: foo

spec:
  stripPrefix:
    prefixes:
      - /stripit

IngressRoute

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroutebar

spec:
  entryPoints:
    - web
  routes:
  - match: Host(`example.com`) && PathPrefix(`/stripit`)
    kind: Rule
    services:
    - name: whoami
      port: 80
    middlewares:
    - name: stripprefix
      namespace: foo

Cross-provider namespace

As Kubernetes also has its own notion of namespace, one should not confuse the kubernetes namespace of a resource (in the reference to the middleware) with the provider namespace, when the definition of the middleware comes from another provider. In this context, specifying a namespace when referring to the resource does not make any sense, and will be ignored. Additionally, when you want to reference a Middleware from the CRD Provider, you have to append the namespace of the resource in the resource-name as Traefik appends the namespace internally automatically.

More information about available middlewares in the dedicated middlewares section.

Kind: TraefikService

TraefikService is the CRD implementation of a “Traefik Service”.

Register the TraefikService kind in the Kubernetes cluster before creating TraefikService objects, referencing services in the IngressRoute objects, or recursively in others TraefikService objects.

Disambiguate Traefik and Kubernetes Services

As the field name can reference different types of objects, use the field kind to avoid any ambiguity.

The field kind allows the following values:

TraefikService object allows to use any (valid) combinations of:

Weighted Round Robin

More information in the dedicated Weighted Round Robin service load balancing section.

Declaring and Using Weighted Round Robin

IngressRoute

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroutebar
  namespace: default

spec:
  entryPoints:
    - web
  routes:
  - match: Host(`example.com`) && PathPrefix(`/foo`)
    kind: Rule
    services:
    - name: wrr1
      namespace: default
      kind: TraefikService

Weighted Round Robin

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

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

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

spec:
  weighted:
    services:
      - name: svc2
        port: 80
        weight: 1
      - name: svc3
        port: 80
        weight: 1

K8s Service

apiVersion: v1
kind: Service
metadata:
  name: svc1
  namespace: default

spec:
  ports:
    - name: http
      port: 80
  selector:
    app: traefiklabs
    task: app1
---
apiVersion: v1
kind: Service
metadata:
  name: svc2
  namespace: default

spec:
  ports:
    - name: http
      port: 80
  selector:
    app: traefiklabs
    task: app2
---
apiVersion: v1
kind: Service
metadata:
  name: svc3
  namespace: default

spec:
  ports:
    - name: http
      port: 80
  selector:
    app: traefiklabs
    task: app3

Mirroring

More information in the dedicated mirroring service section.

Declaring and Using Mirroring

IngressRoute

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroutebar
  namespace: default

spec:
  entryPoints:
    - web
  routes:
  - match: Host(`example.com`) && PathPrefix(`/foo`)
    kind: Rule
    services:
    - name: mirror1
      namespace: default
      kind: TraefikService

Mirroring k8s Service

# Mirroring from a k8s Service
apiVersion: traefik.io/v1alpha1
kind: TraefikService
metadata:
  name: mirror1
  namespace: default

spec:
  mirroring:
    name: svc1
    port: 80
    mirrors:
      - name: svc2
        port: 80
        percent: 20
      - name: svc3
        kind: TraefikService
        percent: 20

Mirroring Traefik Service

# Mirroring from a Traefik Service
apiVersion: traefik.io/v1alpha1
kind: TraefikService
metadata:
  name: mirror1
  namespace: default

spec:
  mirroring:
    name: wrr1
    kind: TraefikService
     mirrors:
       - name: svc2
         port: 80
         percent: 20
       - name: svc3
         kind: TraefikService
         percent: 20

K8s Service

apiVersion: v1
kind: Service
metadata:
  name: svc1
  namespace: default

spec:
  ports:
    - name: http
      port: 80
  selector:
    app: traefiklabs
    task: app1
---
apiVersion: v1
kind: Service
metadata:
  name: svc2
  namespace: default

spec:
  ports:
    - name: http
      port: 80
  selector:
    app: traefiklabs
    task: app2

References and namespaces

If the optional namespace attribute is not set, the configuration will be applied with the namespace of the current resource.

Additionally, when the definition of the TraefikService is from another provider, the cross-provider syntax ([[email protected]](https://doc.traefik.io/cdn-cgi/l/email-protection)) should be used to refer to the TraefikService, just as in the middleware case.

Specifying a namespace attribute in this case would not make any sense, and will be ignored (except if the provider is kubernetescrd).

Stickiness and load-balancing

As explained in the section about Sticky sessions, for stickiness to work all the way, it must be specified at each load-balancing level.

For instance, in the example below, there is a first level of load-balancing because there is a (Weighted Round Robin) load-balancing of the two whoami services, and there is a second level because each whoami service is a replicaset and is thus handled as a load-balancer of servers.

Stickiness on two load-balancing levels

IngressRoute

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroutebar
  namespace: default

spec:
  entryPoints:
    - web
  routes:
  - match: Host(`example.com`) && PathPrefix(`/foo`)
    kind: Rule
    services:
    - name: wrr1
      namespace: default
      kind: TraefikService

Weighted Round Robin

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

spec:
  weighted:
    services:
      - name: whoami1
        kind: Service
        port: 80
        weight: 1
        sticky:
          cookie:
            name: lvl2
      - name: whoami2
        kind: Service
        weight: 1
        port: 80
        sticky:
          cookie:
            name: lvl2
    sticky:
      cookie:
        name: lvl1

K8s Service

apiVersion: v1
kind: Service
metadata:
  name: whoami1

spec:
  ports:
    - protocol: TCP
      name: web
      port: 80
  selector:
    app: whoami1

---
apiVersion: v1
kind: Service
metadata:
  name: whoami2

spec:
  ports:
    - protocol: TCP
      name: web
      port: 80
  selector:
    app: whoami2

Deployment (to illustrate replicas)

kind: Deployment
apiVersion: apps/v1
metadata:
  namespace: default
  name: whoami1
  labels:
    app: whoami1

spec:
  replicas: 2
  selector:
    matchLabels:
      app: whoami1
  template:
    metadata:
      labels:
        app: whoami1
    spec:
      containers:
        - name: whoami1
          image: traefik/whoami
          ports:
            - name: web
              containerPort: 80

---
kind: Deployment
apiVersion: apps/v1
metadata:
  namespace: default
  name: whoami2
  labels:
    app: whoami2

spec:
  replicas: 2
  selector:
    matchLabels:
      app: whoami2
  template:
    metadata:
      labels:
        app: whoami2
    spec:
      containers:
        - name: whoami2
          image: traefik/whoami
          ports:
            - name: web
              containerPort: 80

To keep a session open with the same server, the client would then need to specify the two levels within the cookie for each request, e.g. with curl:

curl -H Host:example.com -b "lvl1=default-whoami1-80; lvl2=http://10.42.0.6:80" http://localhost:8000/foo

assuming 10.42.0.6 is the IP address of one of the replicas (a pod then) of the whoami1 service.

Kind: IngressRouteTCP

IngressRouteTCP is the CRD implementation of a Traefik TCP router.

Register the IngressRouteTCP kind in the Kubernetes cluster before creating IngressRouteTCP objects.

IngressRouteTCP Attributes

apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
  name: ingressroutetcpfoo

spec:
  entryPoints:                  # [1]
    - footcp
  routes:                       # [2]
  - match: HostSNI(`*`)         # [3]
    priority: 10                # [4]
    middlewares:
    - name: middleware1         # [5]
      namespace: default        # [6]
    services:                   # [7]
    - name: foo                 # [8]
      port: 8080                # [9]
      weight: 10                # [10]
      terminationDelay: 400     # [11]
      proxyProtocol:            # [12]
        version: 1              # [13]
      nativeLB: true            # [14]
  tls:                          # [15]
    secretName: supersecret     # [16]
    options:                    # [17]
      name: opt                 # [18]
      namespace: default        # [19]
    certResolver: foo           # [20]
    domains:                    # [21]
    - main: example.net         # [22]
      sans:                     # [23]
      - a.example.net
      - b.example.net
    passthrough: false          # [24]
RefAttributePurpose
[1]entryPointsList of entrypoints names
[2]routesList of routes
[3]routes[n].matchDefines the rule of the underlying router
[4]routes[n].priorityDefines the priority to disambiguate rules of the same length, for route matching
[5]middlewares[n].nameDefines the MiddlewareTCP name
[6]middlewares[n].namespaceDefines the MiddlewareTCP namespace
[7]routes[n].servicesList of Kubernetes service definitions (See below for ExternalName Service setup)
[8]services[n].nameDefines the name of a Kubernetes service
[9]services[n].portDefines the port of a Kubernetes service. This can be a reference to a named port.
[10]services[n].weightDefines the weight to apply to the server load balancing
[11]services[n].terminationDelaycorresponds to the deadline that the proxy sets, after one of its connected peers indicates it has closed the writing capability of its connection, to close the reading capability as well, hence fully terminating the connection. It is a duration in milliseconds, defaulting to 100. A negative value means an infinite deadline (i.e. the reading capability is never closed).
[12]services[n].proxyProtocolDefines the PROXY protocol configuration
[13]services[n].proxyProtocol.versionDefines the PROXY protocol version
[14]services[n].nativeLBControls, when creating the load-balancer, whether the LB’s children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP.
[15]tlsDefines TLS certificate configuration
[16]tls.secretNameDefines the secret name used to store the certificate (in the IngressRoute namespace)
[17]tls.optionsDefines the reference to a TLSOption
[18]options.nameDefines the TLSOption name
[19]options.namespaceDefines the TLSOption namespace
[20]tls.certResolverDefines the reference to a CertResolver
[21]tls.domainsList of domains
[22]domains[n].mainDefines the main domain name
[23]domains[n].sansList of SANs (alternative domains)
[24]tls.passthroughIf true, delegates the TLS termination to the backend

Declaring an IngressRouteTCP

IngressRouteTCP

apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
  name: ingressroutetcpfoo

spec:
  entryPoints:
    - footcp
  routes:
  # Match is the rule corresponding to an underlying router.
  - match: HostSNI(`*`)
    priority: 10
    services:
    - name: foo
      port: 8080
      terminationDelay: 400
      weight: 10
    - name: bar
      port: 8081
      terminationDelay: 500
      weight: 10
  tls:
    certResolver: foo
    domains:
    - main: example.net
      sans:
      - a.example.net
      - b.example.net
    options:
      name: opt
      namespace: default
    secretName: supersecret
    passthrough: false

TLSOption

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

spec:
  minVersion: VersionTLS12

Secret

apiVersion: v1
kind: Secret
metadata:
  name: supersecret

data:
  tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0=
  tls.key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0=

Using Kubernetes ExternalName Service

Traefik backends creation needs a port to be set, however Kubernetes ExternalName Service could be defined without any port. Accordingly, Traefik supports defining a port in two ways:

  • only on IngressRouteTCP service
  • on both sides, you’ll be warned if the ports don’t match, and the IngressRouteTCP service port is used

Thus, in case of two sides port definition, Traefik expects a match between ports.

Examples

Only on IngressRouteTCP

---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
  name: test.route
  namespace: default

spec:
  entryPoints:
    - foo

  routes:
  - match: HostSNI(`*`)
    services:
    - name: external-svc
      port: 80

---
apiVersion: v1
kind: Service
metadata:
  name: external-svc
  namespace: default
spec:
  externalName: external.domain
  type: ExternalName

On both sides

---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
  name: test.route
  namespace: default

spec:
  entryPoints:
    - foo

  routes:
  - match: HostSNI(`*`)
    services:
    - name: external-svc
      port: 80

---
apiVersion: v1
kind: Service
metadata:
  name: external-svc
  namespace: default
spec:
  externalName: external.domain
  type: ExternalName
  ports:
    - port: 80

Kubernetes Service Native Load-Balancing

To avoid creating the server load-balancer with the pods IPs and use Kubernetes Service clusterIP directly, one should set the TCP service NativeLB option to true. By default, NativeLB is false.

Examples

---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRouteTCP
metadata:
  name: test.route
  namespace: default

spec:
  entryPoints:
    - foo

  routes:
  - match: HostSNI(`*`)
    services:
    - name: svc
      port: 80
      # Here, nativeLB instructs to build the servers load balancer with the Kubernetes Service clusterIP only.
      nativeLB: true

---
apiVersion: v1
kind: Service
metadata:
  name: svc
  namespace: default
spec:
  type: ClusterIP
  ...

Kind: MiddlewareTCP

MiddlewareTCP is the CRD implementation of a Traefik TCP middleware.

Register the MiddlewareTCP kind in the Kubernetes cluster before creating MiddlewareTCP objects or referencing TCP middlewares in the IngressRouteTCP objects.

Declaring and Referencing a MiddlewareTCP

Middleware

apiVersion: traefik.io/v1alpha1
kind: MiddlewareTCP
metadata:
  name: ipwhitelist
spec:
  ipWhiteList:
    sourceRange:
      - 127.0.0.1/32
      - 192.168.1.7

IngressRoute

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroutebar

spec:
  entryPoints:
    - web
  routes:
  - match: Host(`example.com`) && PathPrefix(`/whitelist`)
    kind: Rule
    services:
    - name: whoami
      port: 80
    middlewares:
    - name: ipwhitelist
      namespace: foo

Cross-provider namespace

As Kubernetes also has its own notion of namespace, one should not confuse the kubernetes namespace of a resource (in the reference to the middleware) with the provider namespace, when the definition of the TCP middleware comes from another provider. In this context, specifying a namespace when referring to the resource does not make any sense, and will be ignored. Additionally, when you want to reference a MiddlewareTCP from the CRD Provider, you have to append the namespace of the resource in the resource-name as Traefik appends the namespace internally automatically.

More information about available TCP middlewares in the dedicated middlewares section.

Kind: IngressRouteUDP

IngressRouteUDP is the CRD implementation of a Traefik UDP router.

Register the IngressRouteUDP kind in the Kubernetes cluster before creating IngressRouteUDP objects.

IngressRouteUDP Attributes

apiVersion: traefik.io/v1alpha1
kind: IngressRouteUDP
metadata:
  name: ingressrouteudpfoo

spec:
  entryPoints:                  # [1]
    - fooudp
  routes:                       # [2]
  - services:                   # [3]
    - name: foo                 # [4]
      port: 8080                # [5]
      weight: 10                # [6]
      nativeLB: true            # [7]
RefAttributePurpose
[1]entryPointsList of entrypoints names
[2]routesList of routes
[3]routes[n].servicesList of Kubernetes service definitions (See below for ExternalName Service setup)
[4]services[n].nameDefines the name of a Kubernetes service
[5]services[n].portDefines the port of a Kubernetes service. This can be a reference to a named port.
[6]services[n].weightDefines the weight to apply to the server load balancing
[7]services[n].nativeLBControls, when creating the load-balancer, whether the LB’s children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP.

Declaring an IngressRouteUDP

apiVersion: traefik.io/v1alpha1
kind: IngressRouteUDP
metadata:
  name: ingressrouteudpfoo

spec:
  entryPoints:
    - fooudp
  routes:
  - services:
    - name: foo
      port: 8080
      weight: 10
    - name: bar
      port: 8081
      weight: 10

Using Kubernetes ExternalName Service

Traefik backends creation needs a port to be set, however Kubernetes ExternalName Service could be defined without any port. Accordingly, Traefik supports defining a port in two ways:

  • only on IngressRouteUDP service
  • on both sides, you’ll be warned if the ports don’t match, and the IngressRouteUDP service port is used

Thus, in case of two sides port definition, Traefik expects a match between ports.

Examples

IngressRouteUDP

---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteUDP
metadata:
  name: test.route
  namespace: default

spec:
  entryPoints:
    - foo

  routes:
  - services:
    - name: external-svc
      port: 80

---
apiVersion: v1
kind: Service
metadata:
  name: external-svc
  namespace: default
spec:
  externalName: external.domain
  type: ExternalName

ExternalName Service

---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteUDP
metadata:
  name: test.route
  namespace: default

spec:
  entryPoints:
    - foo

  routes:
  - services:
    - name: external-svc

---
apiVersion: v1
kind: Service
metadata:
  name: external-svc
  namespace: default
spec:
  externalName: external.domain
  type: ExternalName
  ports:
    - port: 80

Both sides

---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteUDP
metadata:
  name: test.route
  namespace: default

spec:
  entryPoints:
    - foo

  routes:
  - services:
    - name: external-svc
      port: 80

---
apiVersion: v1
kind: Service
metadata:
  name: external-svc
  namespace: default
spec:
  externalName: external.domain
  type: ExternalName
  ports:
    - port: 80

Kubernetes Service Native Load-Balancing

To avoid creating the server load-balancer with the pods IPs and use Kubernetes Service clusterIP directly, one should set the UDP service NativeLB option to true. By default, NativeLB is false.

Example

---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRouteUDP
metadata:
  name: test.route
  namespace: default

spec:
  entryPoints:
    - foo

  routes:
  - services:
    - name: svc
      port: 80
      # Here, nativeLB instructs to build the servers load balancer with the Kubernetes Service clusterIP only.
      nativeLB: true

---
apiVersion: v1
kind: Service
metadata:
  name: svc
  namespace: default
spec:
  type: ClusterIP
  ...

Kind: TLSOption

TLSOption is the CRD implementation of a Traefik “TLS Option”.

Register the TLSOption kind in the Kubernetes cluster before creating TLSOption objects or referencing TLS options in the IngressRoute / IngressRouteTCP objects.

TLSOption Attributes

TLSOption

apiVersion: traefik.io/v1alpha1
kind: TLSOption
metadata:
  name: mytlsoption                             # [1]
  namespace: default

spec:
  minVersion: VersionTLS12                      # [2]
  maxVersion: VersionTLS13                      # [3]
  curvePreferences:                             # [4]
    - CurveP521
    - CurveP384
  cipherSuites:                                 # [5]
    - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
    - TLS_RSA_WITH_AES_256_GCM_SHA384
  clientAuth:                                   # [6]
    secretNames:                                # [7]
      - secret-ca1
      - secret-ca2
    clientAuthType: VerifyClientCertIfGiven     # [8]
  sniStrict: true                               # [9]
  alpnProtocols:                                # [10]
    - foobar
RefAttributePurpose
[1]nameDefines the name of the TLSOption resource. One can use default as name to redefine the default TLSOption.
[2]minVersionDefines the minimum TLS version that is acceptable.
[3]maxVersionDefines the maximum TLS version that is acceptable.
[4]cipherSuiteslist of supported cipher suites for TLS versions up to TLS 1.2.
[5]curvePreferencesList of the elliptic curves references that will be used in an ECDHE handshake, in preference order.
[6]clientAuthdetermines the server’s policy for TLS Client Authentication.
[7]clientAuth.secretNameslist of names of the referenced Kubernetes Secrets (in TLSOption namespace). The secret must contain a certificate under either a tls.ca or a ca.crt key.
[8]clientAuth.clientAuthTypedefines the client authentication type to apply. The available values are: NoClientCert, RequestClientCert, VerifyClientCertIfGiven and RequireAndVerifyClientCert.
[9]sniStrictif true, Traefik won’t allow connections from clients connections that do not specify a server_name extension.
[10]alpnProtocolsList of supported application level protocols for the TLS handshake, in order of preference.

CA Secret

The CA secret must contain a base64 encoded certificate under either a tls.ca or a ca.crt key.

Declaring and referencing a TLSOption

TLSOption

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

spec:
  minVersion: VersionTLS12
  sniStrict: true
  cipherSuites:
    - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
    - TLS_RSA_WITH_AES_256_GCM_SHA384
  clientAuth:
    secretNames:
      - secret-ca1
      - secret-ca2
    clientAuthType: VerifyClientCertIfGiven

IngressRoute

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroutebar

spec:
  entryPoints:
    - web
  routes:
  - match: Host(`example.com`) && PathPrefix(`/stripit`)
    kind: Rule
    services:
    - name: whoami
      port: 80
  tls:
    options: 
      name: mytlsoption
      namespace: default

Secrets

apiVersion: v1
kind: Secret
metadata:
  name: secret-ca1
  namespace: default

data:
  # Must contain a certificate under either a `tls.ca` or a `ca.crt` key.
  tls.ca: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0=

---
apiVersion: v1
kind: Secret
metadata:
  name: secret-ca2
  namespace: default

data:
  # Must contain a certificate under either a `tls.ca` or a `ca.crt` key. 
  tls.ca: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0=

References and namespaces

If the optional namespace attribute is not set, the configuration will be applied with the namespace of the IngressRoute.

Additionally, when the definition of the TLS option is from another provider, the cross-provider syntax ([[email protected]](https://doc.traefik.io/cdn-cgi/l/email-protection)) should be used to refer to the TLS option. Specifying a namespace attribute in this case would not make any sense, and will be ignored.

Kind: TLSStore

TLSStore is the CRD implementation of a Traefik “TLS Store”.

Register the TLSStore kind in the Kubernetes cluster before creating TLSStore objects.

Default TLS Store

Traefik currently only uses the TLS Store named “default”. This default TLSStore should be in a namespace discoverable by Traefik. Since it is used by default on IngressRoute and IngressRouteTCP objects, there never is a need to actually reference it. This means that you cannot have two stores that are named default in different Kubernetes namespaces. As a consequence, with respect to TLS stores, the only change that makes sense (and only if needed) is to configure the default TLSStore.

TLSStore Attributes

TLSStore

apiVersion: traefik.io/v1alpha1
kind: TLSStore
metadata:
  name: default

spec:
  certificates:                            # [1]
    - secretName: foo                      
    - secretName: bar
  defaultCertificate:                      # [2]
    secretName: secret
RefAttributePurpose
[1]certificatesList of Kubernetes Secrets, each of them holding a key/certificate pair to add to the store.
[2]defaultCertificateName of a Kubernetes Secret that holds the default key/certificate pair for the store.

Declaring and referencing a TLSStore

TLSStore

apiVersion: traefik.io/v1alpha1
kind: TLSStore
metadata:
  name: default

spec:
  defaultCertificate:
    secretName:  supersecret

IngressRoute

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroutebar

spec:
  entryPoints:
    - websecure
  routes:
  - match: Host(`example.com`) && PathPrefix(`/stripit`)
    kind: Rule
    services:
    - name: whoami
      port: 80
  tls: {}

Secret

apiVersion: v1
kind: Secret
metadata:
  name: supersecret

data:
  tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0=
  tls.key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0=

Kind: ServersTransport

ServersTransport is the CRD implementation of a ServersTransport.

Default serversTransport

If no serversTransport is specified, the [[email protected]](https://doc.traefik.io/cdn-cgi/l/email-protection) will be used. The [[email protected]](https://doc.traefik.io/cdn-cgi/l/email-protection) serversTransport is created from the static configuration.

ServersTransport Attributes

ServersTransport

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

spec:
  serverName: foobar               # [1]
  insecureSkipVerify: true         # [2]
  rootCAsSecrets:                  # [3]
    - foobar
    - foobar
  certificatesSecrets:             # [4]
    - foobar
    - foobar
  maxIdleConnsPerHost: 1           # [5]
  forwardingTimeouts:              # [6]
    dialTimeout: 42s               # [7]
    responseHeaderTimeout: 42s     # [8]
    idleConnTimeout: 42s           # [9]
  peerCertURI: foobar              # [10]
  disableHTTP2: true               # [11]
RefAttributePurpose
[1]serverNameServerName used to contact the server.
[2]insecureSkipVerifyControls whether the server’s certificate chain and host name is verified.
[3]rootCAsSecretsDefines the set of root certificate authorities to use when verifying server certificates. The secret must contain a certificate under either a tls.ca or a ca.crt key.
[4]certificatesSecretsCertificates to present to the server for mTLS.
[5]maxIdleConnsPerHostControls the maximum idle (keep-alive) connections to keep per-host. If zero, defaultMaxIdleConnsPerHost is used.
[6]forwardingTimeoutsTimeouts for requests forwarded to the servers.
[7]dialTimeoutThe amount of time to wait until a connection to a server can be established. If zero, no timeout exists.
[8]responseHeaderTimeoutThe amount of time to wait for a server’s response headers after fully writing the request (including its body, if any). If zero, no timeout exists.
[9]idleConnTimeoutThe maximum amount of time an idle (keep-alive) connection will remain idle before closing itself. If zero, no timeout exists.
[10]peerCertURIURI used to match against SAN URIs during the server’s certificate verification.
[11]disableHTTP2Disables HTTP/2 for connections with servers.

CA Secret

The CA secret must contain a base64 encoded certificate under either a tls.ca or a ca.crt key.

Declaring and referencing a ServersTransport

ServersTransport

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

spec:
  serverName: example.org
  insecureSkipVerify: true

IngressRoute

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: testroute
  namespace: default

spec:
  entryPoints:
    - web
  routes:
  - match: Host(`example.com`)
    kind: Rule
    services:
    - name: whoami
      port: 80
      serversTransport: mytransport

ServersTransport reference

By default, the referenced ServersTransport CRD must be defined in the same Kubernetes service namespace.

To reference a ServersTransport CRD from another namespace, the value must be of form [[email protected]](https://doc.traefik.io/cdn-cgi/l/email-protection), and the cross-namespace option must be enabled.

If the ServersTransport CRD is defined in another provider the cross-provider format [[email protected]](https://doc.traefik.io/cdn-cgi/l/email-protection) should be used.

Further

Also see the full example with Let’s Encrypt.


Using Traefik for Business Applications?

If you are using Traefik in your organization, consider Traefik Enterprise. You can use it as your:

Traefik Enterprise simplifies the discovery, security, and deployment of APIs and microservices across any environment. See it in action in this short video walkthrough.