Skip to content

Registry API

aether.registry.v1 — The service registry: what an endpoint is, how a service is keyed, and the route and configuration projections that travel between clusters. Written through the registrar, read by every node agent.

Generated from the schema

Rendered by protoc from api/aether/registry/v1/ when this site was built, so it cannot drift from the compiled schema — there is no committed copy of this page. Field constraints are carried as buf.validate options and are not shown here; read the .proto for those.

api/aether/registry/v1/config.proto

ExtensionFilter

ExtensionFilter is a proxy-extension escape-hatch filter (proposal 025) carried with the projection: the Envoy filter name + its opaque per-route typed_config.

Field Type Label Description
name string
config google.protobuf.Any

GammaBackend

GammaBackend is one weighted backend: the resolved data-plane cluster + the bare service key (for the consumer's dependency set).

Field Type Label Description
service string
cluster string
weight uint32

GammaHeaderKv

Field Type Label Description
name string
value string

GammaHeaderMatch

Field Type Label Description
name string
value string

GammaHeaderMutation

GammaHeaderMutation carries the RequestHeaderModifier/ResponseHeaderModifier fields.

Field Type Label Description
set_request GammaHeaderKv repeated
add_request GammaHeaderKv repeated
remove_request string repeated
set_response GammaHeaderKv repeated
add_response GammaHeaderKv repeated
remove_response string repeated

GammaMatch

GammaMatch is one match: a path (prefix OR exact OR regex) and ANDed header matches.

Field Type Label Description
prefix string
exact string
regex string
headers GammaHeaderMatch repeated

GammaRedirect

GammaRedirect describes a RequestRedirect filter (no backend cluster).

Field Type Label Description
scheme string
hostname string
port uint32
status_code int32
path_type string
path_value string
listener_port uint32

GammaRoute

GammaRoute mirrors the in-memory proxy.GammaRoute: one HTTPRoute/GRPCRoute rule projected to data-plane vocabulary. Backends are already resolved to data-plane cluster names by the exporting reconciler.

Field Type Label Description
matches GammaMatch repeated
backends GammaBackend repeated
timeout google.protobuf.Duration
header_mutation GammaHeaderMutation
redirect GammaRedirect
url_rewrite GammaUrlRewrite
extension_filters ExtensionFilter repeated

GammaUrlRewrite

GammaUrlRewrite describes a URLRewrite filter (host and/or path).

Field Type Label Description
hostname string
path_type string
path_value string

ServiceConfigProjection

ServiceConfigProjection is the cross-cluster wire form of one service's projected GAMMA config (proposal 026, multi-cluster config propagation — Option E/C). The authoritative (exporting) cluster's GAMMA reconciler projects an HTTPRoute/GRPCRoute attached to a Service into the RECONCILED GammaRoute form and writes this record to the shared registry, origin-stamped + versioned; consuming clusters import it read-only and materialize the routes WITHOUT re-running the reconciler or holding cross-cluster Kubernetes credentials. The in-memory proxy.GammaRoute is the source; config.go converts to/from this proto. See docs/proposals/026.

Field Type Label Description
service string service is the route-target key "<ns>/<svc>" the projection applies to.
origin_cluster string origin_cluster is the authoritative exporting cluster (the conflict-resolution + import-authorization key — a consumer rejects a projection from a non-authority).
version string version is the exporter's monotonic version for this service's projection (last-writer-by-origin; consumers ignore an older version than they hold).
routes GammaRoute repeated routes is the projected, specificity-independent GAMMA rule set (the consumer sorts/builds vhosts exactly as the local path does).
service_filter ExtensionFilter service_filter is the service-wide always-on extension filter (proposal 025 M4 CHAIN scope): at most one per service, enabled at the service's capture vhost (vhost-level typed_per_filter_config). Rides the 026 channel like routes.

api/aether/registry/v1/endpoint.proto

ServiceEndpoint

Field Type Label Description
ip string
cluster_name string
port uint32
ports uint32 repeated ports is the full set of application ports this endpoint serves (multi-port pods). port (above) remains the default/primary port — what the portless FQDN resolves to and the fallback when ports is empty. Each client builds a per-port cluster whose EDS membership is filtered to endpoints advertising that port, so a new version adding a port rolls out safely (callers of the new port only ever land on pods that serve it). See proposal 005.
weight uint32
locality ServiceEndpoint.Locality
metadata ServiceEndpoint.MetadataEntry repeated
container_metadata ServiceEndpoint.ContainerMetadata
kubernetes_metadata ServiceEndpoint.KubernetesMetadata
health ServiceEndpoint.Health
health_check_mode ServiceEndpoint.HealthCheckMode

ServiceEndpoint.ContainerMetadata

Field Type Label Description
container_id string
network_namespace string

ServiceEndpoint.KubernetesMetadata

Field Type Label Description
namespace string
pod_name string
node_name string
node_ip string node_ip is the node's routable InternalIP. It is the dial target for a cross-cluster endpoint whose pod IP is not routable across clusters: the consuming cluster's proxy dials node_ip:<tunnel-port> and that node's host-network proxy SNI-forwards to the local pod (proposal 019, per-node east/west waypoint). Empty when unknown (e.g. non-Kubernetes backends) or for same-cluster endpoints, which are dialed at the pod IP directly.

ServiceEndpoint.Locality

Field Type Label Description
region string
zone string

ServiceEndpoint.MetadataEntry

Field Type Label Description
key string
value string

ServiceEndpoint.Health

Health reflects whether the endpoint's application is serving, as actively health-checked by the node-local agent (delegated liveness). The default (HEALTH_UNSPECIFIED) is treated as healthy so endpoints from older agents and freshly registered endpoints route normally until proven otherwise.

Name Number Description
HEALTH_UNSPECIFIED 0
HEALTH_HEALTHY 1
HEALTH_UNHEALTHY 2
HEALTH_DRAINING 3 HEALTH_DRAINING marks an endpoint whose pod's deletion has been requested: clients must stop selecting it for new requests (Envoy EDS DRAINING) while established connections finish through the pod's termination grace period. Set by the agent's termination watch; the endpoint is removed entirely at CNI DEL.

ServiceEndpoint.HealthCheckMode

HealthCheckMode selects how client proxies determine this endpoint's health. ACTIVE (the default, including UNSPECIFIED): each client proxy actively HTTP-health-checks the endpoint's mesh readiness path. EDS: clients instead rely on the EDS health status pushed by the node-local agent (delegated liveness) and do not probe the endpoint themselves. Set per pod via the endpoint.aether.io/health-check-mode annotation.

Name Number Description
HEALTH_CHECK_MODE_UNSPECIFIED 0
HEALTH_CHECK_MODE_ACTIVE 1
HEALTH_CHECK_MODE_EDS 2

api/aether/registry/v1/service.proto

Service

Field Type Label Description
name string
protocol Service.Protocol
endpoints Service.EndpointsEntry repeated

Service.EndpointsEntry

Field Type Label Description
key string
value ServiceEndpoint

Service.Protocol

Name Number Description
PROTOCOL_UNSPECIFIED 0
PROTOCOL_HTTP 1
PROTOCOL_TCP 2 PROTOCOL_TCP marks a non-HTTP (raw TCP-over-mTLS) mesh service. Its endpoints are reached through the transparent-capture TCP floor as a raw mTLS passthrough (proposal 018, Phase 3a), not the HTTP HCM path.