The Grey Matter Mesh is built out of a number of logical abstractions. The following table describes the logical abstractions, or objects, that make up the Grey Matter Mesh. The arrangement, connections, and configuration of these objects define the mesh and its behaviors.
A logically isolated region of the mesh. Zones are the highest level of organizational infrastructure. Zones contain all other objects.
cluster, domain, listener, proxy, route, shared_rules
The URL domains for which routes and clusters will be assigned within a proxy. E.g.
listener, proxy, route
The Envoy listener object that defines the host, port, and protocol for a proxy within the mesh.
The Proxy object represents the aggregate objects that get mapped to each instance of the Grey Matter Proxy.
zone, domain, listener
A Route defines how a URL in a given domain is handled. Route objects directly affect URI path matching, prefix rewriting, and redirects.
Shared_rules define how requests are sent to clusters. They can perform traffic splitting and shadowing.
Clusters represent collections of either hard-coded or discovered instances of a microservice. Clusters handle health checks, circuit breaking, and outlier detection.
Listener: A request from inside or outside the mesh is first sent to the host:port of a
Domain: The request host:port is matched against the available domains, and redirected if need be, and sent to an attached set of
Route: The request URI path portion is then passed through the
route object for matching, rewriting, and redirecting to a
Shared Rule: The request is passed through the
shared_rules to send, split, or shadow traffic to clusters.
cluster sends the final request to one of it's available instances; retrying and breaking connections as necessary.
Each API Objects discussed above is made up of individual fields and nested structures. Some structures are unique to a given object, but some are re-used across multiple places. These are discussed below.