• Seth Hoenig's avatar
    consul/connect: dynamically select envoy sidecar at runtime · bdeb73cd
    Seth Hoenig authored
    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
    bdeb73cd