You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Description: The upgrade of EG may cause clients to experience request failures or a temporary loss of connectivity to the Envoy
For example, while upgrading from v1.0.2 to v1.1.0 following steps in the upgrade guide, the EG fails to reconcile the BackendTLSPolicy CRs as the CRD is deleted and recreated during the upgrade process.
Before the upgrade, a BackendTLSPolicy CRD is created to configure the TLS settings for the Backend service, following the steps in the Backend TLS: Gateway to Backend task.
Using egctl to get the generanted xDS cluster, you can see the TLS configuration for the Backend Cluster:
EG reports the following error message in the logs:
E0802 09:30:12.542305 1 reflector.go:147] pkg/mod/k8s.io/client-go@v0.29.2/tools/cache/reflector.go:229: Failed to watch *v1alpha2.BackendTLSPolicy: failed to list *v1alpha2.BackendTLSPolicy: the server could not find the requested resource (get backendtlspolicies.gateway.networking.k8s.io)
The generated xDS does not contain the TLS configuration for the Backend Cluster, and the client requests fails.
Failed request example, as the error message suggests, the envoy sends an HTTP request to the backend service, which is an HTTPS server:
curl -v -HHost:www.example.com --resolve "www.example.com:80:172.18.255.200" \
http://www.example.com:80/get
* Added www.example.com:80:172.18.255.200 to DNS cache
* Hostname www.example.com was found in DNS cache
* Trying 172.18.255.200:80...
* Connected to www.example.com (172.18.255.200) port 80
> GET /get HTTP/1.1
> Host:www.example.com
> User-Agent: curl/8.8.0-DEV
> Accept: */*>* Request completely sent off
< HTTP/1.1 400 Bad Request
< date: Fri, 02 Aug 2024 09:48:47 GMT
< transfer-encoding: chunked
<
Client sent an HTTP request to an HTTPS server.
The xDS cluster does not contain the TLS configuration for the Backend Cluster:
Similarly, the client request will also fail if any of the Gateway CRDs or EG CRDs have breaking changes and need to be deleted and recreated during the upgrade process. If any of the CRs need to be recreated/modified due to breaking changes, the same issue will occur as well.
Disable xDS translation during the upgrade process
One way to avoid this issue is to disable the xDS translation during the upgrade process. This way, the EG will not generate the xDS configuration with the broken CRs or any temporary middle state during the upgrade process, and the Envoy will continue to use the existing xDS configuration generated with the correct version of CRDs before the upgrade. Once the upgrade is complete, the xDS translation can be enabled, and the EG will generate the xDS configuration with the updated CRDs
Alternative:
Disable xDS server while upgrading.
[optional Relevant Links:]
Any extra documentation required to understand the issue.
cc @envoyproxy/gateway-maintainers
The text was updated successfully, but these errors were encountered:
rather than adding complexity into control plane for this, I'd prefer if we able to instrument envoy to use stale xds contents (disable connecting to the xds server) for the short duration while the CRDs and control planes were upgraded
Description:
The upgrade of EG may cause clients to experience request failures or a temporary loss of connectivity to the Envoy
For example, while upgrading from v1.0.2 to v1.1.0 following steps in the upgrade guide, the EG fails to reconcile the
BackendTLSPolicy
CRs as the CRD is deleted and recreated during the upgrade process.Before the upgrade, a
BackendTLSPolicy
CRD is created to configure the TLS settings for the Backend service, following the steps in the Backend TLS: Gateway to Backend task.Using egctl to get the generanted xDS cluster, you can see the TLS configuration for the Backend Cluster:
Delete the
BackendTLSPolicy
CRD, as the upgrade guide suggests:EG reports the following error message in the logs:
The generated xDS does not contain the TLS configuration for the Backend Cluster, and the client requests fails.
Failed request example, as the error message suggests, the envoy sends an HTTP request to the backend service, which is an HTTPS server:
The xDS cluster does not contain the TLS configuration for the Backend Cluster:
Similarly, the client request will also fail if any of the Gateway CRDs or EG CRDs have breaking changes and need to be deleted and recreated during the upgrade process. If any of the CRs need to be recreated/modified due to breaking changes, the same issue will occur as well.
Disable xDS translation during the upgrade process
One way to avoid this issue is to disable the xDS translation during the upgrade process. This way, the EG will not generate the xDS configuration with the broken CRs or any temporary middle state during the upgrade process, and the Envoy will continue to use the existing xDS configuration generated with the correct version of CRDs before the upgrade. Once the upgrade is complete, the xDS translation can be enabled, and the EG will generate the xDS configuration with the updated CRDs
Alternative:
Disable xDS server while upgrading.
[optional Relevant Links:]
cc @envoyproxy/gateway-maintainers
The text was updated successfully, but these errors were encountered: