Release notes
Review summaries of the main changes in the Gloo Gateway 1.18 release.
Make sure that you review the breaking changes đĨ that were introduced in this release and the impact that they have on your current environment.
Introduction
The release notes include important installation changes and known issues. They also highlight ways that you can take advantage of new features or enhancements to improve your product usage.
For more information, see the following related resources:
- Open source changelog or enterprise changelog: A full list of changes, including the ability to compare previous patch and minor versions.
- Upgrade guide: Steps to upgrade from the previous minor version to the current version.
- Version reference: Information about Solo’s version support.
đĨ Breaking changes
Review details about the following breaking changes. To review when breaking changes were released, you can use the comparison feature of the open source changelog or enterprise changelog. The severity is intended as a guide to help you assess how much attention to pay to this area during the upgrade, but can vary depending on your environment.
đ¨ High
Review severe changes that can impact production and require manual intervention.
Envoy version 1.31 upgrade
The Envoy dependency in Gloo Gateway 1.18 was upgraded from 1.29.x to 1.31.x. This upgrade includes the following changes. For more information about these changes, see the Envoy changelog documentation.
- Opencensus: Opencensus was marked as deprecated in previous Envoy releases. Starting in the 1.31.x Envoy release, Opencensus is now disabled by default. If Opencensus is set, Envoy rejects the configuration. If you still need time to transition off Opencensus, you can use Envoy’s layered_runtime section to enable deprecated configuration so that you can continue using Opencensus. However, note that Opencensus is completely removed in Envoy version 1.32.x.
- JWT tokens: The behavior for extracting JWT tokens changed in the 1.29.x Envoy release. Previously, the JWT token was cut into non-base64 characters. Now, the entire JWT token is passed for validation. You can no longer revert this change by setting
envoy.reloadable_features.token_passed_entirely
tofalse
as this option was removed in the 1.31.x Envoy release. - JWT_authn: Provider URIs that are defined in the
jwt_authn
section are now validated for RFC-compliance. Envoy might fail to start correctly if non-compliant URIs are found. If the URI validation is too strict, you can temporarily disable it by setting the runtime guardenvoy.reloadable_features.jwt_authn_validate_uri
to false. Common URI issues that were previously ignored, include:- Hostname contains an underscore character (
_
) - URL contains non-English characters (ASCII code > 127)
- URL contains an unencoded character such as a space (
- URL contains TAB (ASCII code 9) or FormFeed (ASCII code 12) characters
- Hostname contains an underscore character (
- JWT_authn: The provider forward configuration changed. Previously, JWTs could only be removed from headers. Starting in Envoy version 1.31.x, JWTs can now be removed from query parameters. You can temporarily revert this change by setting
envoy.reloadable_features.jwt_authn_remove_jwt_from_query_params
tofalse
. - access_log: The following access log format specifiers changed:
- The upstream connection address is now used for the
%UPSTREAM_REMOTE_ADDRESS%
,%UPSTREAM_REMOTE_PORT%
and%UPSTREAM_REMOTE_ADDRESS_WITHOUT_PORT%
access log format specifiers. Previously, the upstream host address was used. You can temporarily revert this change by setting the runtime guardenvoy.reloadable_features.upstream_remote_address_use_connection
tofalse
. - The
%UPSTREAM_CLUSTER_RAW%
access log formatter was added to log the original upstream cluster name, regardless of whetheralt_stat_name
is set. - SNIs are automatically sanitized for potential log injection. The invalid characters are replaced by underscores
_
with aninvalid:
marker. To disable this feature, setenvoy.reloadable_features.sanitize_sni_in_access_log
is set tofalse
.
- The upstream connection address is now used for the
- YAML parsing: The behavior for parsing YAML configuration changed. Previously, malformed boolean values and fraction objects that set
true
orfalse
as a string value were still interpreted as boolean values. Now,true
orfalse
string values are no longer interpreted as boolean values. You can revert this change by settingenvoy.reloadable_features.reject_invalid_yaml
tofalse
. - HTTP/2: HTTP/2 colon prefixed headers are now sanitized by Envoy. Previously, sanitation was performed by the
nghttp2
library, which caused pseudo headers with upper case letters to fail validation. Now, these pseudo headers pass validation. You can temporarily revert this change by setting the runtime guardenvoy.reloadable_features.sanitize_http2_headers_without_nghttp2
tofalse
. - Local ratelimit: The token bucket implementation changed. Previously, a timer-based token bucket was used to assign tokens to connections. In Envoy 1.31.x, the new AtomicToken bucket is used that is no longer timer-based. Tokens are now automatically refilled when the token bucket is accessed. Because of this change, the
x-ratelimit-reset
header is no longer sent. You can temporarily revert this change by setting the runtime guardenvoy.reloadable_features.no_timer_based_rate_limit_token_bucket
tofalse
.
đ Medium
Review changes that might have impact to production and require manual intervention, but possibly not until the next version is released.
Kubernetes Gateway API version 1.1 and 1.2
Gloo Gateway is fully conformant with the Kubernetes Gateway API version 1.1 and 1.2. When upgrading from version 1.17.x to 1.18.x, make sure to first upgrade the Kubernetes Gateway APIs. Then, continue with the Gloo Gateway upgrade.
Review the changes that were introduced to Gloo Gateway:
TCPRoute support: You can now use TCPRoute resources to set up a TCP listener on your Gateway. Note that in order to use TCPRoutes, you must use the experimental channel of the Kubernetes Gateway API.
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/experimental-install.yaml
If you do not want to use TCPRoutes, you can install the CRDs from the standard channel.
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml
EndpointSlices API support: Gloo Gateway now supports the EndpointSlices API when creating Upstream endpoints. The EndpointSlice API reached general availability (GA) in Kubernetes version 1.21.
kube-proxy
on both Linux and Windows uses EndpointSlices by default. To read more about EndpointSlices and how they affect scalability, see this blog.
âšī¸ Low
Review informational updates that you might want to implement but that are unlikely to materially impact production.
- No low-severity changes are currently reported.
âī¸ Installation changes
In addition to comparing differences across versions in the changelog, review the following installation changes from the previous minor version to version 1.18.
- No installation changes are currently reported.
đ New features
Review the following new features that are introduced in version 1.18 and that you can enable in your environment.
AI Gateway
Starting in Gloo Gateway Enterprise version 1.18.0, you can now use Gloo Gateway’s AI Gateway capabilities. AI Gateway unleashes developer productivity and accelerates AI innovation by providing a unified API interface that developers can use to access and consume AI services from multiple Large Language Model (LLM) providers. Because the API is part of the gateway proxy, you can leverage and apply additional traffic management, security, and resiliency policies to the requests to your LLM provider. This set of policies allows you to centrally govern, secure, control, and audit access to your LLM providers.
With AI Gateway, you have access to the following capabilities:
- Centralized credential management
- Access control
- Prompt enrichment
- Prompt guards
- Rate limiting
- Retrieval augemented generation (RAG)
- Semantic caching
For more information, see About AI Gateway and the AI Gateway Tutorials.
To access the AI Gateway capabilities, your Gloo Gateway Enterprise license must include the AI Gateway add-on.
ARM images
In Gloo Gateway Enterprise, ARM images are now supported for Gloo Gateway components. An image that is tagged with -arm
is compatible with ARM64 architectures. Note that ARM images are currently not supported for the Gloo AI gateway, and ARM binaries are not currently published for VMs.
AWS Lambda service account and cross-account access
The AWS Lambda integration for Gloo Gateway is now expanded to include support for the following features:
- Access Lambda functions with service accounts (IRSA): You can now associate an IAM role with a Kubernetes service account, and configure Gloo Gateway to use that service account to access AWS Lambda.
- Configure cross-account Lambda access: Configure Gloo Gateway to route traffic to AWS Lambda functions in different accounts than the AWS account that Gloo Gateway authenticates with.
Direct response support
You can use the DirectResponse custom resource to directly respond to incoming requests without forwarding them to services. The DirectResponse resource lets you set up a pre-defined response body and HTTP status that you want to return to the client.
For more information, see DirectReponse.
JWT policies for routes
Now, you can apply JWT policies to specific routes by configuring the jwtProvidersStaged
settings in the RouteOption resource. Previously, JWT policies applied at the gateway level and were configured in only the VirtualHostOption resource. With this new feature, you can apply JWT policies at both the route and gateway level. For more information and example steps, see Add JWT policy to routes.
Kubernetes 1.30 and 1.31 support
Starting in version 1.18.0, Gloo Gateway can now run on Kubernetes 1.30 and 1.31. For more information about supported Kubernetes, Envoy, and Istio versions, see the version support matrix.
Portal
Gloo Portal for Gloo Gateway Enterprise introduces many new capabilities, including new custom resources to support advanced auth use cases and a refreshed sample React frontend app to support user self-service.
For more information, review the following guides:
- Secure Portal APIs, with information about the new PortalGroups resource for authorization and how to set up an IdP for authentication.
- Set up a portal frontend, with information about how to deploy, secure, and prepare the sample React frontend app for user self-service.
- Use the frontend, with information for end users about how to create their own Teams, Apps, Subscriptions, and OAuth credentials or API keys.
TCP routes
Now, you can set up a TCP listener on the Gateway resource. Then, you can create TCPRoutes to manage TCP traffic. For more information and example steps, see the TCP listeners guide.
VirtualDestination support
You can now route traffic to a Gloo Mesh Enterprise VirtualDestination directly by using the Hostname
backendRef in your HTTPRoute. VirtualDestinations allow you to define unique internal hostnames for services that are spread across a multicluster service mesh. Without VirtualDestinations, you must update the IP addresses of your services every time the IP address changes, such as when you update your app or deploy a new version. Because a VirtualDestination uses labels to select the backing services, it can automatically detect IP address changes and update them for you.
To learn how to use VirtualDestinations, see VirtualDestinations.
Front channel logout
You can configure a front channel logout path on an AuthConfig that configures OIDC authorization code for your apps.
Front channel logout is a security mechanism that is used in the context of Single Sign-On (SSO) and Identity and Access Management (IAM) systems to ensure that when a user logs out of one app or service, they are also automatically logged out of the Identity Provider (IdP) and therefore all related apps and services in a secure and synchronized manner. Without front channel logout, the user is logged out of the requested app only.
For more information, see Front channel logout.
đ Feature changes
Review the following changes that might impact how you use certain features in your Gloo Gateway environment.
Envoy stats name changes
The stats name format for Envoy clusters that correspond to Kubernetes Services or Upstreams of type kube
changed as follows:
Destination type | Stats name format |
---|---|
Kubernetes service | kube-svc_upstreamName_upstreamNs_svcNs_svcName_svcPort |
Upstream of type kube | kube-upstream_upstreamName_upstreamNs_svcNs_svcName_svcPort |
Other destination types continue to use the old stats format, which defaults to the cluster name, such as upstreamName_upstreamNs
.
The name of Upstreams and the corresponding clusters do not change. Only the names of the stats that are emitted by these destination types are affected.
Policy overrides
Starting in version 1.18.1, you can now allow child HTTPRoutes to override policies that were set on a parent HTTPRoute by using the delegation.gateway.solo.io/enable-policy-overrides
annotation. Previously, all policies that were defined on the parent were automatically inherited by all children along the delegation chain. Now, if you set the delegation.gateway.solo.io/enable-policy-overrides
annotation, a child can choose to override a parent policy. A child HTTPRoute can still augment the policies that are set on a parent by defining other top-level policies that were not already set on a parent.
For more information and an example configuration example, see Policy overrides.