aethermesh.dev

module
v0.0.0-...-c46dd35 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 9, 2026 License: Apache-2.0

README

Aether

A Kubernetes service mesh data plane built in Go. The Go module is aethermesh.dev (a vanity import path served by the website; versions before the rename remain importable as github.com/bpalermo/aether — see proposal 035). Aether runs a per-node agent (DaemonSet) that drives a custom Envoy build (aether-proxy) via an xDS control plane, plus a CNI plugin that sets up pod network namespaces and registers their endpoints. Config is demand-scoped: each agent generates only the clusters, registry watches, and endpoints its local pods actually depend on (declared via the config.aether.io/upstreams annotation), with on-demand CDS for the cold path. An in-cluster Registrar service proxies all registry operations, caches a versioned endpoint snapshot, and streams changes to agents. Routing is driven by the Gateway API (GAMMA east-west + a north-south edge gateway). It integrates with SPIRE for workload identity and mTLS, supports zero-drop proxy rollouts via Envoy hot restart, and exports OpenTelemetry metrics and traces. Pluggable external registry backends: DynamoDB, etcd, and Kubernetes.

Architecture

Solid arrows are the workload data path; dashed arrows are control plane / telemetry.

graph TD
    subgraph node["Node (DaemonSet)"]
        Pod["Workload Pod"]
        CNI["CNI Plugin<br/><i>netns setup · endpoint registration</i>"]
        Agent["Agent<br/><i>xDS · CNI server · proxy supervisor</i>"]
        Proxy["aether-proxy<br/><i>custom Envoy, hot-restart supervised</i>"]
        MeshDNS["mesh-dns<br/><i>own DaemonSet · snapshot-fed resolver</i>"]
        SPIRE["SPIRE Agent<br/><i>workload identity</i>"]

        Pod == "pod traffic" ==> Proxy
        Pod -. "DNS :53 (CNI DNAT)" .-> MeshDNS
        Agent -. "record snapshot (file)" .-> MeshDNS
        CNI -. "register (gRPC/UDS)" .-> Agent
        Agent -. "xDS, demand-scoped<br/>LDS·CDS·EDS·RDS·SDS·ODCDS" .-> Proxy
        Agent -. "Delegated Identity API" .-> SPIRE
        SPIRE -. "X.509 SVIDs (via SDS)" .-> Proxy
    end

    Peer["Peer node<br/><i>aether-proxy → workload pod</i>"]
    Proxy == "mTLS (SPIFFE)" ==> Peer

    Registrar["Registrar<br/><i>in-cluster Deployment, active/active</i>"]
    Agent -. "register · watch · list" .-> Registrar

    Registry[("External Registry<br/>DynamoDB · etcd · Kubernetes")]
    Registrar -. "sync + persist" .-> Registry

    OTel["OTel Collector<br/><i>metrics · traces</i>"]
    Agent -. "OTLP push" .-> OTel
    Proxy -. "stats sink + aether_stats" .-> OTel

Agent — Runs on each node via controller-runtime. Manages the xDS server, CNI gRPC server, SPIRE bridge, registrar client, and the proxy hot-restart supervisor as runnables. Generates Envoy configuration (listeners, clusters, endpoints, routes) from local pod data and the endpoint cache populated by the Registrar's push stream. Config is demand-scoped to each node's dependency set (see below).

aether-proxy — A custom Envoy build maintained in a separate sibling Bazel workspace under proxy/ (pinned to its own Bazel 8.7.0, built from Envoy source) with a compiled-in C++ aether_stats extension that records source→destination request metrics. The agent supervises it with cross-pod hot restart for hitless rollouts and two-phase connection draining. See proxy/README.md and proposals 010 / 012.

