refactor: migrate CRD API groups to hanzo.ai and labels to ingress.*

- CRD API group: traefik.io -> hanzo.ai (GroupName, apiVersion, RBAC)
- Docker/provider label prefix: traefik.* -> ingress.* (all providers)
- CRD kind: TraefikService -> IngressService
- Directory renames: traefikio/ -> hanzoai/ (types, generated code, listers, informers, clientset)
- Config root name: traefik -> ingress (KV stores, file paths, env prefix)
- Metrics prefix: traefik_ -> ingress_
- Kubernetes annotations: traefik.ingress.kubernetes.io/ -> ingress.kubernetes.io/
- Gateway annotations: traefik.io/ -> hanzo.ai/
- Internal provider package: provider/traefik -> provider/builtins
- Type renames: TraefikLog -> IngressLog, TraefikCmdConfiguration -> IngressCmdConfiguration
- Generated client methods: TraefikV1alpha1() -> HanzoV1alpha1(), Traefik() -> Hanzo()
- Sample configs: traefik.sample.{toml,yml} -> ingress.sample.{toml,yml}
- Config paths: /etc/traefik/ -> /etc/ingress/, ~/.config/traefik -> ~/.config/ingress
- Default cert CN: TRAEFIK DEFAULT CERT -> INGRESS DEFAULT CERT
This commit is contained in:
2026-02-26 10:33:54 -08:00
parent a10105c019
commit ee53f0bd67
704 changed files with 5009 additions and 5004 deletions
+1 -1
View File
@@ -2358,7 +2358,7 @@ Release canceled.
**Bug fixes:**
- **[acme]** Update go-acme/lego to v4.9.1 ([#9550](https://github.com/traefik/traefik/pull/9550) by [ldez](https://github.com/ldez))
- **[k8s/crd]** Support of allowEmptyServices in TraefikService ([#9424](https://github.com/traefik/traefik/pull/9424) by [jeromeguiard](https://github.com/jeromeguiard))
- **[k8s/crd]** Support of allowEmptyServices in IngressService ([#9424](https://github.com/traefik/traefik/pull/9424) by [jeromeguiard](https://github.com/jeromeguiard))
- **[logs]** Remove logs of the request ([#9574](https://github.com/traefik/traefik/pull/9574) by [ldez](https://github.com/ldez))
- **[plugins]** Increase the timeout on plugin download ([#9529](https://github.com/traefik/traefik/pull/9529) by [ldez](https://github.com/ldez))
- **[server]** Update golang.org/x/net ([#9582](https://github.com/traefik/traefik/pull/9582) by [ldez](https://github.com/ldez))
+1 -1
View File
@@ -210,7 +210,7 @@ metadata:
annotations:
ingressclass.kubernetes.io/is-default-class: "true"
spec:
controller: traefik.io/ingress-controller
controller: hanzo.ai/ingress-controller
```
Any Ingress resource without an explicit `ingressClassName` is automatically picked up.
+5 -5
View File
@@ -7,17 +7,17 @@ import (
"github.com/hanzoai/ingress/v3/pkg/config/static"
)
// TraefikCmdConfiguration wraps the static configuration and extra parameters.
type TraefikCmdConfiguration struct {
// IngressCmdConfiguration wraps the static configuration and extra parameters.
type IngressCmdConfiguration struct {
static.Configuration `export:"true"`
// ConfigFile is the path to the configuration file.
ConfigFile string `description:"Configuration file to use. If specified all other flags are ignored." export:"true"`
}
// NewTraefikConfiguration creates a TraefikCmdConfiguration with default values.
func NewTraefikConfiguration() *TraefikCmdConfiguration {
return &TraefikCmdConfiguration{
// NewIngressConfiguration creates a IngressCmdConfiguration with default values.
func NewIngressConfiguration() *IngressCmdConfiguration {
return &IngressCmdConfiguration{
Configuration: static.Configuration{
Global: &static.Global{
CheckNewVersion: true,
+7 -7
View File
@@ -12,21 +12,21 @@ import (
)
// NewCmd builds a new HealthCheck command.
func NewCmd(traefikConfiguration *static.Configuration, loaders []cli.ResourceLoader) *cli.Command {
func NewCmd(ingressConfiguration *static.Configuration, loaders []cli.ResourceLoader) *cli.Command {
return &cli.Command{
Name: "healthcheck",
Description: `Calls Traefik /ping endpoint (disabled by default) to check the health of Traefik.`,
Configuration: traefikConfiguration,
Run: runCmd(traefikConfiguration),
Configuration: ingressConfiguration,
Run: runCmd(ingressConfiguration),
Resources: loaders,
}
}
func runCmd(traefikConfiguration *static.Configuration) func(_ []string) error {
func runCmd(ingressConfiguration *static.Configuration) func(_ []string) error {
return func(_ []string) error {
traefikConfiguration.SetEffectiveConfiguration()
ingressConfiguration.SetEffectiveConfiguration()
resp, errPing := Do(*traefikConfiguration)
resp, errPing := Do(*ingressConfiguration)
if resp != nil {
resp.Body.Close()
}
@@ -53,7 +53,7 @@ func Do(staticConfiguration static.Configuration) (*http.Response, error) {
ep := staticConfiguration.Ping.EntryPoint
if ep == "" {
ep = "traefik"
ep = "ingress"
}
pingEntryPoint, ok := staticConfiguration.EntryPoints[ep]
+10 -10
View File
@@ -38,7 +38,7 @@ import (
"github.com/hanzoai/ingress/v3/pkg/provider/acme"
"github.com/hanzoai/ingress/v3/pkg/provider/aggregator"
"github.com/hanzoai/ingress/v3/pkg/provider/tailscale"
"github.com/hanzoai/ingress/v3/pkg/provider/traefik"
"github.com/hanzoai/ingress/v3/pkg/provider/builtins"
"github.com/hanzoai/ingress/v3/pkg/proxy"
"github.com/hanzoai/ingress/v3/pkg/proxy/httputil"
"github.com/hanzoai/ingress/v3/pkg/redactor"
@@ -47,17 +47,17 @@ import (
"github.com/hanzoai/ingress/v3/pkg/server/middleware"
"github.com/hanzoai/ingress/v3/pkg/server/service"
"github.com/hanzoai/ingress/v3/pkg/tcp"
traefiktls "github.com/hanzoai/ingress/v3/pkg/tls"
ingresstls "github.com/hanzoai/ingress/v3/pkg/tls"
"github.com/hanzoai/ingress/v3/pkg/version"
)
func main() {
// traefik config inits
tConfig := cmd.NewTraefikConfiguration()
tConfig := cmd.NewIngressConfiguration()
loaders := []cli.ResourceLoader{&tcli.DeprecationLoader{}, &tcli.FileLoader{}, &tcli.FlagLoader{}, &tcli.EnvLoader{}}
cmdTraefik := &cli.Command{
cmdIngress := &cli.Command{
Name: "hanzo-ingress",
Description: `Hanzo Ingress is a cloud-native reverse proxy and load balancer for Hanzo infrastructure.
Based on Traefik. Documentation: https://doc.traefik.io/traefik/`,
@@ -68,19 +68,19 @@ Based on Traefik. Documentation: https://doc.traefik.io/traefik/`,
},
}
err := cmdTraefik.AddCommand(healthcheck.NewCmd(&tConfig.Configuration, loaders))
err := cmdIngress.AddCommand(healthcheck.NewCmd(&tConfig.Configuration, loaders))
if err != nil {
stdlog.Println(err)
os.Exit(1)
}
err = cmdTraefik.AddCommand(cmdVersion.NewCmd())
err = cmdIngress.AddCommand(cmdVersion.NewCmd())
if err != nil {
stdlog.Println(err)
os.Exit(1)
}
err = cli.Execute(cmdTraefik)
err = cli.Execute(cmdIngress)
if err != nil {
log.Error().Err(err).Msg("Command error")
logrus.Exit(1)
@@ -178,14 +178,14 @@ func setupServer(staticConfiguration *static.Configuration) (*server.Server, err
routinesPool := safe.NewPool(ctx)
// adds internal provider
err := providerAggregator.AddProvider(traefik.New(*staticConfiguration))
err := providerAggregator.AddProvider(builtins.New(*staticConfiguration))
if err != nil {
return nil, err
}
// ACME
tlsManager := traefiktls.NewManager(staticConfiguration.OCSP)
tlsManager := ingresstls.NewManager(staticConfiguration.OCSP)
routinesPool.GoCtx(tlsManager.Run)
httpChallengeProvider := acme.NewChallengeHTTP()
@@ -452,7 +452,7 @@ func switchRouter(routerFactory *server.RouterFactory, serverEntryPointsTCP serv
}
// initACMEProvider creates and registers acme.Provider instances corresponding to the configured ACME certificate resolvers.
func initACMEProvider(c *static.Configuration, providerAggregator *aggregator.ProviderAggregator, tlsManager *traefiktls.Manager, httpChallengeProvider, tlsChallengeProvider challenge.Provider, routinesPool *safe.Pool) []*acme.Provider {
func initACMEProvider(c *static.Configuration, providerAggregator *aggregator.ProviderAggregator, tlsManager *ingresstls.Manager, httpChallengeProvider, tlsChallengeProvider challenge.Provider, routinesPool *safe.Pool) []*acme.Provider {
localStores := map[string]*acme.LocalStore{}
var resolvers []*acme.Provider
+1 -1
View File
@@ -127,7 +127,7 @@ func TestGetDefaultsEntrypoints(t *testing.T) {
"web": {
Address: ":80",
},
"traefik": {
"ingress": {
Address: ":8080",
},
},
+22 -22
View File
@@ -24,7 +24,7 @@ Middlewares allow you to modify requests or responses as they pass through Hanzo
### Create Middlewares
```yaml
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: secure-headers
@@ -39,7 +39,7 @@ spec:
stsPreload: true
stsSeconds: 31536000
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: ip-allowlist
@@ -128,7 +128,7 @@ This approach uses the Gateway API's native filter mechanism rather than annotat
Update your existing IngressRoute to include middlewares:
```yaml
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: whoami
@@ -213,7 +213,7 @@ helm upgrade traefik traefik/traefik -n traefik --reuse-values -f values.yaml
Update your IngressRoute with the Let's Encrypt certificate:
```yaml
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: whoami
@@ -364,11 +364,11 @@ kubectl scale deployment whoami --replicas=3
### Using Gateway API with Hanzo IngressService
First, create the `TraefikService` for sticky sessions:
First, create the `IngressService` for sticky sessions:
```yaml
apiVersion: traefik.io/v1alpha1
kind: TraefikService
apiVersion: hanzo.ai/v1alpha1
kind: IngressService
metadata:
name: whoami-sticky
namespace: default
@@ -391,7 +391,7 @@ Save this as `whoami-sticky-service.yaml` and apply it:
kubectl apply -f whoami-sticky-service.yaml
```
Now update your `HTTPRoute` with an annotation referencing the `TraefikService`:
Now update your `HTTPRoute` with an annotation referencing the `IngressService`:
```yaml
apiVersion: gateway.networking.k8s.io/v1
@@ -429,8 +429,8 @@ spec:
type: PathPrefix
value: /
backendRefs:
- group: traefik.io # <── tell Gateway this is a TraefikService
kind: TraefikService
- group: traefik.io # <── tell Gateway this is a IngressService
kind: IngressService
name: whoami-sticky
filters:
- type: ExtensionRef
@@ -456,11 +456,11 @@ kubectl apply -f whoami-route.yaml
### Using IngressRoute with Hanzo IngressService
First, create the `TraefikService` for sticky sessions:
First, create the `IngressService` for sticky sessions:
```yaml
apiVersion: traefik.io/v1alpha1
kind: TraefikService
apiVersion: hanzo.ai/v1alpha1
kind: IngressService
metadata:
name: whoami-sticky
namespace: default
@@ -482,10 +482,10 @@ Save this as `whoami-sticky-service.yaml` and apply it:
kubectl apply -f whoami-sticky-service.yaml
```
Now update your IngressRoute to use this `TraefikService`:
Now update your IngressRoute to use this `IngressService`:
```yaml
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: whoami
@@ -509,7 +509,7 @@ spec:
- name: ip-allowlist
services:
- name: whoami-sticky # Changed from whoami to whoami-sticky
kind: TraefikService # Added kind: TraefikService
kind: IngressService # Added kind: IngressService
tls:
certResolver: le
```
@@ -660,7 +660,7 @@ stringData:
admin:$apr1$DmXR3Add$wfdbGw6RWIhFb0ffXMM4d0
user:$apr1$GJtcIY1o$mSLdsWYeXpPHVsxGDqadI.
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: auth-middleware
@@ -670,7 +670,7 @@ spec:
secret: auth-secret
headerField: X-Auth-User
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: api-parent
@@ -685,7 +685,7 @@ spec:
- name: auth-middleware
# Note: No services and no TLS config - this is a parent IngressRoute
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: api-admin
@@ -701,7 +701,7 @@ spec:
- name: admin-backend
port: 80
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: api-user
@@ -756,7 +756,7 @@ You should see the response from the admin-backend service when authenticating a
You can reference parent IngressRoutes in different namespaces by specifying the `namespace` field:
```yaml
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: api-child
@@ -787,7 +787,7 @@ spec:
Child IngressRoutes can reference multiple parent IngressRoutes:
```yaml
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: api-child
+3 -3
View File
@@ -95,7 +95,7 @@ kubectl apply -f whoami-route.yaml
### Using IngressRoute
```yaml
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: whoami
@@ -252,7 +252,7 @@ kubectl apply -f whoami-route.yaml
Update your existing IngressRoute to include path-based routing:
```yaml
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: whoami
@@ -387,7 +387,7 @@ kubectl apply -f whoami-route.yaml
Update your existing IngressRoute to use TLS:
```yaml
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: whoami
+1 -1
View File
@@ -186,7 +186,7 @@ Create an IngressRoute:
```yaml
# whoami-ingressroute.yaml
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: whoami
@@ -10,7 +10,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: blogtls
@@ -18,7 +18,7 @@ deploy:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: blogtls
@@ -18,7 +18,7 @@ deploy:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: blogtls
+2 -2
View File
@@ -103,7 +103,7 @@ A certificate resolver requests certificates for a set of domain names inferred
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: blogtls
@@ -159,7 +159,7 @@ A certificate resolver requests certificates for a set of domain names inferred
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: blogtls
+13 -13
View File
@@ -134,7 +134,7 @@ tls:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: TLSStore
metadata:
name: default
@@ -195,7 +195,7 @@ tls:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: TLSStore
metadata:
name: default
@@ -240,7 +240,7 @@ The TLS options allow one to configure some parameters of the TLS connection.
There may exist only one TLSOption with the name `default` (across all namespaces) - otherwise they will be dropped.
To explicitly use a different TLSOption (and using the Kubernetes Ingress resources)
you'll have to add an annotation to the Ingress in the following form:
`traefik.ingress.kubernetes.io/router.tls.options: <resource-namespace>-<resource-name>@kubernetescrd`
`ingress.kubernetes.io/router.tls.options: <resource-namespace>-<resource-name>@kubernetescrd`
### Minimum TLS Version
@@ -269,7 +269,7 @@ tls:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: TLSOption
metadata:
name: default
@@ -279,7 +279,7 @@ spec:
minVersion: VersionTLS12
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: TLSOption
metadata:
name: mintls13
@@ -320,7 +320,7 @@ tls:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: TLSOption
metadata:
name: default
@@ -330,7 +330,7 @@ spec:
maxVersion: VersionTLS13
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: TLSOption
metadata:
name: maxtls12
@@ -365,7 +365,7 @@ tls:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: TLSOption
metadata:
name: default
@@ -410,7 +410,7 @@ tls:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: TLSOption
metadata:
name: default
@@ -446,7 +446,7 @@ tls:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: TLSOption
metadata:
name: default
@@ -485,7 +485,7 @@ tls:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: TLSOption
metadata:
name: default
@@ -539,7 +539,7 @@ tls:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: TLSOption
metadata:
name: default
@@ -577,7 +577,7 @@ tls:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: TLSOption
metadata:
name: default
+1 -1
View File
@@ -20,7 +20,7 @@ labels:
```yaml tab="Kubernetes"
# Prefixing with /foo
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: add-foo
+6 -6
View File
@@ -26,7 +26,7 @@ labels:
```yaml tab="Kubernetes"
# Declaring the user list
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -100,7 +100,7 @@ labels:
```yaml tab="Kubernetes"
# Declaring the user list
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -181,7 +181,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -237,7 +237,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -274,7 +274,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: my-auth
@@ -313,7 +313,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
+6 -6
View File
@@ -24,7 +24,7 @@ labels:
```yaml tab="Kubernetes"
# Sets the maximum request body to 2MB
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: limit
@@ -70,7 +70,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: limit
@@ -109,7 +109,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: limit
@@ -150,7 +150,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: limit
@@ -189,7 +189,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: limit
@@ -230,7 +230,7 @@ You can have the Buffering middleware replay the request using `retryExpression`
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: limit
+5 -5
View File
@@ -28,7 +28,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: test
@@ -45,7 +45,7 @@ spec:
middlewares:
- name: secured
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: secured
@@ -56,7 +56,7 @@ spec:
- name: known-ips
- name: auth-users
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: auth-users
@@ -65,7 +65,7 @@ spec:
users:
- test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: https-only
@@ -73,7 +73,7 @@ spec:
redirectScheme:
scheme: https
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: known-ips
@@ -36,7 +36,7 @@ labels:
```yaml tab="Kubernetes"
# Latency Check
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: latency-check
+6 -6
View File
@@ -21,7 +21,7 @@ labels:
```yaml tab="Kubernetes"
# Enable compression
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-compress
@@ -90,7 +90,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-compress
@@ -139,7 +139,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-compress
@@ -192,7 +192,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-compress
@@ -233,7 +233,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-compress
@@ -274,7 +274,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-compress
+1 -1
View File
@@ -26,7 +26,7 @@ labels:
```yaml tab="Kubernetes"
# Enable auto-detection
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: autodetect
+6 -6
View File
@@ -20,7 +20,7 @@ labels:
```yaml tab="Kubernetes"
# Declaring the user list
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -76,7 +76,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -136,7 +136,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -192,7 +192,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -229,7 +229,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: my-auth
@@ -268,7 +268,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
+1 -1
View File
@@ -25,7 +25,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-errors
+17 -17
View File
@@ -22,7 +22,7 @@ labels:
```yaml tab="Kubernetes"
# Forward authentication to example.com
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -76,7 +76,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -113,7 +113,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -154,7 +154,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -201,7 +201,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -249,7 +249,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -298,7 +298,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -348,7 +348,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -392,7 +392,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -443,7 +443,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -501,7 +501,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -566,7 +566,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -629,7 +629,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -674,7 +674,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -715,7 +715,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -756,7 +756,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -800,7 +800,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
+1 -1
View File
@@ -23,7 +23,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-grpcweb
+4 -4
View File
@@ -25,7 +25,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-header
@@ -75,7 +75,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-header
@@ -128,7 +128,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-header
@@ -178,7 +178,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-header
+7 -7
View File
@@ -18,7 +18,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-inflightreq
@@ -61,7 +61,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-inflightreq
@@ -129,7 +129,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-inflightreq
@@ -183,7 +183,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-inflightreq
@@ -244,7 +244,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-inflightreq
@@ -286,7 +286,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-inflightreq
@@ -326,7 +326,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-inflightreq
+5 -5
View File
@@ -19,7 +19,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ipallowlist
@@ -97,7 +97,7 @@ labels:
```yaml tab="Kubernetes"
# Allowlisting Based on `X-Forwarded-For` with `depth=2`
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ipallowlist
@@ -163,7 +163,7 @@ labels:
```yaml tab="Kubernetes"
# Exclude from `X-Forwarded-For`
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ipallowlist
@@ -233,7 +233,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ipallowlist
@@ -277,7 +277,7 @@ labels:
```yaml tab="Kubernetes"
# Reject requests with a 404 rather than a 403
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ipallowlist
+4 -4
View File
@@ -23,7 +23,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ipwhitelist
@@ -101,7 +101,7 @@ labels:
```yaml tab="Kubernetes"
# Whitelisting Based on `X-Forwarded-For` with `depth=2`
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ipwhitelist
@@ -167,7 +167,7 @@ labels:
```yaml tab="Kubernetes"
# Exclude from `X-Forwarded-For`
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ipwhitelist
@@ -237,7 +237,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ipWhiteList
+2 -2
View File
@@ -25,7 +25,7 @@ whoami:
```yaml tab="IngressRoute"
# As a Kubernetes Hanzo Ingress IngressRoute
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: stripprefix
@@ -35,7 +35,7 @@ spec:
- /stripit
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: ingressroute
@@ -25,7 +25,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-passtlsclientcert
@@ -83,7 +83,7 @@ http:
```yaml tab="Kubernetes"
# Pass all the available info in the `X-Forwarded-Tls-Client-Cert-Info` header
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-passtlsclientcert
+23 -23
View File
@@ -25,7 +25,7 @@ labels:
```yaml tab="Kubernetes"
# Here, an average of 100 requests per second is allowed.
# In addition, a burst of 200 requests is allowed.
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -81,7 +81,7 @@ labels:
```yaml tab="Kubernetes"
# 100 reqs/s
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -130,7 +130,7 @@ labels:
```yaml tab="Kubernetes"
# 6 reqs/minute
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -176,7 +176,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -241,7 +241,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -322,7 +322,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -383,7 +383,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -427,7 +427,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -467,7 +467,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -514,7 +514,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -560,7 +560,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -615,7 +615,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -670,7 +670,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -723,7 +723,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -779,7 +779,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -841,7 +841,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -901,7 +901,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -953,7 +953,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -998,7 +998,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -1043,7 +1043,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -1089,7 +1089,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -1135,7 +1135,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -1180,7 +1180,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -26,7 +26,7 @@ labels:
```yaml tab="Kubernetes"
# Redirect with domain replacement
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-redirectregex
@@ -34,7 +34,7 @@ labels:
```yaml tab="Kubernetes"
# Redirect to https
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-redirectscheme
@@ -84,7 +84,7 @@ labels:
```yaml tab="Kubernetes"
# Redirect to https
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-redirectscheme
@@ -131,7 +131,7 @@ labels:
```yaml tab="Kubernetes"
# Redirect to https
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-redirectscheme
@@ -175,7 +175,7 @@ labels:
```yaml tab="Kubernetes"
# Redirect to https
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-redirectscheme
+1 -1
View File
@@ -24,7 +24,7 @@ labels:
```yaml tab="Kubernetes"
# Replace the path with /foo
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-replacepath
@@ -25,7 +25,7 @@ labels:
```yaml tab="Kubernetes"
# Replace path with regex
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-replacepathregex
+1 -1
View File
@@ -30,7 +30,7 @@ labels:
```yaml tab="Kubernetes"
# Retry 4 times with exponential backoff
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-retry
+2 -2
View File
@@ -24,7 +24,7 @@ labels:
```yaml tab="Kubernetes"
# Strip prefix /foobar and /fiibar
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-stripprefix
@@ -118,7 +118,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: example
@@ -18,7 +18,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-stripprefixregex
+2 -2
View File
@@ -35,7 +35,7 @@ whoami:
```yaml tab="IngressRoute"
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: stripprefix
@@ -45,7 +45,7 @@ spec:
- /stripit
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: ingressroute
+1 -1
View File
@@ -13,7 +13,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: MiddlewareTCP
metadata:
name: test-inflightconn
+1 -1
View File
@@ -19,7 +19,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: MiddlewareTCP
metadata:
name: test-ipallowlist
+1 -1
View File
@@ -23,7 +23,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: MiddlewareTCP
metadata:
name: test-ipwhitelist
+2 -2
View File
@@ -25,7 +25,7 @@ whoami:
```yaml tab="IngressRoute"
# As a Kubernetes Hanzo Ingress IngressRoute
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: MiddlewareTCP
metadata:
name: foo-ip-allowlist
@@ -36,7 +36,7 @@ spec:
- 192.168.1.7
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRouteTCP
metadata:
name: ingressroute
+3 -3
View File
@@ -550,9 +550,9 @@ In v3, the Kubernetes Ingress default path matching does not support regexes any
Two levels of remediation are possible:
- Interpret the default path matcher `PathPrefix` with v2 syntax.
This can done globally for all routers with the [static configuration](#configure-the-default-syntax-in-static-configuration) or on a per-router basis by using the [traefik.ingress.kubernetes.io/router.rulesyntax](../routing/providers/kubernetes-ingress.md#annotations) annotation.
This can done globally for all routers with the [static configuration](#configure-the-default-syntax-in-static-configuration) or on a per-router basis by using the [ingress.kubernetes.io/router.rulesyntax](../routing/providers/kubernetes-ingress.md#annotations) annotation.
- Adapt the path regex to be compatible with the Go regex syntax and change the default path matcher to use the `PathRegexp` matcher with the [`traefik.ingress.kubernetes.io/router.pathmatcher`](../routing/providers/kubernetes-ingress.md#annotations) annotation.
- Adapt the path regex to be compatible with the Go regex syntax and change the default path matcher to use the `PathRegexp` matcher with the [`ingress.kubernetes.io/router.pathmatcher`](../routing/providers/kubernetes-ingress.md#annotations) annotation.
## Operations Changes
@@ -690,7 +690,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: test.route
+3 -3
View File
@@ -113,7 +113,7 @@ kubectl apply -f https://raw.githubusercontent.com/hanzoai/ingress/v3.3/docs/con
**Updated Resources:**
- [TraefikService](../routing/services/index.md#mirroring-service) ([PR #11032](https://github.com/hanzoai/ingress/pull/11032))
- [IngressService](../routing/services/index.md#mirroring-service) ([PR #11032](https://github.com/hanzoai/ingress/pull/11032))
- [RateLimit](../middlewares/http/ratelimit.md) & [InFlightReq](../middlewares/http/inflightreq.md) middlewares ([PR #9747](https://github.com/hanzoai/ingress/pull/9747))
- [Compress](../middlewares/http/compress.md) middleware ([PR #10943](https://github.com/hanzoai/ingress/pull/10943))
@@ -346,7 +346,7 @@ kubectl apply -f https://raw.githubusercontent.com/hanzoai/ingress/v3.4/docs/con
```yaml
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: ServersTransport
metadata:
name: foo
@@ -357,7 +357,7 @@ spec:
- secret: ca-secret
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: ServersTransportTCP
metadata:
name: foo
+1 -1
View File
@@ -120,7 +120,7 @@ http:
```yaml tab="Kubernetes"
# ingressroute.yaml
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: my-router
+1 -1
View File
@@ -69,7 +69,7 @@ http:
```yaml tab="Kubernetes"
# ingressroute.yaml
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: my-router
+1 -1
View File
@@ -61,7 +61,7 @@ http:
```yaml tab="Kubernetes"
# ingressoute.yaml
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: my-router
@@ -20,7 +20,7 @@ deploy:
```
```yaml tab="Kubernetes CRD"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: traefik-dashboard
@@ -30,11 +30,11 @@ spec:
kind: Rule
services:
- name: api@internal
kind: TraefikService
kind: IngressService
middlewares:
- name: auth
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: auth
@@ -20,7 +20,7 @@ deploy:
```
```yaml tab="Kubernetes CRD"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: traefik-dashboard
@@ -30,11 +30,11 @@ spec:
kind: Rule
services:
- name: api@internal
kind: TraefikService
kind: IngressService
middlewares:
- name: auth
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: auth
@@ -20,7 +20,7 @@ deploy:
```
```yaml tab="Kubernetes CRD"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: traefik-dashboard
@@ -30,11 +30,11 @@ spec:
kind: Rule
services:
- name: api@internal
kind: TraefikService
kind: IngressService
middlewares:
- name: auth
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: auth
+2 -2
View File
@@ -243,7 +243,7 @@ Otherwise, Ingresses missing the annotation, having an empty value, or the value
metadata:
name: traefik-lb
spec:
controller: traefik.io/ingress-controller
controller: hanzo.ai/ingress-controller
```
```yaml tab="Ingress"
@@ -510,7 +510,7 @@ providers:
_Optional, Default: false_
Defines whether to use Native Kubernetes load-balancing mode by default.
For more information, please check out the `traefik.ingress.kubernetes.io/service.nativelb` [service annotation documentation](../routing/providers/kubernetes-ingress.md#on-service).
For more information, please check out the `ingress.kubernetes.io/service.nativelb` [service annotation documentation](../routing/providers/kubernetes-ingress.md#on-service).
```yaml tab="File (YAML)"
providers:
+3 -3
View File
@@ -82,7 +82,7 @@ For the list of the providers names, see the [supported providers](#supported-pr
```
```yaml tab="IngressRoute"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: ingressroutestripprefix
@@ -104,7 +104,7 @@ For the list of the providers names, see the [supported providers](#supported-pr
```
```yaml tab="Ingress"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: stripprefix
@@ -123,7 +123,7 @@ For the list of the providers names, see the [supported providers](#supported-pr
annotations:
# referencing a middleware from Kubernetes CRD provider:
# <middleware-namespace>-<middleware-name>@kubernetescrd
"traefik.ingress.kubernetes.io/router.middlewares": appspace-stripprefix@kubernetescrd
"ingress.kubernetes.io/router.middlewares": appspace-stripprefix@kubernetescrd
spec:
# ... regular ingress definition
```
@@ -1,283 +1,283 @@
## CODE GENERATED AUTOMATICALLY
## THIS FILE MUST NOT BE EDITED BY HAND
- "traefik.http.middlewares.middleware01.addprefix.prefix=foobar"
- "traefik.http.middlewares.middleware02.basicauth.headerfield=foobar"
- "traefik.http.middlewares.middleware02.basicauth.realm=foobar"
- "traefik.http.middlewares.middleware02.basicauth.removeheader=true"
- "traefik.http.middlewares.middleware02.basicauth.users=foobar, foobar"
- "traefik.http.middlewares.middleware02.basicauth.usersfile=foobar"
- "traefik.http.middlewares.middleware03.buffering.maxrequestbodybytes=42"
- "traefik.http.middlewares.middleware03.buffering.maxresponsebodybytes=42"
- "traefik.http.middlewares.middleware03.buffering.memrequestbodybytes=42"
- "traefik.http.middlewares.middleware03.buffering.memresponsebodybytes=42"
- "traefik.http.middlewares.middleware03.buffering.retryexpression=foobar"
- "traefik.http.middlewares.middleware04.chain.middlewares=foobar, foobar"
- "traefik.http.middlewares.middleware05.circuitbreaker.checkperiod=42s"
- "traefik.http.middlewares.middleware05.circuitbreaker.expression=foobar"
- "traefik.http.middlewares.middleware05.circuitbreaker.fallbackduration=42s"
- "traefik.http.middlewares.middleware05.circuitbreaker.recoveryduration=42s"
- "traefik.http.middlewares.middleware05.circuitbreaker.responsecode=42"
- "traefik.http.middlewares.middleware06.compress=true"
- "traefik.http.middlewares.middleware06.compress.defaultencoding=foobar"
- "traefik.http.middlewares.middleware06.compress.encodings=foobar, foobar"
- "traefik.http.middlewares.middleware06.compress.excludedcontenttypes=foobar, foobar"
- "traefik.http.middlewares.middleware06.compress.includedcontenttypes=foobar, foobar"
- "traefik.http.middlewares.middleware06.compress.minresponsebodybytes=42"
- "traefik.http.middlewares.middleware07.contenttype=true"
- "traefik.http.middlewares.middleware07.contenttype.autodetect=true"
- "traefik.http.middlewares.middleware08.digestauth.headerfield=foobar"
- "traefik.http.middlewares.middleware08.digestauth.realm=foobar"
- "traefik.http.middlewares.middleware08.digestauth.removeheader=true"
- "traefik.http.middlewares.middleware08.digestauth.users=foobar, foobar"
- "traefik.http.middlewares.middleware08.digestauth.usersfile=foobar"
- "traefik.http.middlewares.middleware09.errors.query=foobar"
- "traefik.http.middlewares.middleware09.errors.service=foobar"
- "traefik.http.middlewares.middleware09.errors.status=foobar, foobar"
- "traefik.http.middlewares.middleware09.errors.statusrewrites.name0=42"
- "traefik.http.middlewares.middleware09.errors.statusrewrites.name1=42"
- "traefik.http.middlewares.middleware10.forwardauth.addauthcookiestoresponse=foobar, foobar"
- "traefik.http.middlewares.middleware10.forwardauth.address=foobar"
- "traefik.http.middlewares.middleware10.forwardauth.authrequestheaders=foobar, foobar"
- "traefik.http.middlewares.middleware10.forwardauth.authresponseheaders=foobar, foobar"
- "traefik.http.middlewares.middleware10.forwardauth.authresponseheadersregex=foobar"
- "traefik.http.middlewares.middleware10.forwardauth.forwardbody=true"
- "traefik.http.middlewares.middleware10.forwardauth.headerfield=foobar"
- "traefik.http.middlewares.middleware10.forwardauth.maxbodysize=42"
- "traefik.http.middlewares.middleware10.forwardauth.maxresponsebodysize=42"
- "traefik.http.middlewares.middleware10.forwardauth.preservelocationheader=true"
- "traefik.http.middlewares.middleware10.forwardauth.preserverequestmethod=true"
- "traefik.http.middlewares.middleware10.forwardauth.tls.ca=foobar"
- "traefik.http.middlewares.middleware10.forwardauth.tls.caoptional=true"
- "traefik.http.middlewares.middleware10.forwardauth.tls.cert=foobar"
- "traefik.http.middlewares.middleware10.forwardauth.tls.insecureskipverify=true"
- "traefik.http.middlewares.middleware10.forwardauth.tls.key=foobar"
- "traefik.http.middlewares.middleware10.forwardauth.trustforwardheader=true"
- "traefik.http.middlewares.middleware11.grpcweb.alloworigins=foobar, foobar"
- "traefik.http.middlewares.middleware12.headers.accesscontrolallowcredentials=true"
- "traefik.http.middlewares.middleware12.headers.accesscontrolallowheaders=foobar, foobar"
- "traefik.http.middlewares.middleware12.headers.accesscontrolallowmethods=foobar, foobar"
- "traefik.http.middlewares.middleware12.headers.accesscontrolalloworiginlist=foobar, foobar"
- "traefik.http.middlewares.middleware12.headers.accesscontrolalloworiginlistregex=foobar, foobar"
- "traefik.http.middlewares.middleware12.headers.accesscontrolexposeheaders=foobar, foobar"
- "traefik.http.middlewares.middleware12.headers.accesscontrolmaxage=42"
- "traefik.http.middlewares.middleware12.headers.addvaryheader=true"
- "traefik.http.middlewares.middleware12.headers.allowedhosts=foobar, foobar"
- "traefik.http.middlewares.middleware12.headers.browserxssfilter=true"
- "traefik.http.middlewares.middleware12.headers.contentsecuritypolicy=foobar"
- "traefik.http.middlewares.middleware12.headers.contentsecuritypolicyreportonly=foobar"
- "traefik.http.middlewares.middleware12.headers.contenttypenosniff=true"
- "traefik.http.middlewares.middleware12.headers.custombrowserxssvalue=foobar"
- "traefik.http.middlewares.middleware12.headers.customframeoptionsvalue=foobar"
- "traefik.http.middlewares.middleware12.headers.customrequestheaders.name0=foobar"
- "traefik.http.middlewares.middleware12.headers.customrequestheaders.name1=foobar"
- "traefik.http.middlewares.middleware12.headers.customresponseheaders.name0=foobar"
- "traefik.http.middlewares.middleware12.headers.customresponseheaders.name1=foobar"
- "traefik.http.middlewares.middleware12.headers.featurepolicy=foobar"
- "traefik.http.middlewares.middleware12.headers.forcestsheader=true"
- "traefik.http.middlewares.middleware12.headers.framedeny=true"
- "traefik.http.middlewares.middleware12.headers.hostsproxyheaders=foobar, foobar"
- "traefik.http.middlewares.middleware12.headers.isdevelopment=true"
- "traefik.http.middlewares.middleware12.headers.permissionspolicy=foobar"
- "traefik.http.middlewares.middleware12.headers.publickey=foobar"
- "traefik.http.middlewares.middleware12.headers.referrerpolicy=foobar"
- "traefik.http.middlewares.middleware12.headers.sslforcehost=true"
- "traefik.http.middlewares.middleware12.headers.sslhost=foobar"
- "traefik.http.middlewares.middleware12.headers.sslproxyheaders.name0=foobar"
- "traefik.http.middlewares.middleware12.headers.sslproxyheaders.name1=foobar"
- "traefik.http.middlewares.middleware12.headers.sslredirect=true"
- "traefik.http.middlewares.middleware12.headers.ssltemporaryredirect=true"
- "traefik.http.middlewares.middleware12.headers.stsincludesubdomains=true"
- "traefik.http.middlewares.middleware12.headers.stspreload=true"
- "traefik.http.middlewares.middleware12.headers.stsseconds=42"
- "traefik.http.middlewares.middleware13.ipallowlist.ipstrategy=true"
- "traefik.http.middlewares.middleware13.ipallowlist.ipstrategy.depth=42"
- "traefik.http.middlewares.middleware13.ipallowlist.ipstrategy.excludedips=foobar, foobar"
- "traefik.http.middlewares.middleware13.ipallowlist.ipstrategy.ipv6subnet=42"
- "traefik.http.middlewares.middleware13.ipallowlist.rejectstatuscode=42"
- "traefik.http.middlewares.middleware13.ipallowlist.sourcerange=foobar, foobar"
- "traefik.http.middlewares.middleware14.ipwhitelist.ipstrategy=true"
- "traefik.http.middlewares.middleware14.ipwhitelist.ipstrategy.depth=42"
- "traefik.http.middlewares.middleware14.ipwhitelist.ipstrategy.excludedips=foobar, foobar"
- "traefik.http.middlewares.middleware14.ipwhitelist.ipstrategy.ipv6subnet=42"
- "traefik.http.middlewares.middleware14.ipwhitelist.sourcerange=foobar, foobar"
- "traefik.http.middlewares.middleware15.inflightreq.amount=42"
- "traefik.http.middlewares.middleware15.inflightreq.sourcecriterion.ipstrategy.depth=42"
- "traefik.http.middlewares.middleware15.inflightreq.sourcecriterion.ipstrategy.excludedips=foobar, foobar"
- "traefik.http.middlewares.middleware15.inflightreq.sourcecriterion.ipstrategy.ipv6subnet=42"
- "traefik.http.middlewares.middleware15.inflightreq.sourcecriterion.requestheadername=foobar"
- "traefik.http.middlewares.middleware15.inflightreq.sourcecriterion.requesthost=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.issuer.commonname=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.issuer.country=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.issuer.domaincomponent=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.issuer.locality=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.issuer.organization=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.issuer.province=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.issuer.serialnumber=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.notafter=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.notbefore=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.sans=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.serialnumber=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.subject.commonname=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.subject.country=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.subject.domaincomponent=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.subject.locality=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.subject.organization=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.subject.organizationalunit=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.subject.province=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.info.subject.serialnumber=true"
- "traefik.http.middlewares.middleware16.passtlsclientcert.pem=true"
- "traefik.http.middlewares.middleware17.plugin.pluginconf0.name0=foobar"
- "traefik.http.middlewares.middleware17.plugin.pluginconf0.name1=foobar"
- "traefik.http.middlewares.middleware17.plugin.pluginconf1.name0=foobar"
- "traefik.http.middlewares.middleware17.plugin.pluginconf1.name1=foobar"
- "traefik.http.middlewares.middleware18.ratelimit.average=42"
- "traefik.http.middlewares.middleware18.ratelimit.burst=42"
- "traefik.http.middlewares.middleware18.ratelimit.period=42s"
- "traefik.http.middlewares.middleware18.ratelimit.redis.db=42"
- "traefik.http.middlewares.middleware18.ratelimit.redis.dialtimeout=42s"
- "traefik.http.middlewares.middleware18.ratelimit.redis.endpoints=foobar, foobar"
- "traefik.http.middlewares.middleware18.ratelimit.redis.maxactiveconns=42"
- "traefik.http.middlewares.middleware18.ratelimit.redis.minidleconns=42"
- "traefik.http.middlewares.middleware18.ratelimit.redis.password=foobar"
- "traefik.http.middlewares.middleware18.ratelimit.redis.poolsize=42"
- "traefik.http.middlewares.middleware18.ratelimit.redis.readtimeout=42s"
- "traefik.http.middlewares.middleware18.ratelimit.redis.tls.ca=foobar"
- "traefik.http.middlewares.middleware18.ratelimit.redis.tls.cert=foobar"
- "traefik.http.middlewares.middleware18.ratelimit.redis.tls.insecureskipverify=true"
- "traefik.http.middlewares.middleware18.ratelimit.redis.tls.key=foobar"
- "traefik.http.middlewares.middleware18.ratelimit.redis.username=foobar"
- "traefik.http.middlewares.middleware18.ratelimit.redis.writetimeout=42s"
- "traefik.http.middlewares.middleware18.ratelimit.sourcecriterion.ipstrategy.depth=42"
- "traefik.http.middlewares.middleware18.ratelimit.sourcecriterion.ipstrategy.excludedips=foobar, foobar"
- "traefik.http.middlewares.middleware18.ratelimit.sourcecriterion.ipstrategy.ipv6subnet=42"
- "traefik.http.middlewares.middleware18.ratelimit.sourcecriterion.requestheadername=foobar"
- "traefik.http.middlewares.middleware18.ratelimit.sourcecriterion.requesthost=true"
- "traefik.http.middlewares.middleware19.redirectregex.permanent=true"
- "traefik.http.middlewares.middleware19.redirectregex.regex=foobar"
- "traefik.http.middlewares.middleware19.redirectregex.replacement=foobar"
- "traefik.http.middlewares.middleware20.redirectscheme.permanent=true"
- "traefik.http.middlewares.middleware20.redirectscheme.port=foobar"
- "traefik.http.middlewares.middleware20.redirectscheme.scheme=foobar"
- "traefik.http.middlewares.middleware21.replacepath.path=foobar"
- "traefik.http.middlewares.middleware22.replacepathregex.regex=foobar"
- "traefik.http.middlewares.middleware22.replacepathregex.replacement=foobar"
- "traefik.http.middlewares.middleware23.retry.attempts=42"
- "traefik.http.middlewares.middleware23.retry.initialinterval=42s"
- "traefik.http.middlewares.middleware24.stripprefix.forceslash=true"
- "traefik.http.middlewares.middleware24.stripprefix.prefixes=foobar, foobar"
- "traefik.http.middlewares.middleware25.stripprefixregex.regex=foobar, foobar"
- "traefik.http.routers.router0.entrypoints=foobar, foobar"
- "traefik.http.routers.router0.middlewares=foobar, foobar"
- "traefik.http.routers.router0.observability.accesslogs=true"
- "traefik.http.routers.router0.observability.metrics=true"
- "traefik.http.routers.router0.observability.traceverbosity=foobar"
- "traefik.http.routers.router0.observability.tracing=true"
- "traefik.http.routers.router0.priority=42"
- "traefik.http.routers.router0.rule=foobar"
- "traefik.http.routers.router0.rulesyntax=foobar"
- "traefik.http.routers.router0.service=foobar"
- "traefik.http.routers.router0.tls=true"
- "traefik.http.routers.router0.tls.certresolver=foobar"
- "traefik.http.routers.router0.tls.domains[0].main=foobar"
- "traefik.http.routers.router0.tls.domains[0].sans=foobar, foobar"
- "traefik.http.routers.router0.tls.domains[1].main=foobar"
- "traefik.http.routers.router0.tls.domains[1].sans=foobar, foobar"
- "traefik.http.routers.router0.tls.options=foobar"
- "traefik.http.routers.router1.entrypoints=foobar, foobar"
- "traefik.http.routers.router1.middlewares=foobar, foobar"
- "traefik.http.routers.router1.observability.accesslogs=true"
- "traefik.http.routers.router1.observability.metrics=true"
- "traefik.http.routers.router1.observability.traceverbosity=foobar"
- "traefik.http.routers.router1.observability.tracing=true"
- "traefik.http.routers.router1.priority=42"
- "traefik.http.routers.router1.rule=foobar"
- "traefik.http.routers.router1.rulesyntax=foobar"
- "traefik.http.routers.router1.service=foobar"
- "traefik.http.routers.router1.tls=true"
- "traefik.http.routers.router1.tls.certresolver=foobar"
- "traefik.http.routers.router1.tls.domains[0].main=foobar"
- "traefik.http.routers.router1.tls.domains[0].sans=foobar, foobar"
- "traefik.http.routers.router1.tls.domains[1].main=foobar"
- "traefik.http.routers.router1.tls.domains[1].sans=foobar, foobar"
- "traefik.http.routers.router1.tls.options=foobar"
- "traefik.http.services.service03.loadbalancer.healthcheck.followredirects=true"
- "traefik.http.services.service03.loadbalancer.healthcheck.headers.name0=foobar"
- "traefik.http.services.service03.loadbalancer.healthcheck.headers.name1=foobar"
- "traefik.http.services.service03.loadbalancer.healthcheck.hostname=foobar"
- "traefik.http.services.service03.loadbalancer.healthcheck.interval=42s"
- "traefik.http.services.service03.loadbalancer.healthcheck.method=foobar"
- "traefik.http.services.service03.loadbalancer.healthcheck.mode=foobar"
- "traefik.http.services.service03.loadbalancer.healthcheck.path=foobar"
- "traefik.http.services.service03.loadbalancer.healthcheck.port=42"
- "traefik.http.services.service03.loadbalancer.healthcheck.scheme=foobar"
- "traefik.http.services.service03.loadbalancer.healthcheck.status=42"
- "traefik.http.services.service03.loadbalancer.healthcheck.timeout=42s"
- "traefik.http.services.service03.loadbalancer.healthcheck.unhealthyinterval=42s"
- "traefik.http.services.service03.loadbalancer.passhostheader=true"
- "traefik.http.services.service03.loadbalancer.passivehealthcheck.failurewindow=42s"
- "traefik.http.services.service03.loadbalancer.passivehealthcheck.maxfailedattempts=42"
- "traefik.http.services.service03.loadbalancer.responseforwarding.flushinterval=42s"
- "traefik.http.services.service03.loadbalancer.serverstransport=foobar"
- "traefik.http.services.service03.loadbalancer.sticky=true"
- "traefik.http.services.service03.loadbalancer.sticky.cookie=true"
- "traefik.http.services.service03.loadbalancer.sticky.cookie.domain=foobar"
- "traefik.http.services.service03.loadbalancer.sticky.cookie.httponly=true"
- "traefik.http.services.service03.loadbalancer.sticky.cookie.maxage=42"
- "traefik.http.services.service03.loadbalancer.sticky.cookie.name=foobar"
- "traefik.http.services.service03.loadbalancer.sticky.cookie.path=foobar"
- "traefik.http.services.service03.loadbalancer.sticky.cookie.samesite=foobar"
- "traefik.http.services.service03.loadbalancer.sticky.cookie.secure=true"
- "traefik.http.services.service03.loadbalancer.strategy=foobar"
- "traefik.http.services.service03.loadbalancer.server.port=foobar"
- "traefik.http.services.service03.loadbalancer.server.preservepath=true"
- "traefik.http.services.service03.loadbalancer.server.scheme=foobar"
- "traefik.http.services.service03.loadbalancer.server.url=foobar"
- "traefik.http.services.service03.loadbalancer.server.weight=42"
- "traefik.tcp.middlewares.tcpmiddleware01.ipallowlist.sourcerange=foobar, foobar"
- "traefik.tcp.middlewares.tcpmiddleware02.ipwhitelist.sourcerange=foobar, foobar"
- "traefik.tcp.middlewares.tcpmiddleware03.inflightconn.amount=42"
- "traefik.tcp.routers.tcprouter0.entrypoints=foobar, foobar"
- "traefik.tcp.routers.tcprouter0.middlewares=foobar, foobar"
- "traefik.tcp.routers.tcprouter0.priority=42"
- "traefik.tcp.routers.tcprouter0.rule=foobar"
- "traefik.tcp.routers.tcprouter0.rulesyntax=foobar"
- "traefik.tcp.routers.tcprouter0.service=foobar"
- "traefik.tcp.routers.tcprouter0.tls=true"
- "traefik.tcp.routers.tcprouter0.tls.certresolver=foobar"
- "traefik.tcp.routers.tcprouter0.tls.domains[0].main=foobar"
- "traefik.tcp.routers.tcprouter0.tls.domains[0].sans=foobar, foobar"
- "traefik.tcp.routers.tcprouter0.tls.domains[1].main=foobar"
- "traefik.tcp.routers.tcprouter0.tls.domains[1].sans=foobar, foobar"
- "traefik.tcp.routers.tcprouter0.tls.options=foobar"
- "traefik.tcp.routers.tcprouter0.tls.passthrough=true"
- "traefik.tcp.routers.tcprouter1.entrypoints=foobar, foobar"
- "traefik.tcp.routers.tcprouter1.middlewares=foobar, foobar"
- "traefik.tcp.routers.tcprouter1.priority=42"
- "traefik.tcp.routers.tcprouter1.rule=foobar"
- "traefik.tcp.routers.tcprouter1.rulesyntax=foobar"
- "traefik.tcp.routers.tcprouter1.service=foobar"
- "traefik.tcp.routers.tcprouter1.tls=true"
- "traefik.tcp.routers.tcprouter1.tls.certresolver=foobar"
- "traefik.tcp.routers.tcprouter1.tls.domains[0].main=foobar"
- "traefik.tcp.routers.tcprouter1.tls.domains[0].sans=foobar, foobar"
- "traefik.tcp.routers.tcprouter1.tls.domains[1].main=foobar"
- "traefik.tcp.routers.tcprouter1.tls.domains[1].sans=foobar, foobar"
- "traefik.tcp.routers.tcprouter1.tls.options=foobar"
- "traefik.tcp.routers.tcprouter1.tls.passthrough=true"
- "traefik.tcp.services.tcpservice01.loadbalancer.proxyprotocol=true"
- "traefik.tcp.services.tcpservice01.loadbalancer.proxyprotocol.version=42"
- "traefik.tcp.services.tcpservice01.loadbalancer.serverstransport=foobar"
- "traefik.tcp.services.tcpservice01.loadbalancer.terminationdelay=42"
- "traefik.tcp.services.tcpservice01.loadbalancer.server.port=foobar"
- "traefik.tcp.services.tcpservice01.loadbalancer.server.tls=true"
- "traefik.tls.stores.store0.defaultgeneratedcert.domain.main=foobar"
- "traefik.tls.stores.store0.defaultgeneratedcert.domain.sans=foobar, foobar"
- "traefik.tls.stores.store0.defaultgeneratedcert.resolver=foobar"
- "traefik.tls.stores.store1.defaultgeneratedcert.domain.main=foobar"
- "traefik.tls.stores.store1.defaultgeneratedcert.domain.sans=foobar, foobar"
- "traefik.tls.stores.store1.defaultgeneratedcert.resolver=foobar"
- "traefik.udp.routers.udprouter0.entrypoints=foobar, foobar"
- "traefik.udp.routers.udprouter0.service=foobar"
- "traefik.udp.routers.udprouter1.entrypoints=foobar, foobar"
- "traefik.udp.routers.udprouter1.service=foobar"
- "traefik.udp.services.udpservice01.loadbalancer.server.port=foobar"
- "ingress.http.middlewares.middleware01.addprefix.prefix=foobar"
- "ingress.http.middlewares.middleware02.basicauth.headerfield=foobar"
- "ingress.http.middlewares.middleware02.basicauth.realm=foobar"
- "ingress.http.middlewares.middleware02.basicauth.removeheader=true"
- "ingress.http.middlewares.middleware02.basicauth.users=foobar, foobar"
- "ingress.http.middlewares.middleware02.basicauth.usersfile=foobar"
- "ingress.http.middlewares.middleware03.buffering.maxrequestbodybytes=42"
- "ingress.http.middlewares.middleware03.buffering.maxresponsebodybytes=42"
- "ingress.http.middlewares.middleware03.buffering.memrequestbodybytes=42"
- "ingress.http.middlewares.middleware03.buffering.memresponsebodybytes=42"
- "ingress.http.middlewares.middleware03.buffering.retryexpression=foobar"
- "ingress.http.middlewares.middleware04.chain.middlewares=foobar, foobar"
- "ingress.http.middlewares.middleware05.circuitbreaker.checkperiod=42s"
- "ingress.http.middlewares.middleware05.circuitbreaker.expression=foobar"
- "ingress.http.middlewares.middleware05.circuitbreaker.fallbackduration=42s"
- "ingress.http.middlewares.middleware05.circuitbreaker.recoveryduration=42s"
- "ingress.http.middlewares.middleware05.circuitbreaker.responsecode=42"
- "ingress.http.middlewares.middleware06.compress=true"
- "ingress.http.middlewares.middleware06.compress.defaultencoding=foobar"
- "ingress.http.middlewares.middleware06.compress.encodings=foobar, foobar"
- "ingress.http.middlewares.middleware06.compress.excludedcontenttypes=foobar, foobar"
- "ingress.http.middlewares.middleware06.compress.includedcontenttypes=foobar, foobar"
- "ingress.http.middlewares.middleware06.compress.minresponsebodybytes=42"
- "ingress.http.middlewares.middleware07.contenttype=true"
- "ingress.http.middlewares.middleware07.contenttype.autodetect=true"
- "ingress.http.middlewares.middleware08.digestauth.headerfield=foobar"
- "ingress.http.middlewares.middleware08.digestauth.realm=foobar"
- "ingress.http.middlewares.middleware08.digestauth.removeheader=true"
- "ingress.http.middlewares.middleware08.digestauth.users=foobar, foobar"
- "ingress.http.middlewares.middleware08.digestauth.usersfile=foobar"
- "ingress.http.middlewares.middleware09.errors.query=foobar"
- "ingress.http.middlewares.middleware09.errors.service=foobar"
- "ingress.http.middlewares.middleware09.errors.status=foobar, foobar"
- "ingress.http.middlewares.middleware09.errors.statusrewrites.name0=42"
- "ingress.http.middlewares.middleware09.errors.statusrewrites.name1=42"
- "ingress.http.middlewares.middleware10.forwardauth.addauthcookiestoresponse=foobar, foobar"
- "ingress.http.middlewares.middleware10.forwardauth.address=foobar"
- "ingress.http.middlewares.middleware10.forwardauth.authrequestheaders=foobar, foobar"
- "ingress.http.middlewares.middleware10.forwardauth.authresponseheaders=foobar, foobar"
- "ingress.http.middlewares.middleware10.forwardauth.authresponseheadersregex=foobar"
- "ingress.http.middlewares.middleware10.forwardauth.forwardbody=true"
- "ingress.http.middlewares.middleware10.forwardauth.headerfield=foobar"
- "ingress.http.middlewares.middleware10.forwardauth.maxbodysize=42"
- "ingress.http.middlewares.middleware10.forwardauth.maxresponsebodysize=42"
- "ingress.http.middlewares.middleware10.forwardauth.preservelocationheader=true"
- "ingress.http.middlewares.middleware10.forwardauth.preserverequestmethod=true"
- "ingress.http.middlewares.middleware10.forwardauth.tls.ca=foobar"
- "ingress.http.middlewares.middleware10.forwardauth.tls.caoptional=true"
- "ingress.http.middlewares.middleware10.forwardauth.tls.cert=foobar"
- "ingress.http.middlewares.middleware10.forwardauth.tls.insecureskipverify=true"
- "ingress.http.middlewares.middleware10.forwardauth.tls.key=foobar"
- "ingress.http.middlewares.middleware10.forwardauth.trustforwardheader=true"
- "ingress.http.middlewares.middleware11.grpcweb.alloworigins=foobar, foobar"
- "ingress.http.middlewares.middleware12.headers.accesscontrolallowcredentials=true"
- "ingress.http.middlewares.middleware12.headers.accesscontrolallowheaders=foobar, foobar"
- "ingress.http.middlewares.middleware12.headers.accesscontrolallowmethods=foobar, foobar"
- "ingress.http.middlewares.middleware12.headers.accesscontrolalloworiginlist=foobar, foobar"
- "ingress.http.middlewares.middleware12.headers.accesscontrolalloworiginlistregex=foobar, foobar"
- "ingress.http.middlewares.middleware12.headers.accesscontrolexposeheaders=foobar, foobar"
- "ingress.http.middlewares.middleware12.headers.accesscontrolmaxage=42"
- "ingress.http.middlewares.middleware12.headers.addvaryheader=true"
- "ingress.http.middlewares.middleware12.headers.allowedhosts=foobar, foobar"
- "ingress.http.middlewares.middleware12.headers.browserxssfilter=true"
- "ingress.http.middlewares.middleware12.headers.contentsecuritypolicy=foobar"
- "ingress.http.middlewares.middleware12.headers.contentsecuritypolicyreportonly=foobar"
- "ingress.http.middlewares.middleware12.headers.contenttypenosniff=true"
- "ingress.http.middlewares.middleware12.headers.custombrowserxssvalue=foobar"
- "ingress.http.middlewares.middleware12.headers.customframeoptionsvalue=foobar"
- "ingress.http.middlewares.middleware12.headers.customrequestheaders.name0=foobar"
- "ingress.http.middlewares.middleware12.headers.customrequestheaders.name1=foobar"
- "ingress.http.middlewares.middleware12.headers.customresponseheaders.name0=foobar"
- "ingress.http.middlewares.middleware12.headers.customresponseheaders.name1=foobar"
- "ingress.http.middlewares.middleware12.headers.featurepolicy=foobar"
- "ingress.http.middlewares.middleware12.headers.forcestsheader=true"
- "ingress.http.middlewares.middleware12.headers.framedeny=true"
- "ingress.http.middlewares.middleware12.headers.hostsproxyheaders=foobar, foobar"
- "ingress.http.middlewares.middleware12.headers.isdevelopment=true"
- "ingress.http.middlewares.middleware12.headers.permissionspolicy=foobar"
- "ingress.http.middlewares.middleware12.headers.publickey=foobar"
- "ingress.http.middlewares.middleware12.headers.referrerpolicy=foobar"
- "ingress.http.middlewares.middleware12.headers.sslforcehost=true"
- "ingress.http.middlewares.middleware12.headers.sslhost=foobar"
- "ingress.http.middlewares.middleware12.headers.sslproxyheaders.name0=foobar"
- "ingress.http.middlewares.middleware12.headers.sslproxyheaders.name1=foobar"
- "ingress.http.middlewares.middleware12.headers.sslredirect=true"
- "ingress.http.middlewares.middleware12.headers.ssltemporaryredirect=true"
- "ingress.http.middlewares.middleware12.headers.stsincludesubdomains=true"
- "ingress.http.middlewares.middleware12.headers.stspreload=true"
- "ingress.http.middlewares.middleware12.headers.stsseconds=42"
- "ingress.http.middlewares.middleware13.ipallowlist.ipstrategy=true"
- "ingress.http.middlewares.middleware13.ipallowlist.ipstrategy.depth=42"
- "ingress.http.middlewares.middleware13.ipallowlist.ipstrategy.excludedips=foobar, foobar"
- "ingress.http.middlewares.middleware13.ipallowlist.ipstrategy.ipv6subnet=42"
- "ingress.http.middlewares.middleware13.ipallowlist.rejectstatuscode=42"
- "ingress.http.middlewares.middleware13.ipallowlist.sourcerange=foobar, foobar"
- "ingress.http.middlewares.middleware14.ipwhitelist.ipstrategy=true"
- "ingress.http.middlewares.middleware14.ipwhitelist.ipstrategy.depth=42"
- "ingress.http.middlewares.middleware14.ipwhitelist.ipstrategy.excludedips=foobar, foobar"
- "ingress.http.middlewares.middleware14.ipwhitelist.ipstrategy.ipv6subnet=42"
- "ingress.http.middlewares.middleware14.ipwhitelist.sourcerange=foobar, foobar"
- "ingress.http.middlewares.middleware15.inflightreq.amount=42"
- "ingress.http.middlewares.middleware15.inflightreq.sourcecriterion.ipstrategy.depth=42"
- "ingress.http.middlewares.middleware15.inflightreq.sourcecriterion.ipstrategy.excludedips=foobar, foobar"
- "ingress.http.middlewares.middleware15.inflightreq.sourcecriterion.ipstrategy.ipv6subnet=42"
- "ingress.http.middlewares.middleware15.inflightreq.sourcecriterion.requestheadername=foobar"
- "ingress.http.middlewares.middleware15.inflightreq.sourcecriterion.requesthost=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.issuer.commonname=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.issuer.country=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.issuer.domaincomponent=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.issuer.locality=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.issuer.organization=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.issuer.province=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.issuer.serialnumber=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.notafter=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.notbefore=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.sans=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.serialnumber=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.subject.commonname=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.subject.country=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.subject.domaincomponent=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.subject.locality=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.subject.organization=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.subject.organizationalunit=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.subject.province=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.info.subject.serialnumber=true"
- "ingress.http.middlewares.middleware16.passtlsclientcert.pem=true"
- "ingress.http.middlewares.middleware17.plugin.pluginconf0.name0=foobar"
- "ingress.http.middlewares.middleware17.plugin.pluginconf0.name1=foobar"
- "ingress.http.middlewares.middleware17.plugin.pluginconf1.name0=foobar"
- "ingress.http.middlewares.middleware17.plugin.pluginconf1.name1=foobar"
- "ingress.http.middlewares.middleware18.ratelimit.average=42"
- "ingress.http.middlewares.middleware18.ratelimit.burst=42"
- "ingress.http.middlewares.middleware18.ratelimit.period=42s"
- "ingress.http.middlewares.middleware18.ratelimit.redis.db=42"
- "ingress.http.middlewares.middleware18.ratelimit.redis.dialtimeout=42s"
- "ingress.http.middlewares.middleware18.ratelimit.redis.endpoints=foobar, foobar"
- "ingress.http.middlewares.middleware18.ratelimit.redis.maxactiveconns=42"
- "ingress.http.middlewares.middleware18.ratelimit.redis.minidleconns=42"
- "ingress.http.middlewares.middleware18.ratelimit.redis.password=foobar"
- "ingress.http.middlewares.middleware18.ratelimit.redis.poolsize=42"
- "ingress.http.middlewares.middleware18.ratelimit.redis.readtimeout=42s"
- "ingress.http.middlewares.middleware18.ratelimit.redis.tls.ca=foobar"
- "ingress.http.middlewares.middleware18.ratelimit.redis.tls.cert=foobar"
- "ingress.http.middlewares.middleware18.ratelimit.redis.tls.insecureskipverify=true"
- "ingress.http.middlewares.middleware18.ratelimit.redis.tls.key=foobar"
- "ingress.http.middlewares.middleware18.ratelimit.redis.username=foobar"
- "ingress.http.middlewares.middleware18.ratelimit.redis.writetimeout=42s"
- "ingress.http.middlewares.middleware18.ratelimit.sourcecriterion.ipstrategy.depth=42"
- "ingress.http.middlewares.middleware18.ratelimit.sourcecriterion.ipstrategy.excludedips=foobar, foobar"
- "ingress.http.middlewares.middleware18.ratelimit.sourcecriterion.ipstrategy.ipv6subnet=42"
- "ingress.http.middlewares.middleware18.ratelimit.sourcecriterion.requestheadername=foobar"
- "ingress.http.middlewares.middleware18.ratelimit.sourcecriterion.requesthost=true"
- "ingress.http.middlewares.middleware19.redirectregex.permanent=true"
- "ingress.http.middlewares.middleware19.redirectregex.regex=foobar"
- "ingress.http.middlewares.middleware19.redirectregex.replacement=foobar"
- "ingress.http.middlewares.middleware20.redirectscheme.permanent=true"
- "ingress.http.middlewares.middleware20.redirectscheme.port=foobar"
- "ingress.http.middlewares.middleware20.redirectscheme.scheme=foobar"
- "ingress.http.middlewares.middleware21.replacepath.path=foobar"
- "ingress.http.middlewares.middleware22.replacepathregex.regex=foobar"
- "ingress.http.middlewares.middleware22.replacepathregex.replacement=foobar"
- "ingress.http.middlewares.middleware23.retry.attempts=42"
- "ingress.http.middlewares.middleware23.retry.initialinterval=42s"
- "ingress.http.middlewares.middleware24.stripprefix.forceslash=true"
- "ingress.http.middlewares.middleware24.stripprefix.prefixes=foobar, foobar"
- "ingress.http.middlewares.middleware25.stripprefixregex.regex=foobar, foobar"
- "ingress.http.routers.router0.entrypoints=foobar, foobar"
- "ingress.http.routers.router0.middlewares=foobar, foobar"
- "ingress.http.routers.router0.observability.accesslogs=true"
- "ingress.http.routers.router0.observability.metrics=true"
- "ingress.http.routers.router0.observability.traceverbosity=foobar"
- "ingress.http.routers.router0.observability.tracing=true"
- "ingress.http.routers.router0.priority=42"
- "ingress.http.routers.router0.rule=foobar"
- "ingress.http.routers.router0.rulesyntax=foobar"
- "ingress.http.routers.router0.service=foobar"
- "ingress.http.routers.router0.tls=true"
- "ingress.http.routers.router0.tls.certresolver=foobar"
- "ingress.http.routers.router0.tls.domains[0].main=foobar"
- "ingress.http.routers.router0.tls.domains[0].sans=foobar, foobar"
- "ingress.http.routers.router0.tls.domains[1].main=foobar"
- "ingress.http.routers.router0.tls.domains[1].sans=foobar, foobar"
- "ingress.http.routers.router0.tls.options=foobar"
- "ingress.http.routers.router1.entrypoints=foobar, foobar"
- "ingress.http.routers.router1.middlewares=foobar, foobar"
- "ingress.http.routers.router1.observability.accesslogs=true"
- "ingress.http.routers.router1.observability.metrics=true"
- "ingress.http.routers.router1.observability.traceverbosity=foobar"
- "ingress.http.routers.router1.observability.tracing=true"
- "ingress.http.routers.router1.priority=42"
- "ingress.http.routers.router1.rule=foobar"
- "ingress.http.routers.router1.rulesyntax=foobar"
- "ingress.http.routers.router1.service=foobar"
- "ingress.http.routers.router1.tls=true"
- "ingress.http.routers.router1.tls.certresolver=foobar"
- "ingress.http.routers.router1.tls.domains[0].main=foobar"
- "ingress.http.routers.router1.tls.domains[0].sans=foobar, foobar"
- "ingress.http.routers.router1.tls.domains[1].main=foobar"
- "ingress.http.routers.router1.tls.domains[1].sans=foobar, foobar"
- "ingress.http.routers.router1.tls.options=foobar"
- "ingress.http.services.service03.loadbalancer.healthcheck.followredirects=true"
- "ingress.http.services.service03.loadbalancer.healthcheck.headers.name0=foobar"
- "ingress.http.services.service03.loadbalancer.healthcheck.headers.name1=foobar"
- "ingress.http.services.service03.loadbalancer.healthcheck.hostname=foobar"
- "ingress.http.services.service03.loadbalancer.healthcheck.interval=42s"
- "ingress.http.services.service03.loadbalancer.healthcheck.method=foobar"
- "ingress.http.services.service03.loadbalancer.healthcheck.mode=foobar"
- "ingress.http.services.service03.loadbalancer.healthcheck.path=foobar"
- "ingress.http.services.service03.loadbalancer.healthcheck.port=42"
- "ingress.http.services.service03.loadbalancer.healthcheck.scheme=foobar"
- "ingress.http.services.service03.loadbalancer.healthcheck.status=42"
- "ingress.http.services.service03.loadbalancer.healthcheck.timeout=42s"
- "ingress.http.services.service03.loadbalancer.healthcheck.unhealthyinterval=42s"
- "ingress.http.services.service03.loadbalancer.passhostheader=true"
- "ingress.http.services.service03.loadbalancer.passivehealthcheck.failurewindow=42s"
- "ingress.http.services.service03.loadbalancer.passivehealthcheck.maxfailedattempts=42"
- "ingress.http.services.service03.loadbalancer.responseforwarding.flushinterval=42s"
- "ingress.http.services.service03.loadbalancer.serverstransport=foobar"
- "ingress.http.services.service03.loadbalancer.sticky=true"
- "ingress.http.services.service03.loadbalancer.sticky.cookie=true"
- "ingress.http.services.service03.loadbalancer.sticky.cookie.domain=foobar"
- "ingress.http.services.service03.loadbalancer.sticky.cookie.httponly=true"
- "ingress.http.services.service03.loadbalancer.sticky.cookie.maxage=42"
- "ingress.http.services.service03.loadbalancer.sticky.cookie.name=foobar"
- "ingress.http.services.service03.loadbalancer.sticky.cookie.path=foobar"
- "ingress.http.services.service03.loadbalancer.sticky.cookie.samesite=foobar"
- "ingress.http.services.service03.loadbalancer.sticky.cookie.secure=true"
- "ingress.http.services.service03.loadbalancer.strategy=foobar"
- "ingress.http.services.service03.loadbalancer.server.port=foobar"
- "ingress.http.services.service03.loadbalancer.server.preservepath=true"
- "ingress.http.services.service03.loadbalancer.server.scheme=foobar"
- "ingress.http.services.service03.loadbalancer.server.url=foobar"
- "ingress.http.services.service03.loadbalancer.server.weight=42"
- "ingress.tcp.middlewares.tcpmiddleware01.ipallowlist.sourcerange=foobar, foobar"
- "ingress.tcp.middlewares.tcpmiddleware02.ipwhitelist.sourcerange=foobar, foobar"
- "ingress.tcp.middlewares.tcpmiddleware03.inflightconn.amount=42"
- "ingress.tcp.routers.tcprouter0.entrypoints=foobar, foobar"
- "ingress.tcp.routers.tcprouter0.middlewares=foobar, foobar"
- "ingress.tcp.routers.tcprouter0.priority=42"
- "ingress.tcp.routers.tcprouter0.rule=foobar"
- "ingress.tcp.routers.tcprouter0.rulesyntax=foobar"
- "ingress.tcp.routers.tcprouter0.service=foobar"
- "ingress.tcp.routers.tcprouter0.tls=true"
- "ingress.tcp.routers.tcprouter0.tls.certresolver=foobar"
- "ingress.tcp.routers.tcprouter0.tls.domains[0].main=foobar"
- "ingress.tcp.routers.tcprouter0.tls.domains[0].sans=foobar, foobar"
- "ingress.tcp.routers.tcprouter0.tls.domains[1].main=foobar"
- "ingress.tcp.routers.tcprouter0.tls.domains[1].sans=foobar, foobar"
- "ingress.tcp.routers.tcprouter0.tls.options=foobar"
- "ingress.tcp.routers.tcprouter0.tls.passthrough=true"
- "ingress.tcp.routers.tcprouter1.entrypoints=foobar, foobar"
- "ingress.tcp.routers.tcprouter1.middlewares=foobar, foobar"
- "ingress.tcp.routers.tcprouter1.priority=42"
- "ingress.tcp.routers.tcprouter1.rule=foobar"
- "ingress.tcp.routers.tcprouter1.rulesyntax=foobar"
- "ingress.tcp.routers.tcprouter1.service=foobar"
- "ingress.tcp.routers.tcprouter1.tls=true"
- "ingress.tcp.routers.tcprouter1.tls.certresolver=foobar"
- "ingress.tcp.routers.tcprouter1.tls.domains[0].main=foobar"
- "ingress.tcp.routers.tcprouter1.tls.domains[0].sans=foobar, foobar"
- "ingress.tcp.routers.tcprouter1.tls.domains[1].main=foobar"
- "ingress.tcp.routers.tcprouter1.tls.domains[1].sans=foobar, foobar"
- "ingress.tcp.routers.tcprouter1.tls.options=foobar"
- "ingress.tcp.routers.tcprouter1.tls.passthrough=true"
- "ingress.tcp.services.tcpservice01.loadbalancer.proxyprotocol=true"
- "ingress.tcp.services.tcpservice01.loadbalancer.proxyprotocol.version=42"
- "ingress.tcp.services.tcpservice01.loadbalancer.serverstransport=foobar"
- "ingress.tcp.services.tcpservice01.loadbalancer.terminationdelay=42"
- "ingress.tcp.services.tcpservice01.loadbalancer.server.port=foobar"
- "ingress.tcp.services.tcpservice01.loadbalancer.server.tls=true"
- "ingress.tls.stores.store0.defaultgeneratedcert.domain.main=foobar"
- "ingress.tls.stores.store0.defaultgeneratedcert.domain.sans=foobar, foobar"
- "ingress.tls.stores.store0.defaultgeneratedcert.resolver=foobar"
- "ingress.tls.stores.store1.defaultgeneratedcert.domain.main=foobar"
- "ingress.tls.stores.store1.defaultgeneratedcert.domain.sans=foobar, foobar"
- "ingress.tls.stores.store1.defaultgeneratedcert.resolver=foobar"
- "ingress.udp.routers.udprouter0.entrypoints=foobar, foobar"
- "ingress.udp.routers.udprouter0.service=foobar"
- "ingress.udp.routers.udprouter1.entrypoints=foobar, foobar"
- "ingress.udp.routers.udprouter1.service=foobar"
- "ingress.udp.services.udpservice01.loadbalancer.server.port=foobar"
@@ -3,9 +3,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: ingressroutes.traefik.io
name: ingressroutes.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: IngressRoute
listKind: IngressRouteList
@@ -42,7 +42,7 @@ spec:
description: |-
EntryPoints defines the list of entry point names to bind to.
Entry points have to be configured in the static configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/install-configuration/entrypoints/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/install-configuration/entrypoints/
Default: all.
items:
type: string
@@ -55,7 +55,7 @@ spec:
description: |-
ParentRefs defines references to parent IngressRoute resources for multi-layer routing.
When set, this IngressRoute's routers will be children of the referenced parent IngressRoute's routers.
More info: https://doc.traefik.io/traefik/v3.6/routing/routers/#parentrefs
More info: https://doc.hanzo.ai/traefik/v3.6/routing/routers/#parentrefs
items:
description: IngressRouteRef is a reference to an IngressRoute resource.
properties:
@@ -87,12 +87,12 @@ spec:
match:
description: |-
Match defines the router's rule.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/routing/rules-and-priority/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/routing/rules-and-priority/
type: string
middlewares:
description: |-
Middlewares defines the list of references to Middleware resources.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/middleware/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/middleware/
items:
description: MiddlewareRef is a reference to a Middleware
resource.
@@ -112,7 +112,7 @@ spec:
observability:
description: |-
Observability defines the observability configuration for a router.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/routing/observability/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/routing/observability/
properties:
accessLogs:
description: AccessLogs enables access logs for this router.
@@ -135,13 +135,13 @@ spec:
priority:
description: |-
Priority defines the router's priority.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/routing/rules-and-priority/#priority
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/routing/rules-and-priority/#priority
maximum: 9223372036854775000
type: integer
services:
description: |-
Services defines the list of Service.
It can contain any combination of TraefikService and/or reference to a Kubernetes Service.
It can contain any combination of IngressService and/or reference to a Kubernetes Service.
items:
description: Service defines an upstream HTTP service to proxy
traffic to.
@@ -220,7 +220,7 @@ spec:
description: Kind defines the kind of the Service.
enum:
- Service
- TraefikService
- IngressService
type: string
middlewares:
description: Middlewares defines the list of references
@@ -243,12 +243,12 @@ spec:
type: array
name:
description: |-
Name defines the name of the referenced Kubernetes Service or TraefikService.
Name defines the name of the referenced Kubernetes Service or IngressService.
The differentiation between the two is specified in the Kind field.
type: string
namespace:
description: Namespace defines the namespace of the referenced
Kubernetes Service or TraefikService.
Kubernetes Service or IngressService.
type: string
nativeLB:
description: |-
@@ -324,7 +324,7 @@ spec:
sticky:
description: |-
Sticky defines the sticky sessions configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
properties:
cookie:
description: Cookie defines the sticky cookie configuration.
@@ -384,7 +384,7 @@ spec:
type: string
weight:
description: |-
Weight defines the weight and should only be specified when Name references a TraefikService object
Weight defines the weight and should only be specified when Name references a IngressService object
(and to be precise, one that embeds a Weighted Round Robin).
minimum: 0
type: integer
@@ -395,7 +395,7 @@ spec:
syntax:
description: |-
Syntax defines the router's rule syntax.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/routing/rules-and-priority/#rulesyntax
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/routing/rules-and-priority/#rulesyntax
Deprecated: Please do not use this field and rewrite the router rules to use the v3 syntax.
type: string
@@ -406,18 +406,18 @@ spec:
tls:
description: |-
TLS defines the TLS configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/routing/router/#tls
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/routing/router/#tls
properties:
certResolver:
description: |-
CertResolver defines the name of the certificate resolver to use.
Cert resolvers have to be configured in the static configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/install-configuration/tls/certificate-resolvers/acme/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/install-configuration/tls/certificate-resolvers/acme/
type: string
domains:
description: |-
Domains defines the list of domains that will be used to issue certificates.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#domains
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#domains
items:
description: Domain holds a domain name with SANs.
properties:
@@ -436,17 +436,17 @@ spec:
description: |-
Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection.
If not defined, the `default` TLSOption is used.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/tls/tls-options/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/tls/tls-options/
properties:
name:
description: |-
Name defines the name of the referenced TLSOption.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/tlsoption/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/tlsoption/
type: string
namespace:
description: |-
Namespace defines the namespace of the referenced TLSOption.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/tlsoption/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/tlsoption/
type: string
required:
- name
@@ -463,12 +463,12 @@ spec:
name:
description: |-
Name defines the name of the referenced TLSStore.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/tlsstore/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/tlsstore/
type: string
namespace:
description: |-
Namespace defines the namespace of the referenced TLSStore.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/tlsstore/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/tlsstore/
type: string
required:
- name
@@ -489,9 +489,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: ingressroutetcps.traefik.io
name: ingressroutetcps.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: IngressRouteTCP
listKind: IngressRouteTCPList
@@ -528,7 +528,7 @@ spec:
description: |-
EntryPoints defines the list of entry point names to bind to.
Entry points have to be configured in the static configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/install-configuration/entrypoints/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/install-configuration/entrypoints/
Default: all.
items:
type: string
@@ -545,7 +545,7 @@ spec:
match:
description: |-
Match defines the router's rule.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/routing/rules-and-priority/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/routing/rules-and-priority/
type: string
middlewares:
description: Middlewares defines the list of references to MiddlewareTCP
@@ -569,7 +569,7 @@ spec:
priority:
description: |-
Priority defines the router's priority.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/routing/rules-and-priority/#priority
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/routing/rules-and-priority/#priority
maximum: 9223372036854775000
type: integer
services:
@@ -611,7 +611,7 @@ spec:
proxyProtocol:
description: |-
ProxyProtocol defines the PROXY protocol configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/service/#proxy-protocol
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/service/#proxy-protocol
Deprecated: ProxyProtocol will not be supported in future APIVersions, please use ServersTransport to configure ProxyProtocol instead.
properties:
@@ -655,7 +655,7 @@ spec:
syntax:
description: |-
Syntax defines the router's rule syntax.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/routing/rules-and-priority/#rulesyntax
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/routing/rules-and-priority/#rulesyntax
Deprecated: Please do not use this field and rewrite the router rules to use the v3 syntax.
enum:
@@ -669,18 +669,18 @@ spec:
tls:
description: |-
TLS defines the TLS configuration on a layer 4 / TCP Route.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/routing/router/#tls
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/routing/router/#tls
properties:
certResolver:
description: |-
CertResolver defines the name of the certificate resolver to use.
Cert resolvers have to be configured in the static configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/install-configuration/tls/certificate-resolvers/acme/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/install-configuration/tls/certificate-resolvers/acme/
type: string
domains:
description: |-
Domains defines the list of domains that will be used to issue certificates.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/tls/#domains
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/tls/#domains
items:
description: Domain holds a domain name with SANs.
properties:
@@ -699,7 +699,7 @@ spec:
description: |-
Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection.
If not defined, the `default` TLSOption is used.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/tls/#tls-options
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/tls/#tls-options
properties:
name:
description: Name defines the name of the referenced Traefik
@@ -752,9 +752,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: ingressrouteudps.traefik.io
name: ingressrouteudps.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: IngressRouteUDP
listKind: IngressRouteUDPList
@@ -791,7 +791,7 @@ spec:
description: |-
EntryPoints defines the list of entry point names to bind to.
Entry points have to be configured in the static configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/install-configuration/entrypoints/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/install-configuration/entrypoints/
Default: all.
items:
type: string
@@ -868,9 +868,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: middlewares.traefik.io
name: middlewares.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: Middleware
listKind: MiddlewareList
@@ -883,7 +883,7 @@ spec:
openAPIV3Schema:
description: |-
Middleware is the CRD implementation of a Traefik Middleware.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/overview/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/overview/
properties:
apiVersion:
description: |-
@@ -909,7 +909,7 @@ spec:
description: |-
AddPrefix holds the add prefix middleware configuration.
This middleware updates the path of a request before forwarding it.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/addprefix/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/addprefix/
properties:
prefix:
description: |-
@@ -924,17 +924,17 @@ spec:
description: |-
BasicAuth holds the basic auth middleware configuration.
This middleware restricts access to your services to known users.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/basicauth/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/basicauth/
properties:
headerField:
description: |-
HeaderField defines a header field to store the authenticated user.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/basicauth/#headerfield
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/basicauth/#headerfield
type: string
realm:
description: |-
Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme.
Default: traefik.
Default: ingress.
type: string
removeHeader:
description: |-
@@ -950,7 +950,7 @@ spec:
description: |-
Buffering holds the buffering middleware configuration.
This middleware retries or limits the size of requests that can be forwarded to backends.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/buffering/#maxrequestbodybytes
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/buffering/#maxrequestbodybytes
properties:
maxRequestBodyBytes:
description: |-
@@ -982,14 +982,14 @@ spec:
description: |-
RetryExpression defines the retry conditions.
It is a logical combination of functions with operators AND (&&) and OR (||).
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/buffering/#retryexpression
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/buffering/#retryexpression
type: string
type: object
chain:
description: |-
Chain holds the configuration of the chain middleware.
This middleware enables to define reusable combinations of other pieces of middleware.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/chain/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/chain/
properties:
middlewares:
description: Middlewares is the list of MiddlewareRef which composes
@@ -1052,7 +1052,7 @@ spec:
description: |-
Compress holds the compress middleware configuration.
This middleware compresses responses before sending them to the client, using gzip, brotli, or zstd compression.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/compress/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/compress/
properties:
defaultEncoding:
description: DefaultEncoding specifies the default encoding if
@@ -1103,17 +1103,17 @@ spec:
description: |-
DigestAuth holds the digest auth middleware configuration.
This middleware restricts access to your services to known users.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/digestauth/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/digestauth/
properties:
headerField:
description: |-
HeaderField defines a header field to store the authenticated user.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/digestauth/#headerfield
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/digestauth/#headerfield
type: string
realm:
description: |-
Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme.
Default: traefik.
Default: ingress.
type: string
removeHeader:
description: RemoveHeader defines whether to remove the authorization
@@ -1161,7 +1161,7 @@ spec:
description: |-
ErrorPage holds the custom error middleware configuration.
This middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/errorpages/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/errorpages/
properties:
query:
description: |-
@@ -1173,7 +1173,7 @@ spec:
service:
description: |-
Service defines the reference to a Kubernetes Service that will serve the error page.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/errorpages/#service
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/errorpages/#service
properties:
healthCheck:
description: Healthcheck defines health checks for ExternalName
@@ -1249,7 +1249,7 @@ spec:
description: Kind defines the kind of the Service.
enum:
- Service
- TraefikService
- IngressService
type: string
middlewares:
description: Middlewares defines the list of references to
@@ -1272,12 +1272,12 @@ spec:
type: array
name:
description: |-
Name defines the name of the referenced Kubernetes Service or TraefikService.
Name defines the name of the referenced Kubernetes Service or IngressService.
The differentiation between the two is specified in the Kind field.
type: string
namespace:
description: Namespace defines the namespace of the referenced
Kubernetes Service or TraefikService.
Kubernetes Service or IngressService.
type: string
nativeLB:
description: |-
@@ -1353,7 +1353,7 @@ spec:
sticky:
description: |-
Sticky defines the sticky sessions configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
properties:
cookie:
description: Cookie defines the sticky cookie configuration.
@@ -1412,7 +1412,7 @@ spec:
type: string
weight:
description: |-
Weight defines the weight and should only be specified when Name references a TraefikService object
Weight defines the weight and should only be specified when Name references a IngressService object
(and to be precise, one that embeds a Weighted Round Robin).
minimum: 0
type: integer
@@ -1442,7 +1442,7 @@ spec:
description: |-
ForwardAuth holds the forward auth middleware configuration.
This middleware delegates the request authentication to a Service.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/forwardauth/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/forwardauth/
properties:
addAuthCookiesToResponse:
description: AddAuthCookiesToResponse defines the list of cookies
@@ -1470,7 +1470,7 @@ spec:
authResponseHeadersRegex:
description: |-
AuthResponseHeadersRegex defines the regex to match headers to copy from the authentication server response and set on forwarded request, after stripping all headers that match the regex.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/forwardauth/#authresponseheadersregex
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/forwardauth/#authresponseheadersregex
type: string
authSigninURL:
description: AuthSigninURL specifies the URL to redirect to when
@@ -1483,7 +1483,7 @@ spec:
headerField:
description: |-
HeaderField defines a header field to store the authenticated user.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/forwardauth/#headerfield
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/forwardauth/#headerfield
type: string
maxBodySize:
description: MaxBodySize defines the maximum body size in bytes
@@ -1550,7 +1550,7 @@ spec:
description: |-
Headers holds the headers middleware configuration.
This middleware manages the requests and responses headers.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/headers/#customrequestheaders
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/headers/#customrequestheaders
properties:
accessControlAllowCredentials:
description: AccessControlAllowCredentials defines whether the
@@ -1722,7 +1722,7 @@ spec:
description: |-
InFlightReq holds the in-flight request middleware configuration.
This middleware limits the number of requests being processed and served concurrently.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/inflightreq/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/inflightreq/
properties:
amount:
description: |-
@@ -1736,12 +1736,12 @@ spec:
SourceCriterion defines what criterion is used to group requests as originating from a common source.
If several strategies are defined at the same time, an error will be raised.
If none are set, the default is to use the requestHost.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/inflightreq/#sourcecriterion
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/inflightreq/#sourcecriterion
properties:
ipStrategy:
description: |-
IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/ipallowlist/#ipstrategy
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/ipallowlist/#ipstrategy
properties:
depth:
description: Depth tells Traefik to use the X-Forwarded-For
@@ -1777,12 +1777,12 @@ spec:
description: |-
IPAllowList holds the IP allowlist middleware configuration.
This middleware limits allowed requests based on the client IP.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/ipallowlist/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/ipallowlist/
properties:
ipStrategy:
description: |-
IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/ipallowlist/#ipstrategy
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/ipallowlist/#ipstrategy
properties:
depth:
description: Depth tells Traefik to use the X-Forwarded-For
@@ -1820,7 +1820,7 @@ spec:
ipStrategy:
description: |-
IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/ipallowlist/#ipstrategy
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/ipallowlist/#ipstrategy
properties:
depth:
description: Depth tells Traefik to use the X-Forwarded-For
@@ -1851,7 +1851,7 @@ spec:
description: |-
PassTLSClientCert holds the pass TLS client cert middleware configuration.
This middleware adds the selected data from the passed client TLS certificate to a header.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/passtlsclientcert/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/passtlsclientcert/
properties:
info:
description: Info selects the specific client certificate details
@@ -1954,13 +1954,13 @@ spec:
x-kubernetes-preserve-unknown-fields: true
description: |-
Plugin defines the middleware plugin configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/overview/#community-middlewares
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/overview/#community-middlewares
type: object
rateLimit:
description: |-
RateLimit holds the rate limit configuration.
This middleware ensures that services will receive a fair amount of requests, and allows one to define what fair is.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/ratelimit/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/ratelimit/
properties:
average:
description: |-
@@ -2079,7 +2079,7 @@ spec:
ipStrategy:
description: |-
IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/ipallowlist/#ipstrategy
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/ipallowlist/#ipstrategy
properties:
depth:
description: Depth tells Traefik to use the X-Forwarded-For
@@ -2115,7 +2115,7 @@ spec:
description: |-
RedirectRegex holds the redirect regex middleware configuration.
This middleware redirects a request using regex matching and replacement.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/redirectregex/#regex
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/redirectregex/#regex
properties:
permanent:
description: Permanent defines whether the redirection is permanent
@@ -2134,7 +2134,7 @@ spec:
description: |-
RedirectScheme holds the redirect scheme middleware configuration.
This middleware redirects requests from a scheme/port to another.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/redirectscheme/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/redirectscheme/
properties:
permanent:
description: |-
@@ -2152,7 +2152,7 @@ spec:
description: |-
ReplacePath holds the replace path middleware configuration.
This middleware replaces the path of the request URL and store the original path in an X-Replaced-Path header.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/replacepath/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/replacepath/
properties:
path:
description: Path defines the path to use as replacement in the
@@ -2163,7 +2163,7 @@ spec:
description: |-
ReplacePathRegex holds the replace path regex middleware configuration.
This middleware replaces the path of a URL using regex matching and replacement.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/replacepathregex/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/replacepathregex/
properties:
regex:
description: Regex defines the regular expression used to match
@@ -2179,7 +2179,7 @@ spec:
Retry holds the retry middleware configuration.
This middleware reissues requests a given number of times to a backend server if that server does not reply.
As soon as the server answers, the middleware stops retrying, regardless of the response status.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/retry/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/retry/
properties:
attempts:
description: Attempts defines how many times the request should
@@ -2236,7 +2236,7 @@ spec:
description: |-
StripPrefix holds the strip prefix middleware configuration.
This middleware removes the specified prefixes from the URL path.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/stripprefix/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/stripprefix/
properties:
forceSlash:
description: |-
@@ -2255,7 +2255,7 @@ spec:
description: |-
StripPrefixRegex holds the strip prefix regex middleware configuration.
This middleware removes the matching prefixes from the URL path.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/stripprefixregex/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/stripprefixregex/
properties:
regex:
description: Regex defines the regular expression to match the
@@ -2277,9 +2277,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: middlewaretcps.traefik.io
name: middlewaretcps.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: MiddlewareTCP
listKind: MiddlewareTCPList
@@ -2292,7 +2292,7 @@ spec:
openAPIV3Schema:
description: |-
MiddlewareTCP is the CRD implementation of a Traefik TCP middleware.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/middlewares/overview/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/middlewares/overview/
properties:
apiVersion:
description: |-
@@ -2329,7 +2329,7 @@ spec:
description: |-
IPAllowList defines the IPAllowList middleware configuration.
This middleware accepts/refuses connections based on the client IP.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/middlewares/ipallowlist/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/middlewares/ipallowlist/
properties:
sourceRange:
description: SourceRange defines the allowed IPs (or ranges of
@@ -2342,7 +2342,7 @@ spec:
description: |-
IPWhiteList defines the IPWhiteList middleware configuration.
This middleware accepts/refuses connections based on the client IP.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/middlewares/ipwhitelist/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/middlewares/ipwhitelist/
Deprecated: please use IPAllowList instead.
properties:
@@ -2366,9 +2366,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: serverstransports.traefik.io
name: serverstransports.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: ServersTransport
listKind: ServersTransportList
@@ -2383,7 +2383,7 @@ spec:
ServersTransport is the CRD implementation of a ServersTransport.
If no serversTransport is specified, the default@internal will be used.
The default@internal serversTransport is created from the static configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/load-balancing/serverstransport/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/load-balancing/serverstransport/
properties:
apiVersion:
description: |-
@@ -2550,9 +2550,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: serverstransporttcps.traefik.io
name: serverstransporttcps.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: ServersTransportTCP
listKind: ServersTransportTCPList
@@ -2567,7 +2567,7 @@ spec:
ServersTransportTCP is the CRD implementation of a TCPServersTransport.
If no tcpServersTransport is specified, a default one named default@internal will be used.
The default@internal tcpServersTransport can be configured in the static configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/serverstransport/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/serverstransport/
properties:
apiVersion:
description: |-
@@ -2707,9 +2707,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: tlsoptions.traefik.io
name: tlsoptions.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: TLSOption
listKind: TLSOptionList
@@ -2722,7 +2722,7 @@ spec:
openAPIV3Schema:
description: |-
TLSOption is the CRD implementation of a Traefik TLS Option, allowing to configure some parameters of the TLS connection.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#tls-options
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#tls-options
properties:
apiVersion:
description: |-
@@ -2747,14 +2747,14 @@ spec:
alpnProtocols:
description: |-
ALPNProtocols defines the list of supported application level protocols for the TLS handshake, in order of preference.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#alpn-protocols
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#alpn-protocols
items:
type: string
type: array
cipherSuites:
description: |-
CipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#cipher-suites
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#cipher-suites
items:
type: string
type: array
@@ -2782,7 +2782,7 @@ spec:
curvePreferences:
description: |-
CurvePreferences defines the preferred elliptic curves.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#curve-preferences
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#curve-preferences
items:
type: string
type: array
@@ -2826,9 +2826,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: tlsstores.traefik.io
name: tlsstores.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: TLSStore
listKind: TLSStoreList
@@ -2843,7 +2843,7 @@ spec:
TLSStore is the CRD implementation of a Traefik TLS Store.
For the time being, only the TLSStore named default is supported.
This means that you cannot have two stores that are named default in different Kubernetes namespaces.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#certificates-stores
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#certificates-stores
properties:
apiVersion:
description: |-
@@ -2923,25 +2923,25 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: traefikservices.traefik.io
name: ingressservices.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: TraefikService
listKind: TraefikServiceList
plural: traefikservices
singular: traefikservice
kind: IngressService
listKind: IngressServiceList
plural: ingressservices
singular: ingressservice
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: |-
TraefikService is the CRD implementation of a Traefik Service.
TraefikService object allows to:
IngressService is the CRD implementation of a Traefik Service.
IngressService object allows to:
- Apply weight to Services on load-balancing
- Mirror traffic on services
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/traefikservice/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/ingressservice/
properties:
apiVersion:
description: |-
@@ -2961,7 +2961,7 @@ spec:
metadata:
type: object
spec:
description: TraefikServiceSpec defines the desired state of a TraefikService.
description: IngressServiceSpec defines the desired state of a IngressService.
properties:
highestRandomWeight:
description: HighestRandomWeight defines the highest random weight
@@ -2969,7 +2969,7 @@ spec:
properties:
services:
description: Services defines the list of Kubernetes Service and/or
TraefikService to load-balance, with weight.
IngressService to load-balance, with weight.
items:
description: Service defines an upstream HTTP service to proxy
traffic to.
@@ -3048,7 +3048,7 @@ spec:
description: Kind defines the kind of the Service.
enum:
- Service
- TraefikService
- IngressService
type: string
middlewares:
description: Middlewares defines the list of references
@@ -3071,12 +3071,12 @@ spec:
type: array
name:
description: |-
Name defines the name of the referenced Kubernetes Service or TraefikService.
Name defines the name of the referenced Kubernetes Service or IngressService.
The differentiation between the two is specified in the Kind field.
type: string
namespace:
description: Namespace defines the namespace of the referenced
Kubernetes Service or TraefikService.
Kubernetes Service or IngressService.
type: string
nativeLB:
description: |-
@@ -3152,7 +3152,7 @@ spec:
sticky:
description: |-
Sticky defines the sticky sessions configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
properties:
cookie:
description: Cookie defines the sticky cookie configuration.
@@ -3211,7 +3211,7 @@ spec:
type: string
weight:
description: |-
Weight defines the weight and should only be specified when Name references a TraefikService object
Weight defines the weight and should only be specified when Name references a IngressService object
(and to be precise, one that embeds a Weighted Round Robin).
minimum: 0
type: integer
@@ -3297,7 +3297,7 @@ spec:
description: Kind defines the kind of the Service.
enum:
- Service
- TraefikService
- IngressService
type: string
maxBodySize:
description: |-
@@ -3409,7 +3409,7 @@ spec:
description: Kind defines the kind of the Service.
enum:
- Service
- TraefikService
- IngressService
type: string
middlewares:
description: Middlewares defines the list of references
@@ -3432,12 +3432,12 @@ spec:
type: array
name:
description: |-
Name defines the name of the referenced Kubernetes Service or TraefikService.
Name defines the name of the referenced Kubernetes Service or IngressService.
The differentiation between the two is specified in the Kind field.
type: string
namespace:
description: Namespace defines the namespace of the referenced
Kubernetes Service or TraefikService.
Kubernetes Service or IngressService.
type: string
nativeLB:
description: |-
@@ -3518,7 +3518,7 @@ spec:
sticky:
description: |-
Sticky defines the sticky sessions configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
properties:
cookie:
description: Cookie defines the sticky cookie configuration.
@@ -3577,7 +3577,7 @@ spec:
type: string
weight:
description: |-
Weight defines the weight and should only be specified when Name references a TraefikService object
Weight defines the weight and should only be specified when Name references a IngressService object
(and to be precise, one that embeds a Weighted Round Robin).
minimum: 0
type: integer
@@ -3587,12 +3587,12 @@ spec:
type: array
name:
description: |-
Name defines the name of the referenced Kubernetes Service or TraefikService.
Name defines the name of the referenced Kubernetes Service or IngressService.
The differentiation between the two is specified in the Kind field.
type: string
namespace:
description: Namespace defines the namespace of the referenced
Kubernetes Service or TraefikService.
Kubernetes Service or IngressService.
type: string
nativeLB:
description: |-
@@ -3667,7 +3667,7 @@ spec:
sticky:
description: |-
Sticky defines the sticky sessions configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
properties:
cookie:
description: Cookie defines the sticky cookie configuration.
@@ -3725,7 +3725,7 @@ spec:
type: string
weight:
description: |-
Weight defines the weight and should only be specified when Name references a TraefikService object
Weight defines the weight and should only be specified when Name references a IngressService object
(and to be precise, one that embeds a Weighted Round Robin).
minimum: 0
type: integer
@@ -3737,7 +3737,7 @@ spec:
properties:
services:
description: Services defines the list of Kubernetes Service and/or
TraefikService to load-balance, with weight.
IngressService to load-balance, with weight.
items:
description: Service defines an upstream HTTP service to proxy
traffic to.
@@ -3816,7 +3816,7 @@ spec:
description: Kind defines the kind of the Service.
enum:
- Service
- TraefikService
- IngressService
type: string
middlewares:
description: Middlewares defines the list of references
@@ -3839,12 +3839,12 @@ spec:
type: array
name:
description: |-
Name defines the name of the referenced Kubernetes Service or TraefikService.
Name defines the name of the referenced Kubernetes Service or IngressService.
The differentiation between the two is specified in the Kind field.
type: string
namespace:
description: Namespace defines the namespace of the referenced
Kubernetes Service or TraefikService.
Kubernetes Service or IngressService.
type: string
nativeLB:
description: |-
@@ -3920,7 +3920,7 @@ spec:
sticky:
description: |-
Sticky defines the sticky sessions configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
properties:
cookie:
description: Cookie defines the sticky cookie configuration.
@@ -3979,7 +3979,7 @@ spec:
type: string
weight:
description: |-
Weight defines the weight and should only be specified when Name references a TraefikService object
Weight defines the weight and should only be specified when Name references a IngressService object
(and to be precise, one that embeds a Weighted Round Robin).
minimum: 0
type: integer
@@ -3990,7 +3990,7 @@ spec:
sticky:
description: |-
Sticky defines whether sticky sessions are enabled.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/traefikservice/#stickiness-and-load-balancing
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/ingressservice/#stickiness-and-load-balancing
properties:
cookie:
description: Cookie defines the sticky cookie configuration.
@@ -48,12 +48,12 @@ rules:
verbs:
- update
- apiGroups:
- traefik.io
- hanzo.ai
resources:
- middlewares
- middlewaretcps
- ingressroutes
- traefikservices
- ingressservices
- ingressroutetcps
- ingressrouteudps
- tlsoptions
@@ -1,5 +1,5 @@
apiVersion: traefik.io/v1alpha1
kind: TraefikService
apiVersion: hanzo.ai/v1alpha1
kind: IngressService
metadata:
name: wrr2
namespace: default
@@ -17,8 +17,8 @@ spec:
port: 80
---
apiVersion: traefik.io/v1alpha1
kind: TraefikService
apiVersion: hanzo.ai/v1alpha1
kind: IngressService
metadata:
name: wrr1
namespace: default
@@ -27,15 +27,15 @@ spec:
weighted:
services:
- name: wrr2
kind: TraefikService
kind: IngressService
weight: 1
- name: s3
weight: 1
port: 80
---
apiVersion: traefik.io/v1alpha1
kind: TraefikService
apiVersion: hanzo.ai/v1alpha1
kind: IngressService
metadata:
name: mirror1
namespace: default
@@ -49,12 +49,12 @@ spec:
percent: 20
port: 80
- name: mirror2
kind: TraefikService
kind: IngressService
percent: 20
---
apiVersion: traefik.io/v1alpha1
kind: TraefikService
apiVersion: hanzo.ai/v1alpha1
kind: IngressService
metadata:
name: mirror2
namespace: default
@@ -62,7 +62,7 @@ metadata:
spec:
mirroring:
name: wrr2
kind: TraefikService
kind: IngressService
mirrorBody: true
# Optional
maxBodySize: 2000000000
@@ -74,7 +74,7 @@ spec:
port: 80
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: ingressroute
@@ -120,12 +120,12 @@ spec:
kind: Rule
services:
- name: wrr1
kind: TraefikService
kind: IngressService
- match: PathPrefix(`/mirrored`)
kind: Rule
services:
- name: mirror1
kind: TraefikService
kind: IngressService
# use an empty tls object for TLS with Let's Encrypt
tls:
secretName: supersecret
@@ -134,7 +134,7 @@ spec:
namespace: default
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRouteTCP
metadata:
name: ingressroutetcp.crd
@@ -159,7 +159,7 @@ spec:
namespace: default
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRouteUDP
metadata:
name: ingressrouteudp.crd
@@ -174,7 +174,7 @@ spec:
port: 8080
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: TLSOption
metadata:
name: tlsoption
@@ -200,7 +200,7 @@ spec:
- foobar
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: ServersTransport
metadata:
name: mytransport
@@ -224,7 +224,7 @@ spec:
disableHTTP2: true
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: ServersTransportTCP
metadata:
name: mytransporttcp
@@ -3,7 +3,7 @@ kind: GatewayClass
metadata:
name: my-gateway-class
spec:
controllerName: traefik.io/gateway-controller
controllerName: hanzo.ai/gateway-controller
---
apiVersion: gateway.networking.k8s.io/v1
@@ -73,8 +73,8 @@ spec:
value: /foo
backendRefs:
- group: traefik.io
kind: TraefikService
- group: hanzo.ai
kind: IngressService
name: myservice@file
weight: 1
port: 80
@@ -4,7 +4,7 @@ metadata:
name: my-gateway-class
spec:
controllerName: traefik.io/gateway-controller
controllerName: hanzo.ai/gateway-controller
---
apiVersion: gateway.networking.k8s.io/v1
@@ -4,9 +4,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: ingressroutes.traefik.io
name: ingressroutes.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: IngressRoute
listKind: IngressRouteList
@@ -43,7 +43,7 @@ spec:
description: |-
EntryPoints defines the list of entry point names to bind to.
Entry points have to be configured in the static configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/install-configuration/entrypoints/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/install-configuration/entrypoints/
Default: all.
items:
type: string
@@ -56,7 +56,7 @@ spec:
description: |-
ParentRefs defines references to parent IngressRoute resources for multi-layer routing.
When set, this IngressRoute's routers will be children of the referenced parent IngressRoute's routers.
More info: https://doc.traefik.io/traefik/v3.6/routing/routers/#parentrefs
More info: https://doc.hanzo.ai/traefik/v3.6/routing/routers/#parentrefs
items:
description: IngressRouteRef is a reference to an IngressRoute resource.
properties:
@@ -88,12 +88,12 @@ spec:
match:
description: |-
Match defines the router's rule.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/routing/rules-and-priority/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/routing/rules-and-priority/
type: string
middlewares:
description: |-
Middlewares defines the list of references to Middleware resources.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/middleware/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/middleware/
items:
description: MiddlewareRef is a reference to a Middleware
resource.
@@ -113,7 +113,7 @@ spec:
observability:
description: |-
Observability defines the observability configuration for a router.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/routing/observability/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/routing/observability/
properties:
accessLogs:
description: AccessLogs enables access logs for this router.
@@ -136,13 +136,13 @@ spec:
priority:
description: |-
Priority defines the router's priority.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/routing/rules-and-priority/#priority
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/routing/rules-and-priority/#priority
maximum: 9223372036854775000
type: integer
services:
description: |-
Services defines the list of Service.
It can contain any combination of TraefikService and/or reference to a Kubernetes Service.
It can contain any combination of IngressService and/or reference to a Kubernetes Service.
items:
description: Service defines an upstream HTTP service to proxy
traffic to.
@@ -221,7 +221,7 @@ spec:
description: Kind defines the kind of the Service.
enum:
- Service
- TraefikService
- IngressService
type: string
middlewares:
description: Middlewares defines the list of references
@@ -244,12 +244,12 @@ spec:
type: array
name:
description: |-
Name defines the name of the referenced Kubernetes Service or TraefikService.
Name defines the name of the referenced Kubernetes Service or IngressService.
The differentiation between the two is specified in the Kind field.
type: string
namespace:
description: Namespace defines the namespace of the referenced
Kubernetes Service or TraefikService.
Kubernetes Service or IngressService.
type: string
nativeLB:
description: |-
@@ -325,7 +325,7 @@ spec:
sticky:
description: |-
Sticky defines the sticky sessions configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
properties:
cookie:
description: Cookie defines the sticky cookie configuration.
@@ -385,7 +385,7 @@ spec:
type: string
weight:
description: |-
Weight defines the weight and should only be specified when Name references a TraefikService object
Weight defines the weight and should only be specified when Name references a IngressService object
(and to be precise, one that embeds a Weighted Round Robin).
minimum: 0
type: integer
@@ -396,7 +396,7 @@ spec:
syntax:
description: |-
Syntax defines the router's rule syntax.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/routing/rules-and-priority/#rulesyntax
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/routing/rules-and-priority/#rulesyntax
Deprecated: Please do not use this field and rewrite the router rules to use the v3 syntax.
type: string
@@ -407,18 +407,18 @@ spec:
tls:
description: |-
TLS defines the TLS configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/routing/router/#tls
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/routing/router/#tls
properties:
certResolver:
description: |-
CertResolver defines the name of the certificate resolver to use.
Cert resolvers have to be configured in the static configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/install-configuration/tls/certificate-resolvers/acme/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/install-configuration/tls/certificate-resolvers/acme/
type: string
domains:
description: |-
Domains defines the list of domains that will be used to issue certificates.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#domains
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#domains
items:
description: Domain holds a domain name with SANs.
properties:
@@ -437,17 +437,17 @@ spec:
description: |-
Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection.
If not defined, the `default` TLSOption is used.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/tls/tls-options/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/tls/tls-options/
properties:
name:
description: |-
Name defines the name of the referenced TLSOption.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/tlsoption/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/tlsoption/
type: string
namespace:
description: |-
Namespace defines the namespace of the referenced TLSOption.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/tlsoption/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/tlsoption/
type: string
required:
- name
@@ -464,12 +464,12 @@ spec:
name:
description: |-
Name defines the name of the referenced TLSStore.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/tlsstore/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/tlsstore/
type: string
namespace:
description: |-
Namespace defines the namespace of the referenced TLSStore.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/tlsstore/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/tlsstore/
type: string
required:
- name
@@ -4,9 +4,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: ingressroutetcps.traefik.io
name: ingressroutetcps.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: IngressRouteTCP
listKind: IngressRouteTCPList
@@ -43,7 +43,7 @@ spec:
description: |-
EntryPoints defines the list of entry point names to bind to.
Entry points have to be configured in the static configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/install-configuration/entrypoints/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/install-configuration/entrypoints/
Default: all.
items:
type: string
@@ -60,7 +60,7 @@ spec:
match:
description: |-
Match defines the router's rule.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/routing/rules-and-priority/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/routing/rules-and-priority/
type: string
middlewares:
description: Middlewares defines the list of references to MiddlewareTCP
@@ -84,7 +84,7 @@ spec:
priority:
description: |-
Priority defines the router's priority.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/routing/rules-and-priority/#priority
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/routing/rules-and-priority/#priority
maximum: 9223372036854775000
type: integer
services:
@@ -126,7 +126,7 @@ spec:
proxyProtocol:
description: |-
ProxyProtocol defines the PROXY protocol configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/service/#proxy-protocol
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/service/#proxy-protocol
Deprecated: ProxyProtocol will not be supported in future APIVersions, please use ServersTransport to configure ProxyProtocol instead.
properties:
@@ -170,7 +170,7 @@ spec:
syntax:
description: |-
Syntax defines the router's rule syntax.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/routing/rules-and-priority/#rulesyntax
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/routing/rules-and-priority/#rulesyntax
Deprecated: Please do not use this field and rewrite the router rules to use the v3 syntax.
enum:
@@ -184,18 +184,18 @@ spec:
tls:
description: |-
TLS defines the TLS configuration on a layer 4 / TCP Route.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/routing/router/#tls
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/routing/router/#tls
properties:
certResolver:
description: |-
CertResolver defines the name of the certificate resolver to use.
Cert resolvers have to be configured in the static configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/install-configuration/tls/certificate-resolvers/acme/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/install-configuration/tls/certificate-resolvers/acme/
type: string
domains:
description: |-
Domains defines the list of domains that will be used to issue certificates.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/tls/#domains
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/tls/#domains
items:
description: Domain holds a domain name with SANs.
properties:
@@ -214,7 +214,7 @@ spec:
description: |-
Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection.
If not defined, the `default` TLSOption is used.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/tls/#tls-options
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/tls/#tls-options
properties:
name:
description: Name defines the name of the referenced Traefik
@@ -4,9 +4,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: ingressrouteudps.traefik.io
name: ingressrouteudps.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: IngressRouteUDP
listKind: IngressRouteUDPList
@@ -43,7 +43,7 @@ spec:
description: |-
EntryPoints defines the list of entry point names to bind to.
Entry points have to be configured in the static configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/install-configuration/entrypoints/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/install-configuration/entrypoints/
Default: all.
items:
type: string
@@ -4,9 +4,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: middlewares.traefik.io
name: middlewares.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: Middleware
listKind: MiddlewareList
@@ -19,7 +19,7 @@ spec:
openAPIV3Schema:
description: |-
Middleware is the CRD implementation of a Traefik Middleware.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/overview/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/overview/
properties:
apiVersion:
description: |-
@@ -45,7 +45,7 @@ spec:
description: |-
AddPrefix holds the add prefix middleware configuration.
This middleware updates the path of a request before forwarding it.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/addprefix/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/addprefix/
properties:
prefix:
description: |-
@@ -60,17 +60,17 @@ spec:
description: |-
BasicAuth holds the basic auth middleware configuration.
This middleware restricts access to your services to known users.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/basicauth/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/basicauth/
properties:
headerField:
description: |-
HeaderField defines a header field to store the authenticated user.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/basicauth/#headerfield
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/basicauth/#headerfield
type: string
realm:
description: |-
Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme.
Default: traefik.
Default: ingress.
type: string
removeHeader:
description: |-
@@ -86,7 +86,7 @@ spec:
description: |-
Buffering holds the buffering middleware configuration.
This middleware retries or limits the size of requests that can be forwarded to backends.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/buffering/#maxrequestbodybytes
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/buffering/#maxrequestbodybytes
properties:
maxRequestBodyBytes:
description: |-
@@ -118,14 +118,14 @@ spec:
description: |-
RetryExpression defines the retry conditions.
It is a logical combination of functions with operators AND (&&) and OR (||).
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/buffering/#retryexpression
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/buffering/#retryexpression
type: string
type: object
chain:
description: |-
Chain holds the configuration of the chain middleware.
This middleware enables to define reusable combinations of other pieces of middleware.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/chain/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/chain/
properties:
middlewares:
description: Middlewares is the list of MiddlewareRef which composes
@@ -188,7 +188,7 @@ spec:
description: |-
Compress holds the compress middleware configuration.
This middleware compresses responses before sending them to the client, using gzip, brotli, or zstd compression.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/compress/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/compress/
properties:
defaultEncoding:
description: DefaultEncoding specifies the default encoding if
@@ -239,17 +239,17 @@ spec:
description: |-
DigestAuth holds the digest auth middleware configuration.
This middleware restricts access to your services to known users.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/digestauth/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/digestauth/
properties:
headerField:
description: |-
HeaderField defines a header field to store the authenticated user.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/digestauth/#headerfield
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/digestauth/#headerfield
type: string
realm:
description: |-
Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme.
Default: traefik.
Default: ingress.
type: string
removeHeader:
description: RemoveHeader defines whether to remove the authorization
@@ -297,7 +297,7 @@ spec:
description: |-
ErrorPage holds the custom error middleware configuration.
This middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/errorpages/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/errorpages/
properties:
query:
description: |-
@@ -309,7 +309,7 @@ spec:
service:
description: |-
Service defines the reference to a Kubernetes Service that will serve the error page.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/errorpages/#service
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/errorpages/#service
properties:
healthCheck:
description: Healthcheck defines health checks for ExternalName
@@ -385,7 +385,7 @@ spec:
description: Kind defines the kind of the Service.
enum:
- Service
- TraefikService
- IngressService
type: string
middlewares:
description: Middlewares defines the list of references to
@@ -408,12 +408,12 @@ spec:
type: array
name:
description: |-
Name defines the name of the referenced Kubernetes Service or TraefikService.
Name defines the name of the referenced Kubernetes Service or IngressService.
The differentiation between the two is specified in the Kind field.
type: string
namespace:
description: Namespace defines the namespace of the referenced
Kubernetes Service or TraefikService.
Kubernetes Service or IngressService.
type: string
nativeLB:
description: |-
@@ -489,7 +489,7 @@ spec:
sticky:
description: |-
Sticky defines the sticky sessions configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
properties:
cookie:
description: Cookie defines the sticky cookie configuration.
@@ -548,7 +548,7 @@ spec:
type: string
weight:
description: |-
Weight defines the weight and should only be specified when Name references a TraefikService object
Weight defines the weight and should only be specified when Name references a IngressService object
(and to be precise, one that embeds a Weighted Round Robin).
minimum: 0
type: integer
@@ -578,7 +578,7 @@ spec:
description: |-
ForwardAuth holds the forward auth middleware configuration.
This middleware delegates the request authentication to a Service.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/forwardauth/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/forwardauth/
properties:
addAuthCookiesToResponse:
description: AddAuthCookiesToResponse defines the list of cookies
@@ -606,7 +606,7 @@ spec:
authResponseHeadersRegex:
description: |-
AuthResponseHeadersRegex defines the regex to match headers to copy from the authentication server response and set on forwarded request, after stripping all headers that match the regex.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/forwardauth/#authresponseheadersregex
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/forwardauth/#authresponseheadersregex
type: string
authSigninURL:
description: AuthSigninURL specifies the URL to redirect to when
@@ -619,7 +619,7 @@ spec:
headerField:
description: |-
HeaderField defines a header field to store the authenticated user.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/forwardauth/#headerfield
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/forwardauth/#headerfield
type: string
maxBodySize:
description: MaxBodySize defines the maximum body size in bytes
@@ -686,7 +686,7 @@ spec:
description: |-
Headers holds the headers middleware configuration.
This middleware manages the requests and responses headers.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/headers/#customrequestheaders
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/headers/#customrequestheaders
properties:
accessControlAllowCredentials:
description: AccessControlAllowCredentials defines whether the
@@ -858,7 +858,7 @@ spec:
description: |-
InFlightReq holds the in-flight request middleware configuration.
This middleware limits the number of requests being processed and served concurrently.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/inflightreq/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/inflightreq/
properties:
amount:
description: |-
@@ -872,12 +872,12 @@ spec:
SourceCriterion defines what criterion is used to group requests as originating from a common source.
If several strategies are defined at the same time, an error will be raised.
If none are set, the default is to use the requestHost.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/inflightreq/#sourcecriterion
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/inflightreq/#sourcecriterion
properties:
ipStrategy:
description: |-
IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/ipallowlist/#ipstrategy
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/ipallowlist/#ipstrategy
properties:
depth:
description: Depth tells Traefik to use the X-Forwarded-For
@@ -913,12 +913,12 @@ spec:
description: |-
IPAllowList holds the IP allowlist middleware configuration.
This middleware limits allowed requests based on the client IP.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/ipallowlist/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/ipallowlist/
properties:
ipStrategy:
description: |-
IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/ipallowlist/#ipstrategy
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/ipallowlist/#ipstrategy
properties:
depth:
description: Depth tells Traefik to use the X-Forwarded-For
@@ -956,7 +956,7 @@ spec:
ipStrategy:
description: |-
IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/ipallowlist/#ipstrategy
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/ipallowlist/#ipstrategy
properties:
depth:
description: Depth tells Traefik to use the X-Forwarded-For
@@ -987,7 +987,7 @@ spec:
description: |-
PassTLSClientCert holds the pass TLS client cert middleware configuration.
This middleware adds the selected data from the passed client TLS certificate to a header.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/passtlsclientcert/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/passtlsclientcert/
properties:
info:
description: Info selects the specific client certificate details
@@ -1090,13 +1090,13 @@ spec:
x-kubernetes-preserve-unknown-fields: true
description: |-
Plugin defines the middleware plugin configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/overview/#community-middlewares
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/overview/#community-middlewares
type: object
rateLimit:
description: |-
RateLimit holds the rate limit configuration.
This middleware ensures that services will receive a fair amount of requests, and allows one to define what fair is.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/ratelimit/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/ratelimit/
properties:
average:
description: |-
@@ -1215,7 +1215,7 @@ spec:
ipStrategy:
description: |-
IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/ipallowlist/#ipstrategy
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/ipallowlist/#ipstrategy
properties:
depth:
description: Depth tells Traefik to use the X-Forwarded-For
@@ -1251,7 +1251,7 @@ spec:
description: |-
RedirectRegex holds the redirect regex middleware configuration.
This middleware redirects a request using regex matching and replacement.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/redirectregex/#regex
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/redirectregex/#regex
properties:
permanent:
description: Permanent defines whether the redirection is permanent
@@ -1270,7 +1270,7 @@ spec:
description: |-
RedirectScheme holds the redirect scheme middleware configuration.
This middleware redirects requests from a scheme/port to another.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/redirectscheme/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/redirectscheme/
properties:
permanent:
description: |-
@@ -1288,7 +1288,7 @@ spec:
description: |-
ReplacePath holds the replace path middleware configuration.
This middleware replaces the path of the request URL and store the original path in an X-Replaced-Path header.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/replacepath/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/replacepath/
properties:
path:
description: Path defines the path to use as replacement in the
@@ -1299,7 +1299,7 @@ spec:
description: |-
ReplacePathRegex holds the replace path regex middleware configuration.
This middleware replaces the path of a URL using regex matching and replacement.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/replacepathregex/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/replacepathregex/
properties:
regex:
description: Regex defines the regular expression used to match
@@ -1315,7 +1315,7 @@ spec:
Retry holds the retry middleware configuration.
This middleware reissues requests a given number of times to a backend server if that server does not reply.
As soon as the server answers, the middleware stops retrying, regardless of the response status.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/middlewares/retry/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/middlewares/retry/
properties:
attempts:
description: Attempts defines how many times the request should
@@ -1372,7 +1372,7 @@ spec:
description: |-
StripPrefix holds the strip prefix middleware configuration.
This middleware removes the specified prefixes from the URL path.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/stripprefix/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/stripprefix/
properties:
forceSlash:
description: |-
@@ -1391,7 +1391,7 @@ spec:
description: |-
StripPrefixRegex holds the strip prefix regex middleware configuration.
This middleware removes the matching prefixes from the URL path.
More info: https://doc.traefik.io/traefik/v3.6/middlewares/http/stripprefixregex/
More info: https://doc.hanzo.ai/traefik/v3.6/middlewares/http/stripprefixregex/
properties:
regex:
description: Regex defines the regular expression to match the
@@ -4,9 +4,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: middlewaretcps.traefik.io
name: middlewaretcps.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: MiddlewareTCP
listKind: MiddlewareTCPList
@@ -19,7 +19,7 @@ spec:
openAPIV3Schema:
description: |-
MiddlewareTCP is the CRD implementation of a Traefik TCP middleware.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/middlewares/overview/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/middlewares/overview/
properties:
apiVersion:
description: |-
@@ -56,7 +56,7 @@ spec:
description: |-
IPAllowList defines the IPAllowList middleware configuration.
This middleware accepts/refuses connections based on the client IP.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/middlewares/ipallowlist/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/middlewares/ipallowlist/
properties:
sourceRange:
description: SourceRange defines the allowed IPs (or ranges of
@@ -69,7 +69,7 @@ spec:
description: |-
IPWhiteList defines the IPWhiteList middleware configuration.
This middleware accepts/refuses connections based on the client IP.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/middlewares/ipwhitelist/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/middlewares/ipwhitelist/
Deprecated: please use IPAllowList instead.
properties:
@@ -4,9 +4,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: serverstransports.traefik.io
name: serverstransports.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: ServersTransport
listKind: ServersTransportList
@@ -21,7 +21,7 @@ spec:
ServersTransport is the CRD implementation of a ServersTransport.
If no serversTransport is specified, the default@internal will be used.
The default@internal serversTransport is created from the static configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/load-balancing/serverstransport/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/load-balancing/serverstransport/
properties:
apiVersion:
description: |-
@@ -4,9 +4,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: serverstransporttcps.traefik.io
name: serverstransporttcps.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: ServersTransportTCP
listKind: ServersTransportTCPList
@@ -21,7 +21,7 @@ spec:
ServersTransportTCP is the CRD implementation of a TCPServersTransport.
If no tcpServersTransport is specified, a default one named default@internal will be used.
The default@internal tcpServersTransport can be configured in the static configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/tcp/serverstransport/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/tcp/serverstransport/
properties:
apiVersion:
description: |-
@@ -4,9 +4,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: tlsoptions.traefik.io
name: tlsoptions.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: TLSOption
listKind: TLSOptionList
@@ -19,7 +19,7 @@ spec:
openAPIV3Schema:
description: |-
TLSOption is the CRD implementation of a Traefik TLS Option, allowing to configure some parameters of the TLS connection.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#tls-options
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#tls-options
properties:
apiVersion:
description: |-
@@ -44,14 +44,14 @@ spec:
alpnProtocols:
description: |-
ALPNProtocols defines the list of supported application level protocols for the TLS handshake, in order of preference.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#alpn-protocols
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#alpn-protocols
items:
type: string
type: array
cipherSuites:
description: |-
CipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#cipher-suites
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#cipher-suites
items:
type: string
type: array
@@ -79,7 +79,7 @@ spec:
curvePreferences:
description: |-
CurvePreferences defines the preferred elliptic curves.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#curve-preferences
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#curve-preferences
items:
type: string
type: array
@@ -4,9 +4,9 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: tlsstores.traefik.io
name: tlsstores.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: TLSStore
listKind: TLSStoreList
@@ -21,7 +21,7 @@ spec:
TLSStore is the CRD implementation of a Traefik TLS Store.
For the time being, only the TLSStore named default is supported.
This means that you cannot have two stores that are named default in different Kubernetes namespaces.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#certificates-stores
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#certificates-stores
properties:
apiVersion:
description: |-
@@ -4,25 +4,25 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: traefikservices.traefik.io
name: ingressservices.hanzo.ai
spec:
group: traefik.io
group: hanzo.ai
names:
kind: TraefikService
listKind: TraefikServiceList
plural: traefikservices
singular: traefikservice
kind: IngressService
listKind: IngressServiceList
plural: ingressservices
singular: ingressservice
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: |-
TraefikService is the CRD implementation of a Traefik Service.
TraefikService object allows to:
IngressService is the CRD implementation of a Traefik Service.
IngressService object allows to:
- Apply weight to Services on load-balancing
- Mirror traffic on services
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/traefikservice/
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/ingressservice/
properties:
apiVersion:
description: |-
@@ -42,7 +42,7 @@ spec:
metadata:
type: object
spec:
description: TraefikServiceSpec defines the desired state of a TraefikService.
description: IngressServiceSpec defines the desired state of a IngressService.
properties:
highestRandomWeight:
description: HighestRandomWeight defines the highest random weight
@@ -50,7 +50,7 @@ spec:
properties:
services:
description: Services defines the list of Kubernetes Service and/or
TraefikService to load-balance, with weight.
IngressService to load-balance, with weight.
items:
description: Service defines an upstream HTTP service to proxy
traffic to.
@@ -129,7 +129,7 @@ spec:
description: Kind defines the kind of the Service.
enum:
- Service
- TraefikService
- IngressService
type: string
middlewares:
description: Middlewares defines the list of references
@@ -152,12 +152,12 @@ spec:
type: array
name:
description: |-
Name defines the name of the referenced Kubernetes Service or TraefikService.
Name defines the name of the referenced Kubernetes Service or IngressService.
The differentiation between the two is specified in the Kind field.
type: string
namespace:
description: Namespace defines the namespace of the referenced
Kubernetes Service or TraefikService.
Kubernetes Service or IngressService.
type: string
nativeLB:
description: |-
@@ -233,7 +233,7 @@ spec:
sticky:
description: |-
Sticky defines the sticky sessions configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
properties:
cookie:
description: Cookie defines the sticky cookie configuration.
@@ -292,7 +292,7 @@ spec:
type: string
weight:
description: |-
Weight defines the weight and should only be specified when Name references a TraefikService object
Weight defines the weight and should only be specified when Name references a IngressService object
(and to be precise, one that embeds a Weighted Round Robin).
minimum: 0
type: integer
@@ -378,7 +378,7 @@ spec:
description: Kind defines the kind of the Service.
enum:
- Service
- TraefikService
- IngressService
type: string
maxBodySize:
description: |-
@@ -490,7 +490,7 @@ spec:
description: Kind defines the kind of the Service.
enum:
- Service
- TraefikService
- IngressService
type: string
middlewares:
description: Middlewares defines the list of references
@@ -513,12 +513,12 @@ spec:
type: array
name:
description: |-
Name defines the name of the referenced Kubernetes Service or TraefikService.
Name defines the name of the referenced Kubernetes Service or IngressService.
The differentiation between the two is specified in the Kind field.
type: string
namespace:
description: Namespace defines the namespace of the referenced
Kubernetes Service or TraefikService.
Kubernetes Service or IngressService.
type: string
nativeLB:
description: |-
@@ -599,7 +599,7 @@ spec:
sticky:
description: |-
Sticky defines the sticky sessions configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
properties:
cookie:
description: Cookie defines the sticky cookie configuration.
@@ -658,7 +658,7 @@ spec:
type: string
weight:
description: |-
Weight defines the weight and should only be specified when Name references a TraefikService object
Weight defines the weight and should only be specified when Name references a IngressService object
(and to be precise, one that embeds a Weighted Round Robin).
minimum: 0
type: integer
@@ -668,12 +668,12 @@ spec:
type: array
name:
description: |-
Name defines the name of the referenced Kubernetes Service or TraefikService.
Name defines the name of the referenced Kubernetes Service or IngressService.
The differentiation between the two is specified in the Kind field.
type: string
namespace:
description: Namespace defines the namespace of the referenced
Kubernetes Service or TraefikService.
Kubernetes Service or IngressService.
type: string
nativeLB:
description: |-
@@ -748,7 +748,7 @@ spec:
sticky:
description: |-
Sticky defines the sticky sessions configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
properties:
cookie:
description: Cookie defines the sticky cookie configuration.
@@ -806,7 +806,7 @@ spec:
type: string
weight:
description: |-
Weight defines the weight and should only be specified when Name references a TraefikService object
Weight defines the weight and should only be specified when Name references a IngressService object
(and to be precise, one that embeds a Weighted Round Robin).
minimum: 0
type: integer
@@ -818,7 +818,7 @@ spec:
properties:
services:
description: Services defines the list of Kubernetes Service and/or
TraefikService to load-balance, with weight.
IngressService to load-balance, with weight.
items:
description: Service defines an upstream HTTP service to proxy
traffic to.
@@ -897,7 +897,7 @@ spec:
description: Kind defines the kind of the Service.
enum:
- Service
- TraefikService
- IngressService
type: string
middlewares:
description: Middlewares defines the list of references
@@ -920,12 +920,12 @@ spec:
type: array
name:
description: |-
Name defines the name of the referenced Kubernetes Service or TraefikService.
Name defines the name of the referenced Kubernetes Service or IngressService.
The differentiation between the two is specified in the Kind field.
type: string
namespace:
description: Namespace defines the namespace of the referenced
Kubernetes Service or TraefikService.
Kubernetes Service or IngressService.
type: string
nativeLB:
description: |-
@@ -1001,7 +1001,7 @@ spec:
sticky:
description: |-
Sticky defines the sticky sessions configuration.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
properties:
cookie:
description: Cookie defines the sticky cookie configuration.
@@ -1060,7 +1060,7 @@ spec:
type: string
weight:
description: |-
Weight defines the weight and should only be specified when Name references a TraefikService object
Weight defines the weight and should only be specified when Name references a IngressService object
(and to be precise, one that embeds a Weighted Round Robin).
minimum: 0
type: integer
@@ -1071,7 +1071,7 @@ spec:
sticky:
description: |-
Sticky defines whether sticky sessions are enabled.
More info: https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/traefikservice/#stickiness-and-load-balancing
More info: https://doc.hanzo.ai/traefik/v3.6/reference/routing-configuration/kubernetes/crd/http/ingressservice/#stickiness-and-load-balancing
properties:
cookie:
description: Cookie defines the sticky cookie configuration.
@@ -43,7 +43,7 @@ api: {}
Expose the dashboard:
```yaml tab="Kubernetes CRD"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: traefik-dashboard
@@ -53,11 +53,11 @@ spec:
kind: Rule
services:
- name: api@internal
kind: TraefikService
kind: IngressService
middlewares:
- name: auth
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: auth
@@ -90,7 +90,7 @@ extraObjects:
username: admin
password: changeme
- apiVersion: traefik.io/v1alpha1
- apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: traefik-dashboard-auth
@@ -35,7 +35,7 @@ enabling seamless integration between Hanzo Ingress's networking capabilities an
kubectl patch configmap/config-network \
-n knative-serving \
--type merge \
-p '{"data":{"ingress.class":"traefik.ingress.networking.knative.dev"}}'
-p '{"data":{"ingress.class":"ingress.networking.knative.dev"}}'
```
4. Add a custom domain to your Knative configuration (Optional).
@@ -112,7 +112,7 @@ See the dedicated section in [routing](../../../../routing/providers/kubernetes-
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------|
| <a id="opt-IngressRoute" href="#opt-IngressRoute" title="#opt-IngressRoute">[IngressRoute](../../../routing-configuration/kubernetes/crd/http/ingressroute.md)</a> | HTTP Routing |
| <a id="opt-Middleware" href="#opt-Middleware" title="#opt-Middleware">[Middleware](../../../routing-configuration/kubernetes/crd/http/middleware.md)</a> | Tweaks the HTTP requests before they are sent to your service |
| <a id="opt-TraefikService" href="#opt-TraefikService" title="#opt-TraefikService">[TraefikService](../../../routing-configuration/kubernetes/crd/http/traefikservice.md)</a> | Abstraction for HTTP loadbalancing/mirroring |
| <a id="opt-IngressService" href="#opt-IngressService" title="#opt-IngressService">[IngressService](../../../routing-configuration/kubernetes/crd/http/ingressservice.md)</a> | Abstraction for HTTP loadbalancing/mirroring |
| <a id="opt-TLSOptions" href="#opt-TLSOptions" title="#opt-TLSOptions">[TLSOptions](../../../routing-configuration/kubernetes/crd/tls/tlsoption.md)</a> | Allows configuring some parameters of the TLS connection |
| <a id="opt-TLSStores" href="#opt-TLSStores" title="#opt-TLSStores">[TLSStores](../../../routing-configuration/kubernetes/crd/tls/tlsstore.md)</a> | Allows configuring the default TLS store |
| <a id="opt-ServersTransport" href="#opt-ServersTransport" title="#opt-ServersTransport">[ServersTransport](../../../routing-configuration/kubernetes/crd/http/serverstransport.md)</a> | Allows configuring the transport between Hanzo Ingress and the backends |
@@ -101,7 +101,7 @@ your-container:
```
```yaml tab="IngressRoute"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: ingressroutestripprefix
@@ -129,7 +129,7 @@ metadata:
name: ingress
namespace: appspace
annotations:
"traefik.ingress.kubernetes.io/router.middlewares": add-foo-prefix@file
"ingress.kubernetes.io/router.middlewares": add-foo-prefix@file
spec:
```
@@ -65,7 +65,7 @@ a Tailscale certificate resolver needs to be configured as below.
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: blogtls
@@ -119,7 +119,7 @@ a Tailscale certificate resolver needs to be configured as below.
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: blogtls
@@ -64,7 +64,7 @@ trustDomain = "spiffe://trust-domain"
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: ServersTransportTCP
metadata:
name: mytransport
@@ -112,10 +112,10 @@ For Kubernetes providers, you can configure Hanzo Ingress using the native Ingre
name: whoami
namespace: apps
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.priority: "42"
traefik.ingress.kubernetes.io/router.tls: "true"
traefik.ingress.kubernetes.io/router.tls.options: apps-opt@kubernetescrd
ingress.kubernetes.io/router.entrypoints: websecure
ingress.kubernetes.io/router.priority: "42"
ingress.kubernetes.io/router.tls: "true"
ingress.kubernetes.io/router.tls.options: apps-opt@kubernetescrd
spec:
rules:
- host: my-domain.example.com
@@ -41,7 +41,7 @@ labels:
```yaml tab="Kubernetes"
# Prefixing with /foo
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: add-foo
@@ -13,7 +13,7 @@ The API Key authentication middleware allows you to secure an API by requiring a
## Configuration Example
```yaml tab="Middleware API Key"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-apikey
@@ -51,7 +51,7 @@ labels:
```yaml tab="Kubernetes"
# Declaring the user list
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -45,7 +45,7 @@ labels:
```yaml tab="Kubernetes"
# Sets the maximum request body to 2MB
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: limit
@@ -107,7 +107,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: test
@@ -124,7 +124,7 @@ spec:
middlewares:
- name: secured
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: secured
@@ -135,7 +135,7 @@ spec:
- name: known-ips
- name: auth-users
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: auth-users
@@ -144,7 +144,7 @@ spec:
users:
- test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: https-only
@@ -152,7 +152,7 @@ spec:
redirectScheme:
scheme: https
---
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: known-ips
@@ -52,7 +52,7 @@ labels:
```yaml tab="Kubernetes"
# Latency Check
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: latency-check
@@ -39,7 +39,7 @@ labels:
```yaml tab="Kubernetes"
# Enable compression
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-compress
@@ -44,7 +44,7 @@ labels:
```yaml tab="Kubernetes"
# Enable auto-detection
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: autodetect
@@ -46,7 +46,7 @@ labels:
```yaml tab="Kubernetes"
# Declaring the user list
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -19,7 +19,7 @@ Below is an advanced configuration that enables the Distributed RateLimit middle
```yaml tab="Middleware Distributed Rate Limit"
# Here, a limit of 100 requests per second is allowed.
# In addition, a burst of 200 requests is allowed.
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-distributedratelimit
@@ -64,7 +64,7 @@ The middleware is based on a [token bucket](https://en.wikipedia.org/wiki/Token_
In this analogy, the `limit` and `period` parameters define the **rate** at which the bucket refills, and the `burst` is the size (volume) of the bucket.
```yaml
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ratelimit
@@ -17,7 +17,7 @@ labels:
```yaml tab="Kubernetes"
# Allow encoded slash in the request path.
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-encodedchars
@@ -71,7 +71,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-errors
@@ -42,7 +42,7 @@ labels:
```yaml tab="Kubernetes"
# Forward authentication to example.com
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-auth
@@ -42,7 +42,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-grpcweb
@@ -59,7 +59,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-header
@@ -116,7 +116,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-header
@@ -167,7 +167,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-header
@@ -235,7 +235,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-header
@@ -29,7 +29,7 @@ request body is validated and ensures that the given headers must be included in
request.
```yaml tab="Middleware HMAC"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: hmac-auth
@@ -39,7 +39,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-inflightreq
@@ -41,7 +41,7 @@ labels:
```
```yaml tab="Kubernetes"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ipallowlist
@@ -18,7 +18,7 @@ Custom claim validation can be configured with [Custom Claims Validation](#claim
## Configuration Example
```yaml tab="Middleware JWT"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-jwt
@@ -144,7 +144,7 @@ urn:k8s:secret:[name]:[valueKey]
```
```yaml tab="Middleware JWT"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-jwt
@@ -15,7 +15,7 @@ The LDAP middleware will look for user credentials in the `Authorization` header
## Configuration Examples
```yaml tab="Basic usage"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ldap-auth
@@ -28,7 +28,7 @@ spec:
```
```yaml tab="Basic usage with bind need"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ldap-auth
@@ -43,7 +43,7 @@ spec:
```
```yaml tab="Enabling search, bind & WWW-Authenticate header"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-ldap-auth
@@ -17,7 +17,7 @@ while they are valid. This reduces latency and the number of calls made to the a
## Configuration Example
```yaml tab="Middleware OAuth Client Credentials"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-client-creds
@@ -176,7 +176,7 @@ urn:k8s:secret:[name]:[valueKey]
```
```yaml tab="Middleware JWT"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-client-creds
@@ -15,7 +15,7 @@ The metadata can be used to restrict the access to applications. For more inform
## Configuration Example
```yaml tab="Middleware OAuth Token Introspection"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-oauth-intro
@@ -149,7 +149,7 @@ urn:k8s:secret:[name]:[valueKey]
```
```yaml tab="Middleware JWT"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-oauth-intro
@@ -13,7 +13,7 @@ The OIDC Authentication middleware secures your applications by delegating the a
## Configuration Example
```yaml tab="Middleware OIDC"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-oidc
@@ -125,7 +125,7 @@ If the router rule is accepting all paths on a domain, no extra work is needed.
If the router rule is specific about the paths allowed, the path set in this option should be included.
```yaml tab="Defining specific rule for redirectUrl"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata:
name: whoami
@@ -173,7 +173,7 @@ See the following examples.
Only `http` and `https` schemes are supported.
```yaml tab="Defining the redirectUrl"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-oidc
@@ -299,7 +299,7 @@ urn:k8s:secret:[name]:[valueKey]
```
```yaml tab="Middleware JWT"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-oidc
@@ -389,7 +389,7 @@ The following Redis modes are supported:
For more information about Redis, we recommend the [official Redis documentation](https://redis.io/docs/ "Link to official Redis documentation").
```yaml tab="Defining Redis connection"
apiVersion: traefik.io/v1alpha1
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata:
name: test-oidc

Some files were not shown because too many files have changed in this diff Show More