diff --git a/Dockerfile b/Dockerfile index fcf9c49b9..0e08e72da 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # syntax=docker/dockerfile:1.2 -FROM alpine:3.21 +FROM alpine:3.22 RUN apk add --no-cache --no-progress ca-certificates tzdata diff --git a/docs/check.Dockerfile b/docs/check.Dockerfile index 41a389f69..2a03cf8af 100644 --- a/docs/check.Dockerfile +++ b/docs/check.Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.21 +FROM alpine:3.22 RUN apk --no-cache --no-progress add \ build-base \ @@ -9,9 +9,7 @@ RUN apk --no-cache --no-progress add \ ruby \ ruby-bigdecimal \ ruby-dev \ - ruby-etc \ ruby-ffi \ - ruby-json \ zlib-dev RUN gem install nokogiri --version 1.18.6 --no-document -- --use-system-libraries diff --git a/docs/content/deprecation/releases.md b/docs/content/deprecation/releases.md index 1a5fc0b03..0c25265bd 100644 --- a/docs/content/deprecation/releases.md +++ b/docs/content/deprecation/releases.md @@ -6,11 +6,12 @@ Below is a non-exhaustive list of versions and their maintenance status: | Version | Release Date | Active Support | Security Support | |---------|--------------|--------------------|-------------------| -| 3.3 | Jan 06, 2025 | Yes | Yes | +| 3.4 | May 05, 2025 | Yes | Yes | +| 3.3 | Jan 06, 2025 | Ended May 05, 2025 | No | | 3.2 | Oct 28, 2024 | Ended Jan 06, 2025 | No | | 3.1 | Jul 15, 2024 | Ended Oct 28, 2024 | No | | 3.0 | Apr 29, 2024 | Ended Jul 15, 2024 | No | -| 2.11 | Feb 12, 2024 | Ends Apr 29, 2025 | Ends Feb 01, 2026 | +| 2.11 | Feb 12, 2024 | Ended Apr 29, 2025 | Ends Feb 01, 2026 | | 2.10 | Apr 24, 2023 | Ended Feb 12, 2024 | No | | 2.9 | Oct 03, 2022 | Ended Apr 24, 2023 | No | | 2.8 | Jun 29, 2022 | Ended Oct 03, 2022 | No | diff --git a/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml b/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml index 4a471058f..59fc65910 100644 --- a/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml +++ b/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml @@ -1931,7 +1931,7 @@ spec: properties: permanent: description: Permanent defines whether the redirection is permanent - (301). + (308). type: boolean regex: description: Regex defines the regex used to match and capture @@ -1950,7 +1950,7 @@ spec: properties: permanent: description: Permanent defines whether the redirection is permanent - (301). + (308). type: boolean port: description: Port defines the port of the new URL. diff --git a/docs/content/reference/dynamic-configuration/kv-ref.md b/docs/content/reference/dynamic-configuration/kv-ref.md index 65f3b8760..28dcb7169 100644 --- a/docs/content/reference/dynamic-configuration/kv-ref.md +++ b/docs/content/reference/dynamic-configuration/kv-ref.md @@ -2,6 +2,9 @@ CODE GENERATED AUTOMATICALLY THIS FILE MUST NOT BE EDITED BY HAND --> + +| Key (Path) | Value | +|------------|-------| | `traefik/http/middlewares/Middleware01/addPrefix/prefix` | `foobar` | | `traefik/http/middlewares/Middleware02/basicAuth/headerField` | `foobar` | | `traefik/http/middlewares/Middleware02/basicAuth/realm` | `foobar` | diff --git a/docs/content/reference/dynamic-configuration/kv.md b/docs/content/reference/dynamic-configuration/kv.md index 8db8415e5..71fe4ab06 100644 --- a/docs/content/reference/dynamic-configuration/kv.md +++ b/docs/content/reference/dynamic-configuration/kv.md @@ -8,6 +8,4 @@ description: "Read the technical documentation to learn the Traefik Dynamic Conf Dynamic configuration with KV stores. {: .subtitle } -| Key (Path) | Value | -|----------------------------------------------------------------------------------------------|-------------| --8<-- "content/reference/dynamic-configuration/kv-ref.md" diff --git a/docs/content/reference/dynamic-configuration/traefik.io_middlewares.yaml b/docs/content/reference/dynamic-configuration/traefik.io_middlewares.yaml index f45b0b68f..7b38df587 100644 --- a/docs/content/reference/dynamic-configuration/traefik.io_middlewares.yaml +++ b/docs/content/reference/dynamic-configuration/traefik.io_middlewares.yaml @@ -1163,7 +1163,7 @@ spec: properties: permanent: description: Permanent defines whether the redirection is permanent - (301). + (308). type: boolean regex: description: Regex defines the regex used to match and capture @@ -1182,7 +1182,7 @@ spec: properties: permanent: description: Permanent defines whether the redirection is permanent - (301). + (308). type: boolean port: description: Port defines the port of the new URL. diff --git a/docs/docs.Dockerfile b/docs/docs.Dockerfile index e15440a36..99e963cf4 100644 --- a/docs/docs.Dockerfile +++ b/docs/docs.Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.21 +FROM alpine:3.22 ENV PATH="${PATH}:/venv/bin" diff --git a/integration/fixtures/k8s/01-traefik-crd.yml b/integration/fixtures/k8s/01-traefik-crd.yml index 4a471058f..59fc65910 100644 --- a/integration/fixtures/k8s/01-traefik-crd.yml +++ b/integration/fixtures/k8s/01-traefik-crd.yml @@ -1931,7 +1931,7 @@ spec: properties: permanent: description: Permanent defines whether the redirection is permanent - (301). + (308). type: boolean regex: description: Regex defines the regex used to match and capture @@ -1950,7 +1950,7 @@ spec: properties: permanent: description: Permanent defines whether the redirection is permanent - (301). + (308). type: boolean port: description: Port defines the port of the new URL. diff --git a/internal/gendoc.go b/internal/gendoc.go index 67eb64003..bfbc4b905 100644 --- a/internal/gendoc.go +++ b/internal/gendoc.go @@ -338,6 +338,11 @@ func genKVDynConfDoc(outputFile string) { CODE GENERATED AUTOMATICALLY THIS FILE MUST NOT BE EDITED BY HAND --> +`) + + _, _ = fmt.Fprintf(file, ` +| Key (Path) | Value | +|------------|-------| `) for _, k := range keys { diff --git a/pkg/config/dynamic/middlewares.go b/pkg/config/dynamic/middlewares.go index 0f45e62de..bfc850f65 100644 --- a/pkg/config/dynamic/middlewares.go +++ b/pkg/config/dynamic/middlewares.go @@ -641,7 +641,7 @@ type RedirectRegex struct { Regex string `json:"regex,omitempty" toml:"regex,omitempty" yaml:"regex,omitempty"` // Replacement defines how to modify the URL to have the new target URL. Replacement string `json:"replacement,omitempty" toml:"replacement,omitempty" yaml:"replacement,omitempty"` - // Permanent defines whether the redirection is permanent (301). + // Permanent defines whether the redirection is permanent (308). Permanent bool `json:"permanent,omitempty" toml:"permanent,omitempty" yaml:"permanent,omitempty" export:"true"` } @@ -655,7 +655,7 @@ type RedirectScheme struct { Scheme string `json:"scheme,omitempty" toml:"scheme,omitempty" yaml:"scheme,omitempty" export:"true"` // Port defines the port of the new URL. Port string `json:"port,omitempty" toml:"port,omitempty" yaml:"port,omitempty" export:"true"` - // Permanent defines whether the redirection is permanent (301). + // Permanent defines whether the redirection is permanent (308). Permanent bool `json:"permanent,omitempty" toml:"permanent,omitempty" yaml:"permanent,omitempty" export:"true"` } diff --git a/pkg/provider/kv/redis/redis.go b/pkg/provider/kv/redis/redis.go index 874a6b1a1..c6e357f03 100644 --- a/pkg/provider/kv/redis/redis.go +++ b/pkg/provider/kv/redis/redis.go @@ -21,14 +21,14 @@ type Provider struct { Username string `description:"Username for authentication." json:"username,omitempty" toml:"username,omitempty" yaml:"username,omitempty" loggable:"false"` Password string `description:"Password for authentication." json:"password,omitempty" toml:"password,omitempty" yaml:"password,omitempty" loggable:"false"` DB int `description:"Database to be selected after connecting to the server." json:"db,omitempty" toml:"db,omitempty" yaml:"db,omitempty"` - Sentinel *Sentinel `description:"Enable Sentinel support." json:"sentinel,omitempty" toml:"sentinel,omitempty" yaml:"sentinel,omitempty"` + Sentinel *Sentinel `description:"Enable Sentinel support." json:"sentinel,omitempty" toml:"sentinel,omitempty" yaml:"sentinel,omitempty" export:"true"` } // Sentinel holds the Redis Sentinel configuration. type Sentinel struct { MasterName string `description:"Name of the master." json:"masterName,omitempty" toml:"masterName,omitempty" yaml:"masterName,omitempty" export:"true"` - Username string `description:"Username for Sentinel authentication." json:"username,omitempty" toml:"username,omitempty" yaml:"username,omitempty" export:"true"` - Password string `description:"Password for Sentinel authentication." json:"password,omitempty" toml:"password,omitempty" yaml:"password,omitempty" export:"true"` + Username string `description:"Username for Sentinel authentication." json:"username,omitempty" toml:"username,omitempty" yaml:"username,omitempty" loggable:"false"` + Password string `description:"Password for Sentinel authentication." json:"password,omitempty" toml:"password,omitempty" yaml:"password,omitempty" loggable:"false"` LatencyStrategy bool `description:"Defines whether to route commands to the closest master or replica nodes (mutually exclusive with RandomStrategy and ReplicaStrategy)." json:"latencyStrategy,omitempty" toml:"latencyStrategy,omitempty" yaml:"latencyStrategy,omitempty" export:"true"` RandomStrategy bool `description:"Defines whether to route commands randomly to master or replica nodes (mutually exclusive with LatencyStrategy and ReplicaStrategy)." json:"randomStrategy,omitempty" toml:"randomStrategy,omitempty" yaml:"randomStrategy,omitempty" export:"true"`