Consul
Consul ECS 0.7.x
Release highlights
Consul Dataplane: Consul on ECS 0.7.x adopts the Dataplane architecture to simplify connecting your ECS workloads to Consul. Refer to the documentation to learn more about the updated ECS components and how to deploy Consul to ECS using the Terraform module.
New
control-planecommand: The new, unifiedcontrol-planecommand combines the capabilities for the deprecatedmesh-initandhealth-synccommands. Thecontrol-planecommand starts a long running process with the following responsibilities:- Automatically (re)discover and (re)connect to Consul servers using connection manager.
- Make an ACL Login request to obtain an ACL token when using the Consul AWS IAM auth method.
- Register the service and sidecar proxy with the central catalog on the Consul servers.
- Write the configuration for Consul Dataplane to a file on a shared volume.
- Sync ECS health check statuses for the ECS task into the central catalog on the Consul servers on a periodic basis.
- Gracefully shutdown when an ECS task is stopped. Upon receiving a SIGTERM, mark synced health checks critical and wait for Consul Dataplane to stop. Then remove health checks, services, and perform an ACL Logout if necessary.
New
controllercommand: The newcontrollercommand replaces theacl-controllercommand with the following changes:- Remove all CLI flags. Configuration is read from the
ECS_CONFIG_JSONenvironment variable. - Automatically (re)discover and (re)connect to Consul servers, similar to the
control-planecommand. - Because Consul client agents are no longer used, the controller no longer configures the "client" auth method, policy, role, and binding rule which previously enabled Consul client agents to login.
- Register the ECS cluster as a synthetic node in the central catalog on the Consul servers. The synthetic node is used to register services running in the ECS cluster.
- Ensure leftover tokens and services are removed for ECS tasks that have stopped.
- Remove all CLI flags. Configuration is read from the
Locality aware routing (Enterprise): Consul on ECS 0.7.x supports locality-aware routing. In your ECS task meta JSON, set the
AWS_REGIONcontainer environment variable andAvailabilityZoneattributes to set the locality parameters in Consul service and proxy registrations. Consul uses these parameters to perform locality aware routing in Consul Enterprise installations.
Breaking changes
The new Dataplane architecture comes with the following breaking changes to configuring Consul on ECS. Refer to the Upgrade to Consul dataplane architecture documentation for a step-by-step upgrade guide.
- Consul client agents are no longer used.
- Consul Dataplane must be run in place of Envoy in each ECS task. Consul Dataplane manages the Envoy process and proxies xDS requests from Envoy to Consul servers.
- The
consul-ecsbinary now communicates with Consul servers using HTTP(S) and GRPC. - Services are registered directly with the central catalog on the Consul servers. Services in the same ECS cluster are registered to the same Consul node name.
Replaced the
mesh-initandhealth-synccommands with a unifiedcontrol-plane.Replaced the
acl-controllercommand withcontroller.Add the
go-discoverbinary to the Consul ECS image to better support cloud auto-join.Changes to
ECS_CONFIG_JSONschema.Remove the
consulHTTPAddrandconsulCACertFilefields.Add the
consulLogin.datacenterfield.Add the
controllerfield to support configuring the newcontrollercommand.Add the
consulServersfield to specify the Consul server location and protocol-specific settings.The
consulServers.hostsfield is required. This specifies the Consul server location as an IP address, DNS name, orexec=string specifying a command that returns a list of IP addresses. To use cloud auto-join, use anexec=string to run thediscoverCLI. For example, the following string invokes the discover CLI with a cloud auto-join string:exec=discover -q addrs provider=aws region=us-west-2 tag_key=consul-server tag_value=trueBy default, Consul ECS and Consul Dataplane images include the
discoverCLI.Add the
proxy.healthCheckPortfield which can be hit to determine Envoy's readiness.Add the
proxy.upstreams.destinationPeerfield to enable the proxy to hit upstreams present in peer Consul clusters.Add the
meshGateway.healthCheckPortfield which can be hit to determine Envoy's readiness.Add the
proxy.localServiceAddressfield to configure Envoy to use a different address for the local service.Remove the
service.checksfield. Consul agent health checks are no longer supported because Consul client agents are not used. Instead, set the healthSyncContainers field to have consul-ecs sync ECS health checks into Consul.
Supported software versions
- Consul: 1.17.x
Changelogs
The changelogs for this major release version and any maintenance versions are listed below.
Note: These links will take you to the changelogs on the GitHub website.