Contour Logo

Migrating from xDS v2 --> v3

This guide shows you how to migrate in-place instances of Envoy running xDS v2 to v3.

Summary

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 v2 api.

Background

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.

In-Place Upgrade

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.

Redeploy Upgrade

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.

Ready to try Contour?

Read our getting started documentation.