docs/v2-architecture/service-mesh/README.md
In Consul 1.16 and 1.17 releases, Consul's service mesh has been rewritten to use the controller architecture and the resource APIs.
At a high level, the service mesh consists of resources and controllers living in three groups: catalog, mesh,
and auth.
The controllers in each groups are responsible for producing an output that may then be used by other controllers.
-> Note: This diagram is valid as of Consul 1.17. It may change in the future releases.
Catalog controllers are responsible for reconciling resources in the catalog API group.
FailoverPolicy resource has valid service references and updating the
status the FailoverPolicy resource with the result.ServiceEndpoints object that is name-aligned with a service and
contains workload addresses and ports that constitute a service.ComputedProxyConfiguration resource that is name-aligned with a
workload. ComputedProxyConfiguration contains all merged ProxyConfiguration resources that apply to a specific
workload.ComputedRoutes resource that is name-aligned with a service. It contains merged
configuration from all xRoutes objects as well as FailoverPolicy and DestinationPolicy.ComputedExplicitDestinations resource that is name-aligned with a
workload. It contains merged Destinations resources that apply to a specific workload.ProxyStateTemplate resource which serves as the representation of Envoy configuration for
sidecar proxies.ProxyStateTemplate resources, fills in missing endpoints references as well as
certificates and CA roots and sends them over to another component that sends this information over to Envoy.ComputedTrafficPermissions resource that is name-aligned
with WorkloadIdentity. This computed resource contains all traffic permissions that apply to a specific workload
identity.