Moves HTTP/3 outside the experimental section
This commit is contained in:
parent
517917cd7c
commit
fdd3f2abef
8 changed files with 28 additions and 56 deletions
|
@ -50,3 +50,8 @@ and should be explicitly combined using logical operators to mimic previous beha
|
||||||
|
|
||||||
In v3, the `Content-Type` header is not auto-detected anymore when it is not set by the backend.
|
In v3, the `Content-Type` header is not auto-detected anymore when it is not set by the backend.
|
||||||
One should use the `ContentType` middleware to enable the `Content-Type` header value auto-detection.
|
One should use the `ContentType` middleware to enable the `Content-Type` header value auto-detection.
|
||||||
|
|
||||||
|
## HTTP/3
|
||||||
|
|
||||||
|
In v3, HTTP/3 is no longer an experimental feature.
|
||||||
|
The `experimental.http3` option has been removed from the static configuration.
|
||||||
|
|
|
@ -189,9 +189,6 @@ WriteTimeout is the maximum duration before timing out writes of the response. I
|
||||||
`--entrypoints.<name>.udp.timeout`:
|
`--entrypoints.<name>.udp.timeout`:
|
||||||
Timeout defines how long to wait on an idle session before releasing the related resources. (Default: ```3```)
|
Timeout defines how long to wait on an idle session before releasing the related resources. (Default: ```3```)
|
||||||
|
|
||||||
`--experimental.http3`:
|
|
||||||
Enable HTTP3. (Default: ```false```)
|
|
||||||
|
|
||||||
`--experimental.hub`:
|
`--experimental.hub`:
|
||||||
Enable the Traefik Hub provider. (Default: ```false```)
|
Enable the Traefik Hub provider. (Default: ```false```)
|
||||||
|
|
||||||
|
|
|
@ -189,9 +189,6 @@ WriteTimeout is the maximum duration before timing out writes of the response. I
|
||||||
`TRAEFIK_ENTRYPOINTS_<NAME>_UDP_TIMEOUT`:
|
`TRAEFIK_ENTRYPOINTS_<NAME>_UDP_TIMEOUT`:
|
||||||
Timeout defines how long to wait on an idle session before releasing the related resources. (Default: ```3```)
|
Timeout defines how long to wait on an idle session before releasing the related resources. (Default: ```3```)
|
||||||
|
|
||||||
`TRAEFIK_EXPERIMENTAL_HTTP3`:
|
|
||||||
Enable HTTP3. (Default: ```false```)
|
|
||||||
|
|
||||||
`TRAEFIK_EXPERIMENTAL_HUB`:
|
`TRAEFIK_EXPERIMENTAL_HUB`:
|
||||||
Enable the Traefik Hub provider. (Default: ```false```)
|
Enable the Traefik Hub provider. (Default: ```false```)
|
||||||
|
|
||||||
|
|
|
@ -461,7 +461,6 @@
|
||||||
|
|
||||||
[experimental]
|
[experimental]
|
||||||
kubernetesGateway = true
|
kubernetesGateway = true
|
||||||
http3 = true
|
|
||||||
hub = true
|
hub = true
|
||||||
[experimental.plugins]
|
[experimental.plugins]
|
||||||
[experimental.plugins.Descriptor0]
|
[experimental.plugins.Descriptor0]
|
||||||
|
|
|
@ -489,7 +489,6 @@ hub:
|
||||||
key: foobar
|
key: foobar
|
||||||
experimental:
|
experimental:
|
||||||
kubernetesGateway: true
|
kubernetesGateway: true
|
||||||
http3: true
|
|
||||||
hub: true
|
hub: true
|
||||||
plugins:
|
plugins:
|
||||||
Descriptor0:
|
Descriptor0:
|
||||||
|
|
|
@ -312,39 +312,32 @@ entryPoints:
|
||||||
#### `http3`
|
#### `http3`
|
||||||
|
|
||||||
`http3` enables HTTP/3 protocol on the entryPoint.
|
`http3` enables HTTP/3 protocol on the entryPoint.
|
||||||
HTTP/3 requires a TCP entryPoint, as HTTP/3 always starts as a TCP connection that then gets upgraded to UDP.
|
HTTP/3 requires a TCP entryPoint,
|
||||||
In most scenarios, this entryPoint is the same as the one used for TLS traffic.
|
as HTTP/3 always starts as a TCP connection that then gets upgraded to UDP.
|
||||||
|
In most scenarios,
|
||||||
|
this entryPoint is the same as the one used for TLS traffic.
|
||||||
|
|
||||||
|
```yaml tab="File (YAML)"
|
||||||
|
entryPoints:
|
||||||
|
name:
|
||||||
|
http3: {}
|
||||||
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints.name.http3]
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash tab="CLI"
|
||||||
|
--entrypoints.name.http3
|
||||||
|
```
|
||||||
|
|
||||||
??? info "HTTP/3 uses UDP+TLS"
|
??? info "HTTP/3 uses UDP+TLS"
|
||||||
|
|
||||||
As HTTP/3 uses UDP, you can't have a TCP entryPoint with HTTP/3 on the same port as a UDP entryPoint.
|
As HTTP/3 actually uses UDP, when traefik is configured with a TCP entryPoint on port N with HTTP/3 enabled,
|
||||||
Since HTTP/3 requires the use of TLS, only routers with TLS enabled will be usable with HTTP/3.
|
the underlying HTTP/3 server that is started automatically listens on UDP port N too. As a consequence,
|
||||||
|
it means port N cannot be used by another UDP entryPoint.
|
||||||
!!! warning "Enabling Experimental HTTP/3"
|
Since HTTP/3 requires the use of TLS,
|
||||||
|
only routers with TLS enabled will be usable with HTTP/3.
|
||||||
As the HTTP/3 spec is still in draft, HTTP/3 support in Traefik is an experimental feature and needs to be activated
|
|
||||||
in the experimental section of the static configuration.
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
|
||||||
experimental:
|
|
||||||
http3: true
|
|
||||||
|
|
||||||
entryPoints:
|
|
||||||
name:
|
|
||||||
http3: {}
|
|
||||||
```
|
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[experimental]
|
|
||||||
http3 = true
|
|
||||||
|
|
||||||
[entryPoints.name.http3]
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash tab="CLI"
|
|
||||||
--experimental.http3=true
|
|
||||||
--entrypoints.name.http3
|
|
||||||
```
|
|
||||||
|
|
||||||
#### `advertisedPort`
|
#### `advertisedPort`
|
||||||
|
|
||||||
|
@ -355,9 +348,6 @@ It can be used to override the authority in the `alt-svc` header, for example if
|
||||||
!!! info "http3.advertisedPort"
|
!!! info "http3.advertisedPort"
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
experimental:
|
|
||||||
http3: true
|
|
||||||
|
|
||||||
entryPoints:
|
entryPoints:
|
||||||
name:
|
name:
|
||||||
http3:
|
http3:
|
||||||
|
@ -365,15 +355,11 @@ It can be used to override the authority in the `alt-svc` header, for example if
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
[experimental]
|
|
||||||
http3 = true
|
|
||||||
|
|
||||||
[entryPoints.name.http3]
|
[entryPoints.name.http3]
|
||||||
advertisedPort = 443
|
advertisedPort = 443
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--experimental.http3=true
|
|
||||||
--entrypoints.name.http3.advertisedport=443
|
--entrypoints.name.http3.advertisedport=443
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,5 @@ type Experimental struct {
|
||||||
LocalPlugins map[string]plugins.LocalDescriptor `description:"Local plugins configuration." json:"localPlugins,omitempty" toml:"localPlugins,omitempty" yaml:"localPlugins,omitempty" export:"true"`
|
LocalPlugins map[string]plugins.LocalDescriptor `description:"Local plugins configuration." json:"localPlugins,omitempty" toml:"localPlugins,omitempty" yaml:"localPlugins,omitempty" export:"true"`
|
||||||
|
|
||||||
KubernetesGateway bool `description:"Allow the Kubernetes gateway api provider usage." json:"kubernetesGateway,omitempty" toml:"kubernetesGateway,omitempty" yaml:"kubernetesGateway,omitempty" export:"true"`
|
KubernetesGateway bool `description:"Allow the Kubernetes gateway api provider usage." json:"kubernetesGateway,omitempty" toml:"kubernetesGateway,omitempty" yaml:"kubernetesGateway,omitempty" export:"true"`
|
||||||
HTTP3 bool `description:"Enable HTTP3." json:"http3,omitempty" toml:"http3,omitempty" yaml:"http3,omitempty" export:"true"`
|
|
||||||
Hub bool `description:"Enable the Traefik Hub provider." json:"hub,omitempty" toml:"hub,omitempty" yaml:"hub,omitempty" export:"true"`
|
Hub bool `description:"Enable the Traefik Hub provider." json:"hub,omitempty" toml:"hub,omitempty" yaml:"hub,omitempty" export:"true"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -268,16 +268,6 @@ func (c *Configuration) SetEffectiveConfiguration() {
|
||||||
c.Providers.KubernetesGateway = nil
|
c.Providers.KubernetesGateway = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.Experimental == nil || !c.Experimental.HTTP3 {
|
|
||||||
for epName, ep := range c.EntryPoints {
|
|
||||||
if ep.HTTP3 != nil {
|
|
||||||
ep.HTTP3 = nil
|
|
||||||
log.Debug().Str(logs.EntryPointName, epName).
|
|
||||||
Msgf("Disabling HTTP3 configuration for entryPoint %q: HTTP3 is disabled in the experimental configuration section", epName)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Configure Gateway API provider
|
// Configure Gateway API provider
|
||||||
if c.Providers.KubernetesGateway != nil {
|
if c.Providers.KubernetesGateway != nil {
|
||||||
log.Debug().Msg("Experimental Kubernetes Gateway provider has been activated")
|
log.Debug().Msg("Experimental Kubernetes Gateway provider has been activated")
|
||||||
|
|
Loading…
Reference in a new issue