Skip to content

Commit 07999b0

Browse files
committed
Adding new chart traefik-crds (closes #285)
1 parent 4141453 commit 07999b0

23 files changed

+5032
-0
lines changed

CHANGELOG

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
Version 0.3.8 (2025-11-24)
2+
---------------------------
3+
charts/traefik-crds: Initial release of Traefik CRDs chart (v27.0.2)
4+
15
Version 0.3.7 (2025-11-19)
26
---------------------------
37
charts/cluster-warmer: Add Docker authentication support for private registries

charts/traefik-crds/Chart.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: v1
2+
name: traefik-crds
3+
description: Traefik CRDs Helm chart for Kubernetes
4+
version: 0.1.0
5+
appVersion: "v27.0.2"
6+
home: https://github.com/snowplow-devops/helm-charts
7+
icon: https://raw.githubusercontent.com/snowplow-devops/helm-charts/master/docs/logo/snowplow.png
8+
sources:
9+
- https://github.com/snowplow-devops/helm-charts
10+
- https://github.com/traefik/traefik-helm-chart
11+
maintainers:
12+
- name: jamesarems
13+
url: https://github.com/jamesarems
14+
15+
keywords:
16+
- traefik
17+
- crd
18+
- ingress

charts/traefik-crds/README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# traefik-crds
2+
3+
A helm chart for the custom resource definitions behind the [Traefik](https://github.com/traefik/traefik-helm-chart) chart. This allows both pieces to be installed with Helm and avoids needing to use `kubectl` to install the resource definitions, which is important for a fully automated deployment with IaC tooling like Terraform.
4+
5+
The `traefik-crds` chart is meant to be used along with the [Traefik](https://github.com/traefik/traefik-helm-chart) chart. The reason for separating the CRDs outside the Traefik helm release is for safety reasons. If you manage the CRDs within the `traefik` helm release and you uninstall the release, the CRDs will also be uninstalled. If the CRDs are uninstalled, you will lose all instances of IngressRoute, Middleware, and other Traefik resources in your cluster. This helm chart allows both to be managed with helm and provides flexibility of managing the CRDs outside the Traefik helm release.
6+
7+
The chart templates are pulled entirely from Traefik helm chart release: https://github.com/traefik/traefik-helm-chart/tree/v27.0.2/traefik/crds
8+
9+
## Installing the Chart
10+
11+
Add the repository to Helm:
12+
13+
```bash
14+
helm repo add snowplow-devops https://snowplow-devops.github.io/helm-charts
15+
```
16+
17+
Install or upgrading the chart with default configuration:
18+
19+
```bash
20+
helm upgrade --install traefik-crds --namespace traefik snowplow-devops/traefik-crds
21+
```
22+
23+
## Uninstalling the Chart
24+
25+
To uninstall/delete the `traefik-crds` release:
26+
27+
```bash
28+
helm delete traefik-crds --namespace traefik
29+
```
Lines changed: 287 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,287 @@
1+
---
2+
apiVersion: apiextensions.k8s.io/v1
3+
kind: CustomResourceDefinition
4+
metadata:
5+
annotations:
6+
controller-gen.kubebuilder.io/version: v0.14.0
7+
name: ingressroutes.traefik.containo.us
8+
spec:
9+
group: traefik.containo.us
10+
names:
11+
kind: IngressRoute
12+
listKind: IngressRouteList
13+
plural: ingressroutes
14+
singular: ingressroute
15+
scope: Namespaced
16+
versions:
17+
- name: v1alpha1
18+
schema:
19+
openAPIV3Schema:
20+
description: IngressRoute is the CRD implementation of a Traefik HTTP Router.
21+
properties:
22+
apiVersion:
23+
description: |-
24+
APIVersion defines the versioned schema of this representation of an object.
25+
Servers should convert recognized schemas to the latest internal value, and
26+
may reject unrecognized values.
27+
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
28+
type: string
29+
kind:
30+
description: |-
31+
Kind is a string value representing the REST resource this object represents.
32+
Servers may infer this from the endpoint the client submits requests to.
33+
Cannot be updated.
34+
In CamelCase.
35+
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
36+
type: string
37+
metadata:
38+
type: object
39+
spec:
40+
description: IngressRouteSpec defines the desired state of IngressRoute.
41+
properties:
42+
entryPoints:
43+
description: |-
44+
EntryPoints defines the list of entry point names to bind to.
45+
Entry points have to be configured in the static configuration.
46+
More info: https://doc.traefik.io/traefik/v2.11/routing/entrypoints/
47+
Default: all.
48+
items:
49+
type: string
50+
type: array
51+
routes:
52+
description: Routes defines the list of routes.
53+
items:
54+
description: Route holds the HTTP route configuration.
55+
properties:
56+
kind:
57+
description: |-
58+
Kind defines the kind of the route.
59+
Rule is the only supported kind.
60+
enum:
61+
- Rule
62+
type: string
63+
match:
64+
description: |-
65+
Match defines the router's rule.
66+
More info: https://doc.traefik.io/traefik/v2.11/routing/routers/#rule
67+
type: string
68+
middlewares:
69+
description: |-
70+
Middlewares defines the list of references to Middleware resources.
71+
More info: https://doc.traefik.io/traefik/v2.11/routing/providers/kubernetes-crd/#kind-middleware
72+
items:
73+
description: MiddlewareRef is a reference to a Middleware
74+
resource.
75+
properties:
76+
name:
77+
description: Name defines the name of the referenced Middleware
78+
resource.
79+
type: string
80+
namespace:
81+
description: Namespace defines the namespace of the referenced
82+
Middleware resource.
83+
type: string
84+
required:
85+
- name
86+
type: object
87+
type: array
88+
priority:
89+
description: |-
90+
Priority defines the router's priority.
91+
More info: https://doc.traefik.io/traefik/v2.11/routing/routers/#priority
92+
type: integer
93+
services:
94+
description: |-
95+
Services defines the list of Service.
96+
It can contain any combination of TraefikService and/or reference to a Kubernetes Service.
97+
items:
98+
description: Service defines an upstream HTTP service to proxy
99+
traffic to.
100+
properties:
101+
kind:
102+
description: Kind defines the kind of the Service.
103+
enum:
104+
- Service
105+
- TraefikService
106+
type: string
107+
name:
108+
description: |-
109+
Name defines the name of the referenced Kubernetes Service or TraefikService.
110+
The differentiation between the two is specified in the Kind field.
111+
type: string
112+
namespace:
113+
description: Namespace defines the namespace of the referenced
114+
Kubernetes Service or TraefikService.
115+
type: string
116+
nativeLB:
117+
description: |-
118+
NativeLB controls, when creating the load-balancer,
119+
whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP.
120+
The Kubernetes Service itself does load-balance to the pods.
121+
By default, NativeLB is false.
122+
type: boolean
123+
passHostHeader:
124+
description: |-
125+
PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service.
126+
By default, passHostHeader is true.
127+
type: boolean
128+
port:
129+
anyOf:
130+
- type: integer
131+
- type: string
132+
description: |-
133+
Port defines the port of a Kubernetes Service.
134+
This can be a reference to a named port.
135+
x-kubernetes-int-or-string: true
136+
responseForwarding:
137+
description: ResponseForwarding defines how Traefik forwards
138+
the response from the upstream Kubernetes Service to
139+
the client.
140+
properties:
141+
flushInterval:
142+
description: |-
143+
FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body.
144+
A negative value means to flush immediately after each write to the client.
145+
This configuration is ignored when ReverseProxy recognizes a response as a streaming response;
146+
for such responses, writes are flushed to the client immediately.
147+
Default: 100ms
148+
type: string
149+
type: object
150+
scheme:
151+
description: |-
152+
Scheme defines the scheme to use for the request to the upstream Kubernetes Service.
153+
It defaults to https when Kubernetes Service port is 443, http otherwise.
154+
type: string
155+
serversTransport:
156+
description: |-
157+
ServersTransport defines the name of ServersTransport resource to use.
158+
It allows to configure the transport between Traefik and your servers.
159+
Can only be used on a Kubernetes Service.
160+
type: string
161+
sticky:
162+
description: |-
163+
Sticky defines the sticky sessions configuration.
164+
More info: https://doc.traefik.io/traefik/v2.11/routing/services/#sticky-sessions
165+
properties:
166+
cookie:
167+
description: Cookie defines the sticky cookie configuration.
168+
properties:
169+
httpOnly:
170+
description: HTTPOnly defines whether the cookie
171+
can be accessed by client-side APIs, such as
172+
JavaScript.
173+
type: boolean
174+
name:
175+
description: Name defines the Cookie name.
176+
type: string
177+
sameSite:
178+
description: |-
179+
SameSite defines the same site policy.
180+
More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
181+
type: string
182+
secure:
183+
description: Secure defines whether the cookie
184+
can only be transmitted over an encrypted connection
185+
(i.e. HTTPS).
186+
type: boolean
187+
type: object
188+
type: object
189+
strategy:
190+
description: |-
191+
Strategy defines the load balancing strategy between the servers.
192+
RoundRobin is the only supported value at the moment.
193+
type: string
194+
weight:
195+
description: |-
196+
Weight defines the weight and should only be specified when Name references a TraefikService object
197+
(and to be precise, one that embeds a Weighted Round Robin).
198+
type: integer
199+
required:
200+
- name
201+
type: object
202+
type: array
203+
required:
204+
- kind
205+
- match
206+
type: object
207+
type: array
208+
tls:
209+
description: |-
210+
TLS defines the TLS configuration.
211+
More info: https://doc.traefik.io/traefik/v2.11/routing/routers/#tls
212+
properties:
213+
certResolver:
214+
description: |-
215+
CertResolver defines the name of the certificate resolver to use.
216+
Cert resolvers have to be configured in the static configuration.
217+
More info: https://doc.traefik.io/traefik/v2.11/https/acme/#certificate-resolvers
218+
type: string
219+
domains:
220+
description: |-
221+
Domains defines the list of domains that will be used to issue certificates.
222+
More info: https://doc.traefik.io/traefik/v2.11/routing/routers/#domains
223+
items:
224+
description: Domain holds a domain name with SANs.
225+
properties:
226+
main:
227+
description: Main defines the main domain name.
228+
type: string
229+
sans:
230+
description: SANs defines the subject alternative domain
231+
names.
232+
items:
233+
type: string
234+
type: array
235+
type: object
236+
type: array
237+
options:
238+
description: |-
239+
Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection.
240+
If not defined, the `default` TLSOption is used.
241+
More info: https://doc.traefik.io/traefik/v2.11/https/tls/#tls-options
242+
properties:
243+
name:
244+
description: |-
245+
Name defines the name of the referenced TLSOption.
246+
More info: https://doc.traefik.io/traefik/v2.11/routing/providers/kubernetes-crd/#kind-tlsoption
247+
type: string
248+
namespace:
249+
description: |-
250+
Namespace defines the namespace of the referenced TLSOption.
251+
More info: https://doc.traefik.io/traefik/v2.11/routing/providers/kubernetes-crd/#kind-tlsoption
252+
type: string
253+
required:
254+
- name
255+
type: object
256+
secretName:
257+
description: SecretName is the name of the referenced Kubernetes
258+
Secret to specify the certificate details.
259+
type: string
260+
store:
261+
description: |-
262+
Store defines the reference to the TLSStore, that will be used to store certificates.
263+
Please note that only `default` TLSStore can be used.
264+
properties:
265+
name:
266+
description: |-
267+
Name defines the name of the referenced TLSStore.
268+
More info: https://doc.traefik.io/traefik/v2.11/routing/providers/kubernetes-crd/#kind-tlsstore
269+
type: string
270+
namespace:
271+
description: |-
272+
Namespace defines the namespace of the referenced TLSStore.
273+
More info: https://doc.traefik.io/traefik/v2.11/routing/providers/kubernetes-crd/#kind-tlsstore
274+
type: string
275+
required:
276+
- name
277+
type: object
278+
type: object
279+
required:
280+
- routes
281+
type: object
282+
required:
283+
- metadata
284+
- spec
285+
type: object
286+
served: true
287+
storage: true

0 commit comments

Comments
 (0)