Demand-scoped distribution — Each agent generates only the clusters, registry watches, and endpoints its local pods declare a dependency on via the config.aether.io/upstreams annotation, with on-demand CDS (ODCDS) serving the cold path. This bounds per-node config to the node's actual footprint and replaces fleet-wide CDS and client-side active health checking. Multi-port and FQDN upstreams are demuxed via SNI with per-port EDS. See proposals 004 / 005.

mesh-dns — A slim per-node DaemonSet (its own binary and image) that answers <svc>.<ns>.<meshDomain> from a record snapshot the agent writes to a host path, and forwards everything else upstream. The CNI DNATs each managed pod's :53 to it. It is deliberately decoupled from the agent (#578, #583) so an agent roll never gaps pod DNS.

Gateway API & GAMMA routing — Routing is expressed with the Kubernetes Gateway API. East-west (mesh) traffic uses GAMMA: HTTPRoute/GRPCRoute objects with a parentRef to a Service enrich that service's outbound/capture routes (canary splits, header/method matches, timeouts, redirects). North-south traffic uses the same API against the edge gateway's GatewayClass. Both directions share one projector, common/gammaproject, which turns a route rule into a registryv1.GammaRoute proto; the node agent materializes it locally into Envoy config while the registrar can export it cross-cluster. An HTTPFilter CRD (proposal 025) is the escape hatch for attaching supported Envoy HTTP filters (ext_authz, RBAC, header-to-metadata) at route, service-wide (CHAIN), or destination-side (INBOUND) scope.

Controller — In-cluster Deployment (leader-elected) that serves the admission webhooks (MeshConfig, HTTPFilter, EdgeConfig, EndpointPolicy, HTTPRoute validation + a pod-mutating webhook for mesh-domain ndots and namespace-based mesh injection) and projects each namespace's MeshConfig CR into a ConfigMap the agent and edge mount.

Registrar — In-cluster Deployment that acts as the sole bridge between agents and the external registry. Receives endpoint registrations from agents, persists them externally, maintains a versioned in-memory snapshot via periodic sync, and streams changes to all agents via gRPC server-streaming. Runs as an active/active Deployment (every replica serves gRPC and syncs; peers converge through the external registry), collapsing per-node external connections down to the registrar tier.

CNI Plugin — Implements the CNI spec (Add/Del/Check/GC/Status) to set up each pod's network namespace. Communicates with the agent over a Unix domain socket to register the pod's endpoints on Add and deregister them on Del.

UDS delivery — Workloads that serve on a Unix domain socket instead of a TCP port join the mesh with endpoint.aether.io/uds-socket: <volume>/<file> (or a service-scoped EndpointPolicy CR). The proxy delivers inbound requests to the socket through kubelet's pod-volumes directory; callers are unaffected — the pod is still reached at its pod IP over mTLS. See proposal 034.

SPIRE Bridge — Connects to the SPIRE agent via the Delegated Identity API to obtain X.509 SVIDs and trust bundles. Converts them into Envoy SDS (Secret Discovery Service) resources for automatic mTLS between workloads.

External Registry — Pluggable backend for durable endpoint storage, selected on the Registrar via --registry-backend:

  • DynamoDB — single-table design for AWS-native deployments
  • etcd — hierarchical key structure with protobuf serialization, native Watch for change streaming
  • Kubernetes — registry backed by the cluster API

Observability — Push-first OpenTelemetry. When otel.endpoint is set (chart value; --otlp-endpoint on each binary), the agent, CNI, and registrar export OTLP metrics (--otel-enabled) and optionally traces (--trace-export) to a collector. The proxy ships its Envoy stats over the same sink, and the compiled-in aether_stats extension emits per-source/destination request counters.

Getting Started

Prerequisites
  • Bazelisk (Bazel 9.2.0)
  • Go 1.26.5
  • Docker (or Colima) for container images and integration tests
Setup (macOS with Colima)

If you use Colima for Docker on macOS, run this once to configure the Docker socket for Bazel sandboxed tests:

./bazel/configure_colima.sh

