• Seth Hoenig's avatar
    consul/connect: Add support for Connect terminating gateways · ceae8ad1
    Seth Hoenig authored
    This PR implements Nomad built-in support for running Consul Connect
    terminating gateways. Such a gateway can be used by services running
    inside the service mesh to access "legacy" services running outside
    the service mesh while still making use of Consul's service identity
    based networking and ACL policies.
    
    https://www.consul.io/docs/connect/gateways/terminating-gateway
    
    These gateways are declared as part of a task group level service
    definition within the connect stanza.
    
    service {
      connect {
        gateway {
          proxy {
            // envoy proxy configuration
          }
          terminating {
            // terminating-gateway configuration entry
          }
        }
      }
    }
    
    Currently Envoy is the only supported gateway implementation in
    Consul. The gateay task can be customized by configuring the
    connect.sidecar_task block.
    
    When the gateway.terminating field is set, Nomad will write/update
    the Configuration Entry into Consul on job submission. Because CEs
    are global in scope and there may be more than one Nomad cluster
    communicating with Consul, there is an assumption that any terminating
    gateway defined in Nomad for a particular service will be the same
    among Nomad clusters.
    
    Gateways require Consul 1.8.0+, checked by a node constraint.
    
    Closes #9445
    ceae8ad1
To find the state of this project's repository at the time of any of these versions, check out the tags.