Migrating from xDS v2 --> v3
This guide shows you how to migrate in-place instances of Envoy running xDS v2 to v3.
Envoy communicates with Contour over gRPC which allows for dynamic communication for Envoy configuration updates. Until Contour v1.10, this gRPC xDS communication utilized the v2 xDS for transport as well as resource version.
In the beginning of Q1 2021, the Envoy community is deprecating the v2 xDS API in favor of the v3 which has been stable since Q1 2020. Contour offers support for the v3 xDS API in Contour v1.10.0.
Practically for users, this change has no effect on how Contour configures Envoy to route ingress traffic inside a Kubernetes cluster, however
it’s important to upgrade to this new version immediately since newer versions of Envoy won’t support the
Envoy gets configured with a bootstrap configuration file which Contour provides via an
initContainer on the Envoy daemonset.
This file configures the dynamic xDS resources, Listener Discovery Service (LDS) and Cluster Discovery Service (CDS), to point to Contour’s xDS gRPC server endpoint.
The bootstrap configuration file has two settings in the LDS/CDS entries which tell Contour what Resource & Transport version they would like to use.
In Contour v1.10.0, there’s a new flag,
--xds-resource-version, on the
contour bootstrap command which is used in the
initContainer that allows users to specify the xDS resource version.
Setting this flag to
v3 will configure Envoy to request the
v3 xDS Resource API version and will become the default in Contour v1.11.0.
When users have an existing Contour installation and wish to upgrade without dropping connections, users should first upgrade Contour to v1.10.0 which will serve both v2 and v3 xDS versions from the same gRPC endpoint.
Next, change the Envoy Daemonset or deployment to include
--xds-resource-version=v3 on the
initContainer which runs the
contour bootstrap command.
Setting this new flag to
v3 tells Envoy to upgrade to the v3 resource version.
The usual rollout process will handle draining connections allowing a fleet of Envoy instances to move from the v2 xDS Resource API version gradually to the v3 version.
Redeploying Contour is a simple path for users who do not need to upgrade without dropping connections.
The only change to remember is to set the
--xds-resource-version=v3 on the bootstrap
initContainer to configure the new instances of Envoy to use the
v3 xDS Resource API.