This generates .bazelrc.colima (gitignored) with your socket path. The config is auto-enabled on macOS via --config=colima.

Build
make build-agent           # Build the node agent
make build-registrar       # Build the registrar service
make build-cni-install     # Build the CNI installer
Test
make test                  # Run all tests (requires Docker for integration tests)
make test-unit             # Run unit tests only (no Docker required)
make test-integration      # Run integration tests only (requires Docker)
make test-race             # Run all tests with Go race detector
Code Quality
make format                # Format all code (Go, protobuf, Starlark, shell)
make format-check          # Check formatting (CI-friendly, fails on drift)
make lint                  # Run linters (buf, buildifier, shellcheck)

Formatting uses gofumpt, buildifier, shfmt, and buf via aspect_rules_lint. Linting runs buf (protobuf), buildifier (Starlark), and shellcheck (shell) as Bazel aspects. CI enforces lint violations with --config=ci.

Container Images
make load-all              # Load all images into local Docker
make push-all              # Push all images to registry
Adding Go Dependencies
bazel run @rules_go//go get <package>
bazel run //:gazelle

License

Licensed under the Apache License, Version 2.0. See NOTICE for attribution.

Directories

Path Synopsis
agent
cmd/agent command
cmd/mesh-dns command
Command mesh-dns is the standalone, slim mesh-DNS resolver binary run by the aether-mesh-dns DaemonSet (issues #578, #583).
Command mesh-dns is the standalone, slim mesh-DNS resolver binary run by the aether-mesh-dns DaemonSet (issues #578, #583).
constants
Package constants defines agent-specific constants for socket paths and directory defaults.
Package constants defines agent-specific constants for socket paths and directory defaults.
internal/capture
Package capture contains the node agent's transparent-capture controller: it watches the generated selectorless mesh Services (proposal 018, Phase 3a) and projects their cluster.local authorities into the snapshot cache, which builds the cap_http route table the per-pod capture listeners serve.
Package capture contains the node agent's transparent-capture controller: it watches the generated selectorless mesh Services (proposal 018, Phase 3a) and projects their cluster.local authorities into the snapshot cache, which builds the cap_http route table the per-pod capture listeners serve.
internal/cmd
Package cmd provides command-line interface configuration for the Aether agent.
Package cmd provides command-line interface configuration for the Aether agent.
internal/cni/server
Package server implements a gRPC server for the CNI plugin interface.
Package server implements a gRPC server for the CNI plugin interface.
internal/configimport
Package configimport materializes cross-cluster GAMMA config on a spoke (proposal 026, multi-cluster config propagation — the consumer side).
Package configimport materializes cross-cluster GAMMA config on a spoke (proposal 026, multi-cluster config propagation — the consumer side).
internal/edge/gatewayapi
Package gatewayapi contains the edge proxy's Gateway API controller: it watches Gateway API HTTPRoutes, TCPRoutes, and TLSRoutes attached to a Gateway of the aether GatewayClass and projects them into the edge data plane (proposal 018 — north-south).
Package gatewayapi contains the edge proxy's Gateway API controller: it watches Gateway API HTTPRoutes, TCPRoutes, and TLSRoutes attached to a Gateway of the aether GatewayClass and projects them into the edge data plane (proposal 018 — north-south).
internal/edge/gatewayapi/attachment
Package attachment holds the edge Gateway API controller's route→listener attachment resolution: parentRef matching, allowedRoutes (namespaces/kinds) admission, ReferenceGrant-gated backendRef admission, and listener/route hostname intersection.
Package attachment holds the edge Gateway API controller's route→listener attachment resolution: parentRef matching, allowedRoutes (namespaces/kinds) admission, ReferenceGrant-gated backendRef admission, and listener/route hostname intersection.
internal/edge/portalloc
Package portalloc provides deterministic internal-port allocation for per-Gateway edge listeners (proposal 021 Phase 2).
Package portalloc provides deterministic internal-port allocation for per-Gateway edge listeners (proposal 021 Phase 2).
internal/edge/secret
Package secret resolves edge downstream-TLS certificates from pluggable backends (the SecretProvider enum).
Package secret resolves edge downstream-TLS certificates from pluggable backends (the SecretProvider enum).
internal/endpointpolicy
Package endpointpolicy contains the node agent's EndpointPolicy controller: it watches the service-scoped delivery policies (proposal 034 Phase 1b) and projects them into the snapshot cache as a "<ns>/<svc>" → "<volume>/<file>" map.
Package endpointpolicy contains the node agent's EndpointPolicy controller: it watches the service-scoped delivery policies (proposal 034 Phase 1b) and projects them into the snapshot cache as a "<ns>/<svc>" → "<volume>/<file>" map.
internal/gamma
Package gamma contains the node agent's GAMMA controller: it watches Gateway API HTTPRoutes attached to a Service (parentRef kind=Service) and projects their L7 rules into the node proxy's outbound routing (proposal 018, Phase 2 — east-west).
Package gamma contains the node agent's GAMMA controller: it watches Gateway API HTTPRoutes attached to a Service (parentRef kind=Service) and projects their L7 rules into the node proxy's outbound routing (proposal 018, Phase 2 — east-west).
internal/gatewaystatus
Package gatewaystatus contains shared helpers for writing Gateway API status: controller-owned RouteParentStatus entries on Routes and conditions on Gateways/GatewayClasses.
Package gatewaystatus contains shared helpers for writing Gateway API status: controller-owned RouteParentStatus entries on Routes and conditions on Gateways/GatewayClasses.
internal/l4route
Package l4route contains the node agent's L4 route controller: it watches Gateway API TCPRoutes, TLSRoutes, and UDPRoutes (parentRef kind=Service) and projects their rules into the node proxy's capture listener filter chains.
Package l4route contains the node agent's L4 route controller: it watches Gateway API TCPRoutes, TLSRoutes, and UDPRoutes (parentRef kind=Service) and projects their rules into the node proxy's capture listener filter chains.
internal/meshdns
Package meshdns is the node agent's in-process DNS resolver (Istio-style, proposal 018 mesh-global FQDN).
Package meshdns is the node agent's in-process DNS resolver (Istio-style, proposal 018 mesh-global FQDN).
internal/node
Package node provides node-level operations for the agent — notably removing the aether startup taint once the agent's CNI is serving, so workload pods can schedule onto the node (the Cilium-style cold-start gate; see issue #261).
Package node provides node-level operations for the agent — notably removing the aether startup taint once the agent's CNI is serving, so workload pods can schedule onto the node (the Cilium-style cold-start gate; see issue #261).
internal/proxy/hotrestart
Package hotrestart implements a supervisor that manages the aether-proxy Envoy process and performs Envoy hot restarts across restart epochs, replicating the behavior of Envoy's hot-restarter.py in Go (see docs/proposals/001_proxy-hot-restart.md).
Package hotrestart implements a supervisor that manages the aether-proxy Envoy process and performs Envoy hot restarts across restart epochs, replicating the behavior of Envoy's hot-restarter.py in Go (see docs/proposals/001_proxy-hot-restart.md).
internal/spire
Package spire provides integration with SPIRE for X.509 SVID management.
Package spire provides integration with SPIRE for X.509 SVID management.
internal/xds/ack
Package ack tracks Envoy's delta-xDS ACK/NACKs per resource, replacing admin /config_dump polling (which serializes config on Envoy's main thread) as the agent's confirmation that a config update reached the proxy.
Package ack tracks Envoy's delta-xDS ACK/NACKs per resource, replacing admin /config_dump polling (which serializes config on Envoy's main thread) as the agent's confirmation that a config update reached the proxy.
internal/xds/cache
Package cache manages Envoy xDS snapshot resources for the agent.
Package cache manages Envoy xDS snapshot resources for the agent.
internal/xds/cache/cachemetrics
Package cachemetrics holds the agent xDS snapshot-generation instruments.
Package cachemetrics holds the agent xDS snapshot-generation instruments.
internal/xds/cache/snapversion
Package snapversion generates xDS snapshot version strings for the agent cache.
Package snapversion generates xDS snapshot version strings for the agent cache.
internal/xds/config
Package config provides Envoy configuration helpers for xDS resources.
Package config provides Envoy configuration helpers for xDS resources.
internal/xds/proxy
Package proxy provides functions to generate Envoy resource types (listeners, clusters, endpoints, routes, filter chains) from pod and service registry data.
Package proxy provides functions to generate Envoy resource types (listeners, clusters, endpoints, routes, filter chains) from pod and service registry data.
internal/xds/server
Package server implements the agent-specific Envoy xDS server.
Package server implements the agent-specific Envoy xDS server.
internal/xds/xdsconst
Package xdsconst holds the Aether pod annotation keys consumed exclusively by the agent's xDS proxy-config generation (proxy/cache/server), keeping them out of the cross-tree common/constants fan-in.
Package xdsconst holds the Aether pod annotation keys consumed exclusively by the agent's xDS proxy-config generation (proxy/cache/server), keeping them out of the cross-tree common/constants fan-in.
storage
Package storage provides interfaces and implementations for persisting and retrieving pod data.
Package storage provides interfaces and implementations for persisting and retrieving pod data.
types
Package types provides type definitions used throughout the Aether agent.
Package types provides type definitions used throughout the Aether agent.
bazel
protodoc command
Command protodoc is the protoc plugin that renders aether's protobuf API reference for aethermesh.dev (//website, the `/api/` section).
Command protodoc is the protoc plugin that renders aether's protobuf API reference for aethermesh.dev (//website, the `/api/` section).
cni
cmd/cni command
cmd/cni-install command
config
Package config provides CNI plugin configuration parsing and data structures.
Package config provides CNI plugin configuration parsing and data structures.
internal/install
Package install provides configuration and utilities for the CNI plugin installer.
Package install provides configuration and utilities for the CNI plugin installer.
internal/plugin
Package plugin implements the Aether CNI plugin, which is invoked by the container runtime (e.g., containerd) during pod lifecycle transitions.
Package plugin implements the Aether CNI plugin, which is invoked by the container runtime (e.g., containerd) during pod lifecycle transitions.
internal/telemetry
Package telemetry provides opt-in OTel tracing and metrics for the short-lived CNI plugin binary.
Package telemetry provides opt-in OTel tracing and metrics for the short-lived CNI plugin binary.
common
apis/config/v1
Package v1 holds the hand-written, typed MeshConfig Kubernetes CRD object whose `.spec` is the protobuf aether.config.v1.MeshConfigSpec.
Package v1 holds the hand-written, typed MeshConfig Kubernetes CRD object whose `.spec` is the protobuf aether.config.v1.MeshConfigSpec.
config
Package config loads the proxy MeshConfig (aether.config.v1.MeshConfig) from a YAML document — typically a mounted ConfigMap projected from the MeshConfig CR — validating it with protovalidate.
Package config loads the proxy MeshConfig (aether.config.v1.MeshConfig) from a YAML document — typically a mounted ConfigMap projected from the MeshConfig CR — validating it with protovalidate.
constants
Package constants defines the genuinely cross-tree basic constants used across the Aether codebase.
Package constants defines the genuinely cross-tree basic constants used across the Aether codebase.
constants/annotations
Package annotations defines the cross-tree Aether pod/service/node annotation keys and their accepted values.
Package annotations defines the cross-tree Aether pod/service/node annotation keys and their accepted values.
constants/labels
Package labels defines the cross-tree Aether Kubernetes labels and the mesh-service / clusterset label+annotation domain used to mark and link the generated selectorless Services the registrar owns.
Package labels defines the cross-tree Aether Kubernetes labels and the mesh-service / clusterset label+annotation domain used to mark and link the generated selectorless Services the registrar owns.
constants/mesh
Package mesh defines the cross-tree mesh data-plane ports, paths, domain, and netfilter marks shared by the agent, CNI plugin, and registrar.
Package mesh defines the cross-tree mesh data-plane ports, paths, domain, and netfilter marks shared by the agent, CNI plugin, and registrar.
crdcheck
Package crdcheck answers "is this CRD installed?" for controllers that watch OPTIONAL types.
Package crdcheck answers "is this CRD installed?" for controllers that watch OPTIONAL types.
extensionfilter
Package extensionfilter is the single source of truth for the proxy-extension escape hatch (proposal 025): the allow-list of Envoy HTTP filters aether supports and the in-process, fail-closed validation of an HTTPFilter's opaque typed_config.
Package extensionfilter is the single source of truth for the proxy-extension escape hatch (proposal 025): the allow-list of Envoy HTTP filters aether supports and the in-process, fail-closed validation of an HTTPFilter's opaque typed_config.
file
Package file provides atomic file write utilities and platform-specific optimizations.
Package file provides atomic file write utilities and platform-specific optimizations.
gammaproject
Package gammaproject projects Gateway API HTTPRoute/GRPCRoute rules attached to a Service into the data-plane GAMMA route model (proposal 018), as the registryv1.GammaRoute PROTO.
Package gammaproject projects Gateway API HTTPRoute/GRPCRoute rules attached to a Service into the data-plane GAMMA route model (proposal 018), as the registryv1.GammaRoute PROTO.
log
Package log provides structured logging configuration for Aether components.
Package log provides structured logging configuration for Aether components.
manager
Package manager provides shared bootstrap logic for controller-runtime managers used by both the agent and registrar commands.
Package manager provides shared bootstrap logic for controller-runtime managers used by both the agent and registrar commands.
must
Package must provides panic-on-error helpers for programming errors that should never occur at runtime, such as invalid flag registrations or failed type assertions on known types.
Package must provides panic-on-error helpers for programming errors that should never occur at runtime, such as invalid flag registrations or failed type assertions on known types.
referencegrant
Package referencegrant implements the Gateway API ReferenceGrant check used to admit cross-namespace backendRefs (conformance item: GATEWAY-HTTP core, cross-namespace route tests).
Package referencegrant implements the Gateway API ReferenceGrant check used to admit cross-namespace backendRefs (conformance item: GATEWAY-HTTP core, cross-namespace route tests).
retry
Package retry provides a generic retry mechanism with exponential backoff.
Package retry provides a generic retry mechanism with exponential backoff.
serviceref
Package serviceref defines the namespace-qualified identity of a mesh service (proposal 020 Part 1).
Package serviceref defines the namespace-qualified identity of a mesh service (proposal 020 Part 1).
spire
Package spire provides utilities for building mutual-TLS configurations backed by the SPIRE Workload API.
Package spire provides utilities for building mutual-TLS configurations backed by the SPIRE Workload API.
telemetry
Package telemetry is the instrumentation-only OpenTelemetry API surface shared across Aether: attribute keys, span helpers, and gRPC stats handlers.
Package telemetry is the instrumentation-only OpenTelemetry API surface shared across Aether: attribute keys, span helpers, and gRPC stats handlers.
telemetry/setup
Package setup wires OpenTelemetry providers for long-running binaries: an SDK MeterProvider bridged into controller-runtime's Prometheus registry, a TracerProvider, and a LoggerProvider, each with optional OTLP gRPC export.
Package setup wires OpenTelemetry providers for long-running binaries: an SDK MeterProvider bridged into controller-runtime's Prometheus registry, a TracerProvider, and a LoggerProvider, each with optional OTLP gRPC export.
udspath
Package udspath resolves the endpoint.aether.io/uds-socket annotation to the host path of a workload's Unix socket (proposal 034).
Package udspath resolves the endpoint.aether.io/uds-socket annotation to the host path of a workload's Unix socket (proposal 034).
xds
controller
cmd/controller command
internal/cmd
Package cmd provides the command-line interface for the aether-controller.
Package cmd provides the command-line interface for the aether-controller.
internal/edgeconfig
Package edgeconfig provides the admission validator for EdgeConfig resources (proposal 029): it proto-validates the spec so a CR can never describe a config the edge would refuse.
Package edgeconfig provides the admission validator for EdgeConfig resources (proposal 029): it proto-validates the spec so a CR can never describe a config the edge would refuse.
internal/endpointpolicy
Package endpointpolicy holds the controller's admission webhook for the EndpointPolicy CRD (proposal 034 Phase 1b, service-scoped UDS delivery).
Package endpointpolicy holds the controller's admission webhook for the EndpointPolicy CRD (proposal 034 Phase 1b, service-scoped UDS delivery).
internal/gatewayapi
Package gatewayapi provides the aether-controller's Gateway API HTTPRoute validating admission webhook.
Package gatewayapi provides the aether-controller's Gateway API HTTPRoute validating admission webhook.
internal/httpfilter
Package httpfilter holds the controller's admission webhook for the HTTPFilter CRD (proposal 025, the proxy-extension escape hatch).
Package httpfilter holds the controller's admission webhook for the HTTPFilter CRD (proposal 025, the proxy-extension escape hatch).
internal/meshconfig
Package meshconfig hosts the MeshConfig CRD machinery that runs in the aether-controller: a validating admission webhook (protovalidate) and a reconciler that projects the singleton MeshConfig custom resource into the ConfigMap the agent consumes.
Package meshconfig hosts the MeshConfig CRD machinery that runs in the aether-controller: a validating admission webhook (protovalidate) and a reconciler that projects the singleton MeshConfig custom resource into the ConfigMap the agent consumes.
internal/nodetaint
Package nodetaint holds the controller's node-taint guard: a leader-elected reconciler that RE-ARMS the aether startup taint (aetherlabels.TaintAgentNotReady) on a node whose agent pod is missing or not-Ready past a grace period, so a node that rebooted (kubelet never re-applies register-with-taints, gap G1) or whose agent crashed (gap G2) stops scheduling workload pods until an agent is serving again.
Package nodetaint holds the controller's node-taint guard: a leader-elected reconciler that RE-ARMS the aether startup taint (aetherlabels.TaintAgentNotReady) on a node whose agent pod is missing or not-Ready past a grace period, so a node that rebooted (kubelet never re-applies register-with-taints, gap G1) or whose agent crashed (gap G2) stops scheduling workload pods until an agent is serving again.
internal/podmutate
Package podmutate contains the controller's pod-mutating admission webhook.
Package podmutate contains the controller's pod-mutating admission webhook.
internal/webhook
Package webhook provides the aether-controller's single validating admission endpoint (/validate).
Package webhook provides the aether-controller's single validating admission endpoint (/validate).
e2e
udsecho command
Command udsecho is the UDS-serving test workload for the proposal 034 e2e harness (e2e/uds.sh): a tiny HTTP server that listens ONLY on a Unix domain socket inside its pod's emptyDir and never binds a TCP port.
Command udsecho is the UDS-serving test workload for the proposal 034 e2e harness (e2e/uds.sh): a tiny HTTP server that listens ONLY on a Unix domain socket inside its pod's emptyDir and never binds a TCP port.
prober
cmd/prober command
internal/prober
Package prober is a synthetic mesh-availability prober (proposal 013).
Package prober is a synthetic mesh-availability prober (proposal 013).
registrar
cmd/registrar command
internal/cmd
Package cmd provides command-line interface and configuration for the Aether registrar.
Package cmd provides command-line interface and configuration for the Aether registrar.
internal/configexport
Package configexport is the registrar's cross-cluster config EXPORT controller (proposal 026 EM1c).
Package configexport is the registrar's cross-cluster config EXPORT controller (proposal 026 EM1c).
internal/mcs
Package mcs implements Kubernetes Multi-Cluster Services (MCS-API) phase 1 for aether, backed by the origin-partitioned registry (proposals 018 + 006).
Package mcs implements Kubernetes Multi-Cluster Services (MCS-API) phase 1 for aether, backed by the origin-partitioned registry (proposals 018 + 006).
internal/replicator
Package replicator is the registrar's cross-region etcd replicator (proposal 006 Phase 2a).
Package replicator is the registrar's cross-region etcd replicator (proposal 006 Phase 2a).
internal/server
Package server implements the Registrar gRPC service, including endpoint snapshot management, change broadcasting, and external registry synchronization.
Package server implements the Registrar gRPC service, including endpoint snapshot management, change broadcasting, and external registry synchronization.
internal/services
Package services contains the registrar's mesh-Service generator: it projects the mesh service catalog into selectorless k8s Services on the mesh port — transparent- capture VIP/name handles (proposal 018, Phase 3a).
Package services contains the registrar's mesh-Service generator: it projects the mesh service catalog into selectorless k8s Services on the mesh port — transparent- capture VIP/name handles (proposal 018, Phase 3a).
Package registry provides interfaces for service endpoint registration and discovery.
Package registry provides interfaces for service endpoint registration and discovery.
backend
Package backend is the registry backend factory: it owns the mapping from a --registry-backend name ("kubernetes", "dynamodb", or "etcd") to a concrete registry.Registry implementation.
Package backend is the registry backend factory: it owns the mapping from a --registry-backend name ("kubernetes", "dynamodb", or "etcd") to a concrete registry.Registry implementation.
export
Package export holds the cross-cluster ServiceExport value type shared by the registry interface and its backends.
Package export holds the cross-cluster ServiceExport value type shared by the registry interface and its backends.
internal/ddb
Package ddb implements the Registry interface using AWS DynamoDB as the backend.
Package ddb implements the Registry interface using AWS DynamoDB as the backend.
internal/etcd
Package etcd implements the Registry interface using etcd as the backend.
Package etcd implements the Registry interface using etcd as the backend.
internal/k8s
Package k8s implements the Registry interface using the Kubernetes API server as the backend.
Package k8s implements the Registry interface using the Kubernetes API server as the backend.
internal/registrar
Package registrar implements the Registry interface using a Registrar gRPC service.
Package registrar implements the Registry interface using a Registrar gRPC service.
registrarclient
Package registrarclient exposes the registrar-backed registry.Registry implementation: the node agent's client to the in-cluster Registrar gRPC service.
Package registrarclient exposes the registrar-backed registry.Registry implementation: the node agent's client to the in-cluster Registrar gRPC service.
registrytest
Package registrytest provides shared assertions every Registry backend must satisfy, so the implementations (kubernetes, etcd, dynamodb, registrar) stay consistent.
Package registrytest provides shared assertions every Registry backend must satisfy, so the implementations (kubernetes, etcd, dynamodb, registrar) stay consistent.
test
envoy_validate
Package envoy_validate provides functions to build representative Envoy bootstrap JSON configurations derived from the aether node-agent's actual xDS proxy builders.
Package envoy_validate provides functions to build representative Envoy bootstrap JSON configurations derived from the aether node-agent's actual xDS proxy builders.
envoy_validate/generate command
Command generate-envoy-bootstrap emits representative Envoy bootstrap JSON files into --out for offline inspection or CI artifact storage.
Command generate-envoy-bootstrap emits representative Envoy bootstrap JSON files into --out for offline inspection or CI artifact storage.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL