Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
e20d3d9
chore: cleanups from #6597 (#6647)
jukie Jul 30, 2025
40eb9ee
fix: set order for grpc_web and grpc_stats filters (#6626)
zhaohuabing Jul 31, 2025
a6a9868
fix: nil pointer when InsecureSkipVerify is true (#6652)
zhaohuabing Jul 31, 2025
973746e
fix: allow imageRepository contains port (#6658) (#6660)
arkodg Aug 1, 2025
bd10762
docs: improve policy concepts section (#6663)
arkodg Aug 1, 2025
486d5be
docs: observability pre req not required in admin console page (#6662)
arkodg Aug 1, 2025
9fc06ab
docs: xds name scheme v2 (#6656)
zhaohuabing Aug 1, 2025
e6baafa
docs: highlight wait step (#6665)
zirain Aug 1, 2025
9dcbd3e
fix: populate status for custom backendRef not found (#6670)
Xunzhuo Aug 1, 2025
c14c4e8
fix: xds name schema v2 (#6638)
zhaohuabing Aug 2, 2025
46df640
docs: expand Gateway Namespace Mode doc on client/server auth (#6616)
cnvergence Aug 2, 2025
5541394
increase earlyRequestHeaders from 16 to 64 (#6673)
arkodg Aug 2, 2025
f5a87f8
docs: skipping TLS verification (#6653)
zhaohuabing Aug 2, 2025
fe92679
feat: add listener metadata (#6639)
zhaohuabing Aug 2, 2025
b8878d5
fix: Fix BTP ZoneAware translation (#6668)
jukie Aug 3, 2025
56aa0e7
docs: unhide zoneaware api for docs (#6683)
jukie Aug 3, 2025
0d4d9de
watchable: use Store directly instead of HandleStore wrapper (#6680)
arkodg Aug 3, 2025
3da0c91
docs: Update Zone Aware Routing for BackendTrafficPolicy configuratio…
jukie Aug 4, 2025
89961d5
combine the xds-translator and xds-server runner into one (#6586)
arkodg Aug 4, 2025
2c1fbfc
build(deps): bump the gomod group across 1 directory with 6 updates (…
dependabot[bot] Aug 4, 2025
ce48382
fix: controller panic when reloading config (#6688)
zirain Aug 4, 2025
c280d5d
use gwapiv1.Duration instead of metav1.Duration (#6664)
arkodg Aug 4, 2025
9055f04
fix: don't block deployment creating when missing secret in EnvoyProx…
zirain Aug 5, 2025
123289f
[release/v1.5] release notes for rc.2 (#6697)
zirain Aug 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v1.5.0-rc.1
v1.5.0-rc.2
3 changes: 1 addition & 2 deletions api/v1alpha1/clienttrafficpolicy_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ package v1alpha1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
gwapiv1 "sigs.k8s.io/gateway-api/apis/v1"
gwapiv1a2 "sigs.k8s.io/gateway-api/apis/v1alpha2"
)

Expand Down Expand Up @@ -159,7 +158,7 @@ type HeaderSettings struct {
// routing, tracing and built-in header manipulation.
//
// +optional
EarlyRequestHeaders *gwapiv1.HTTPHeaderFilter `json:"earlyRequestHeaders,omitempty"`
EarlyRequestHeaders *HTTPHeaderFilter `json:"earlyRequestHeaders,omitempty"`
}

// WithUnderscoresAction configures the action to take when an HTTP header with underscores
Expand Down
4 changes: 2 additions & 2 deletions api/v1alpha1/cors_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

package v1alpha1

import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
import gwapiv1 "sigs.k8s.io/gateway-api/apis/v1"

// Origin is defined by the scheme (protocol), hostname (domain), and port of
// the URL used to access it. The hostname can be "precise" which is just the
Expand Down Expand Up @@ -61,7 +61,7 @@ type CORS struct {
// It specifies the value in the Access-Control-Max-Age CORS response header..
//
// +optional
MaxAge *metav1.Duration `json:"maxAge,omitempty"`
MaxAge *gwapiv1.Duration `json:"maxAge,omitempty"`

// AllowCredentials indicates whether a request can include user credentials
// like cookies, authentication headers, or TLS client certificates.
Expand Down
8 changes: 6 additions & 2 deletions api/v1alpha1/dns_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

package v1alpha1

import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
import gwapiv1 "sigs.k8s.io/gateway-api/apis/v1"

// DNSLookupFamily defines the behavior of Envoy when resolving DNS for hostnames
// +enum
Expand All @@ -31,10 +31,14 @@ const (
type DNS struct {
// DNSRefreshRate specifies the rate at which DNS records should be refreshed.
// Defaults to 30 seconds.
DNSRefreshRate *metav1.Duration `json:"dnsRefreshRate,omitempty"`
//
// +optional
DNSRefreshRate *gwapiv1.Duration `json:"dnsRefreshRate,omitempty"`
// RespectDNSTTL indicates whether the DNS Time-To-Live (TTL) should be respected.
// If the value is set to true, the DNS refresh rate will be set to the resource record’s TTL.
// Defaults to true.
//
// +optional
RespectDNSTTL *bool `json:"respectDnsTtl,omitempty"`
// LookupFamily determines how Envoy would resolve DNS for Routes where the backend is specified as a fully qualified domain name (FQDN).
// If set, this configuration overrides other defaults.
Expand Down
21 changes: 16 additions & 5 deletions api/v1alpha1/envoygateway_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,13 +143,21 @@ type KubernetesClientRateLimit struct {
// LeaderElection defines the desired leader election settings.
type LeaderElection struct {
// LeaseDuration defines the time non-leader contenders will wait before attempting to claim leadership.
// It's based on the timestamp of the last acknowledged signal. The default setting is 15 seconds.
// It's based on the timestamp of the last acknowledged signal.
// The default setting is 15 seconds.
//
// +optional
LeaseDuration *gwapiv1.Duration `json:"leaseDuration,omitempty"`
// RenewDeadline represents the time frame within which the current leader will attempt to renew its leadership
// status before relinquishing its position. The default setting is 10 seconds.
// status before relinquishing its position.
// The default setting is 10 seconds.
//
// +optional
RenewDeadline *gwapiv1.Duration `json:"renewDeadline,omitempty"`
// RetryPeriod denotes the interval at which LeaderElector clients should perform action retries.
// The default setting is 2 seconds.
//
// +optional
RetryPeriod *gwapiv1.Duration `json:"retryPeriod,omitempty"`
// Disable provides the option to turn off leader election, which is enabled by default.
Disable *bool `json:"disable,omitempty"`
Expand All @@ -173,7 +181,7 @@ type EnvoyGatewayLogging struct {
}

// EnvoyGatewayLogComponent defines a component that supports a configured logging level.
// +kubebuilder:validation:Enum=default;provider;gateway-api;xds-translator;xds-server;infrastructure;global-ratelimit
// +kubebuilder:validation:Enum=default;provider;gateway-api;xds-translator;xds-server;xds;infrastructure;global-ratelimit
type EnvoyGatewayLogComponent string

const (
Expand All @@ -193,6 +201,9 @@ const (
// LogComponentXdsServerRunner defines the "xds-server" runner component.
LogComponentXdsServerRunner EnvoyGatewayLogComponent = "xds-server"

// LogComponentXdsRunner defines the "xds" runner component.
LogComponentXdsRunner EnvoyGatewayLogComponent = "xds"

// LogComponentInfrastructureRunner defines the "infrastructure" runner component.
LogComponentInfrastructureRunner EnvoyGatewayLogComponent = "infrastructure"

Expand Down Expand Up @@ -432,9 +443,9 @@ type RateLimit struct {

// Timeout specifies the timeout period for the proxy to access the ratelimit server
// If not set, timeout is 20ms.
//
// +optional
// +kubebuilder:validation:Format=duration
Timeout *metav1.Duration `json:"timeout,omitempty"`
Timeout *gwapiv1.Duration `json:"timeout,omitempty"`

// FailClosed is a switch used to control the flow of traffic
// when the response from the ratelimit server cannot be obtained.
Expand Down
10 changes: 8 additions & 2 deletions api/v1alpha1/envoyproxy_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,12 @@ const (
// EnvoyFilterRateLimit defines the Envoy HTTP rate limit filter.
EnvoyFilterRateLimit EnvoyFilter = "envoy.filters.http.ratelimit"

// EnvoyFilterGRPCWeb defines the Envoy HTTP gRPC-web filter.
EnvoyFilterGRPCWeb EnvoyFilter = "envoy.filters.http.grpc_web"

// EnvoyFilterGRPCStats defines the Envoy HTTP gRPC stats filter.
EnvoyFilterGRPCStats EnvoyFilter = "envoy.filters.http.grpc_stats"

// EnvoyFilterCustomResponse defines the Envoy HTTP custom response filter.
EnvoyFilterCustomResponse EnvoyFilter = "envoy.filters.http.custom_response"

Expand Down Expand Up @@ -344,12 +350,12 @@ type ShutdownConfig struct {
// If unspecified, defaults to 60 seconds.
//
// +optional
DrainTimeout *metav1.Duration `json:"drainTimeout,omitempty"`
DrainTimeout *gwapiv1.Duration `json:"drainTimeout,omitempty"`
// MinDrainDuration defines the minimum drain duration allowing time for endpoint deprogramming to complete.
// If unspecified, defaults to 10 seconds.
//
// +optional
MinDrainDuration *metav1.Duration `json:"minDrainDuration,omitempty"`
MinDrainDuration *gwapiv1.Duration `json:"minDrainDuration,omitempty"`
}

// +kubebuilder:validation:XValidation:rule="((has(self.envoyDeployment) && !has(self.envoyDaemonSet)) || (!has(self.envoyDeployment) && has(self.envoyDaemonSet))) || (!has(self.envoyDeployment) && !has(self.envoyDaemonSet))",message="only one of envoyDeployment or envoyDaemonSet can be specified"
Expand Down
4 changes: 2 additions & 2 deletions api/v1alpha1/fault_injection.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

package v1alpha1

import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
import gwapiv1 "sigs.k8s.io/gateway-api/apis/v1"

// FaultInjection defines the fault injection policy to be applied. This configuration can be used to
// inject delays and abort requests to mimic failure scenarios such as service failures and overloads
Expand All @@ -29,7 +29,7 @@ type FaultInjectionDelay struct {
// FixedDelay specifies the fixed delay duration
//
// +required
FixedDelay *metav1.Duration `json:"fixedDelay"`
FixedDelay *gwapiv1.Duration `json:"fixedDelay"`

// Percentage specifies the percentage of requests to be delayed. Default 100%, if set 0, no requests will be delayed. Accuracy to 0.0001%.
// +optional
Expand Down
18 changes: 5 additions & 13 deletions api/v1alpha1/healthcheck_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@

package v1alpha1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
gwapiv1 "sigs.k8s.io/gateway-api/apis/v1"
)
import gwapiv1 "sigs.k8s.io/gateway-api/apis/v1"

// HealthCheck configuration to decide which endpoints
// are healthy and can be used for routing.
Expand Down Expand Up @@ -42,10 +39,9 @@ type PassiveHealthCheck struct {

// Interval defines the time between passive health checks.
//
// +kubebuilder:validation:Format=duration
// +kubebuilder:default="3s"
// +optional
Interval *metav1.Duration `json:"interval,omitempty"`
Interval *gwapiv1.Duration `json:"interval,omitempty"`

// ConsecutiveLocalOriginFailures sets the number of consecutive local origin failures triggering ejection.
// Parameter takes effect only when split_external_local_origin_errors is set to true.
Expand All @@ -68,10 +64,9 @@ type PassiveHealthCheck struct {

// BaseEjectionTime defines the base duration for which a host will be ejected on consecutive failures.
//
// +kubebuilder:validation:Format=duration
// +kubebuilder:default="30s"
// +optional
BaseEjectionTime *metav1.Duration `json:"baseEjectionTime,omitempty"`
BaseEjectionTime *gwapiv1.Duration `json:"baseEjectionTime,omitempty"`

// MaxEjectionPercent sets the maximum percentage of hosts in a cluster that can be ejected.
//
Expand All @@ -90,22 +85,19 @@ type PassiveHealthCheck struct {
type ActiveHealthCheck struct {
// Timeout defines the time to wait for a health check response.
//
// +kubebuilder:validation:Format=duration
// +kubebuilder:default="1s"
// +optional
Timeout *metav1.Duration `json:"timeout"`
Timeout *gwapiv1.Duration `json:"timeout"`

// Interval defines the time between active health checks.
//
// +kubebuilder:validation:Format=duration
// +kubebuilder:default="3s"
// +optional
Interval *metav1.Duration `json:"interval"`
Interval *gwapiv1.Duration `json:"interval"`

// InitialJitter defines the maximum time Envoy will wait before the first health check.
// Envoy will randomly select a value between 0 and the initial jitter value.
//
// +kubebuilder:validation:Format=duration
// +optional
InitialJitter *gwapiv1.Duration `json:"initialJitter,omitempty"`

Expand Down
10 changes: 3 additions & 7 deletions api/v1alpha1/loadbalancer_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

package v1alpha1

import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
import gwapiv1 "sigs.k8s.io/gateway-api/apis/v1"

// LoadBalancer defines the load balancer policy to be applied.
// +union
Expand Down Expand Up @@ -47,7 +47,6 @@ type LoadBalancer struct {
// ZoneAware defines the configuration related to the distribution of requests between locality zones.
//
// +optional
// +notImplementedHide
ZoneAware *ZoneAware `json:"zoneAware,omitempty"`
}

Expand Down Expand Up @@ -120,7 +119,7 @@ type Cookie struct {
// Max-Age attribute value.
//
// +optional
TTL *metav1.Duration `json:"ttl,omitempty"`
TTL *gwapiv1.Duration `json:"ttl,omitempty"`
// Additional Attributes to set for the generated cookie.
//
// +optional
Expand All @@ -147,7 +146,7 @@ type SlowStart struct {
// Currently only supports linear growth of traffic. For additional details,
// see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig
// +kubebuilder:validation:Required
Window *metav1.Duration `json:"window"`
Window *gwapiv1.Duration `json:"window"`
// TODO: Add support for non-linear traffic increases based on user usage.
}

Expand All @@ -156,7 +155,6 @@ type ZoneAware struct {
// PreferLocalZone configures zone-aware routing to prefer sending traffic to the local locality zone.
//
// +optional
// +notImplementedHide
PreferLocal *PreferLocalZone `json:"preferLocal,omitempty"`
}

Expand All @@ -166,13 +164,11 @@ type PreferLocalZone struct {
// which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
//
// +optional
// +notImplementedHide
Force *ForceLocalZone `json:"force,omitempty"`

// MinEndpointsThreshold is the minimum number of total upstream endpoints across all zones required to enable zone-aware routing.
//
// +optional
// +notImplementedHide
MinEndpointsThreshold *uint64 `json:"minEndpointsThreshold,omitempty"`
}

Expand Down
6 changes: 3 additions & 3 deletions api/v1alpha1/oidc_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
package v1alpha1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
gwapiv1 "sigs.k8s.io/gateway-api/apis/v1"
)

Expand Down Expand Up @@ -110,7 +109,7 @@ type OIDC struct {
// OAuth flow will fail.
//
// +optional
DefaultTokenTTL *metav1.Duration `json:"defaultTokenTTL,omitempty"`
DefaultTokenTTL *gwapiv1.Duration `json:"defaultTokenTTL,omitempty"`

// RefreshToken indicates whether the Envoy should automatically refresh the
// id token and access token when they expire.
Expand All @@ -127,8 +126,9 @@ type OIDC struct {
//
// If not specified, defaults to 604800s (one week).
// Note: this field is only applicable when the "refreshToken" field is set to true.
//
// +optional
DefaultRefreshTokenTTL *metav1.Duration `json:"defaultRefreshTokenTTL,omitempty"`
DefaultRefreshTokenTTL *gwapiv1.Duration `json:"defaultRefreshTokenTTL,omitempty"`

// Skips OIDC authentication when the request contains a header that will be extracted by the JWT filter. Unless
// explicitly stated otherwise in the extractFrom field, this will be the "Authorization: Bearer ..." header.
Expand Down
12 changes: 5 additions & 7 deletions api/v1alpha1/retry_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
package v1alpha1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
gwapiv1 "sigs.k8s.io/gateway-api/apis/v1"
)

// Retry defines the retry strategy to be applied.
Expand Down Expand Up @@ -96,8 +96,7 @@ type PerRetryPolicy struct {
// Timeout is the timeout per retry attempt.
//
// +optional
// +kubebuilder:validation:Format=duration
Timeout *metav1.Duration `json:"timeout,omitempty"`
Timeout *gwapiv1.Duration `json:"timeout,omitempty"`
// Backoff is the backoff policy to be applied per retry attempt. gateway uses a fully jittered exponential
// back-off algorithm for retries. For additional details,
// see https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#config-http-filters-router-x-envoy-max-retries
Expand All @@ -109,13 +108,12 @@ type PerRetryPolicy struct {
type BackOffPolicy struct {
// BaseInterval is the base interval between retries.
//
// +kubebuilder:validation:Format=duration
BaseInterval *metav1.Duration `json:"baseInterval,omitempty"`
// +optional
BaseInterval *gwapiv1.Duration `json:"baseInterval,omitempty"`
// MaxInterval is the maximum interval between retries. This parameter is optional, but must be greater than or equal to the base_interval if set.
// The default is 10 times the base_interval
//
// +optional
// +kubebuilder:validation:Format=duration
MaxInterval *metav1.Duration `json:"maxInterval,omitempty"`
MaxInterval *gwapiv1.Duration `json:"maxInterval,omitempty"`
// we can add rate limited based backoff config here if we want to.
}
Loading