ed13e5723f
As newer versions of Consul are released, the minimum version of Envoy it supports as a sidecar proxy also gets bumped. Starting with the upcoming Consul v1.9.X series, Envoy v1.11.X will no longer be supported. Current versions of Nomad hardcode a version of Envoy v1.11.2 to be used as the default implementation of Connect sidecar proxy. This PR introduces a change such that each Nomad Client will query its local Consul for a list of Envoy proxies that it supports (https://github.com/hashicorp/consul/pull/8545) and then launch the Connect sidecar proxy task using the latest supported version of Envoy. If the `SupportedProxies` API component is not available from Consul, Nomad will fallback to the old version of Envoy supported by old versions of Consul. Setting the meta configuration option `meta.connect.sidecar_image` or setting the `connect.sidecar_task` stanza will take precedence as is the current behavior for sidecar proxies. Setting the meta configuration option `meta.connect.gateway_image` will take precedence as is the current behavior for connect gateways. `meta.connect.sidecar_image` and `meta.connect.gateway_image` may make use of the special `${NOMAD_envoy_version}` variable interpolation, which resolves to the newest version of Envoy supported by the Consul agent. Addresses #8585 #7665
18 lines
778 B
Go
18 lines
778 B
Go
package structs
|
|
|
|
const (
|
|
// envoyImageFormat is the default format string used for official envoy Docker
|
|
// images with the tag being the semver of the version of envoy. Nomad fakes
|
|
// interpolation of ${NOMAD_envoy_version} by replacing it with the version
|
|
// string for envoy that Consul reports as preferred.
|
|
//
|
|
// Folks wanting to build and use custom images while still having Nomad refer
|
|
// to specific versions as preferred by Consul would set meta.connect.sidecar_image
|
|
// to something like: "custom/envoy:${NOMAD_envoy_version}".
|
|
EnvoyImageFormat = "envoyproxy/envoy:v" + EnvoyVersionVar
|
|
|
|
// envoyVersionVar will be replaced with the Envoy version string when
|
|
// used in the meta.connect.sidecar_image variable.
|
|
EnvoyVersionVar = "${NOMAD_envoy_version}"
|
|
)
|