Skip to content

CNI API

aether.cni.v1 — The gRPC contract between the CNI plugin and the node agent: what the plugin reports about a pod when the container runtime calls ADD, and what it withdraws at DEL.

Generated from the schema

Rendered by protoc from api/aether/cni/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/cni/v1/cni.proto

CNIPod

Field Type Label Description
name string
namespace string
network_namespace string
container_id string
ips string repeated
labels CNIPod.LabelsEntry repeated
annotations CNIPod.AnnotationsEntry repeated
pid google.protobuf.UInt32Value
service_account string
terminating bool terminating is set by the agent when the Kubernetes pod's deletionTimestamp appears (deletion requested, before SIGTERM reaches the app). A terminating pod's endpoint is deregistered immediately so new requests stop routing to it while in-flight ones drain through the grace period; the liveness loop must never re-register it. Local xDS resources stay until the CNI DEL performs final teardown.
uid string uid is the Kubernetes pod UID, fetched from the API server on CNI ADD and persisted so listener regeneration from storage can resolve kubelet pod-volume paths (proposal 034, UDS delivery) without the API server. Empty on records written before the field existed.

CNIPod.AnnotationsEntry

Field Type Label Description
key string
value string

CNIPod.LabelsEntry

Field Type Label Description
key string
value string

api/aether/cni/v1/service.proto

AddPodRequest

Field Type Label Description
pod CNIPod

AddPodResponse

Field Type Label Description
result AddPodResponse.Result

RemovePodRequest

Field Type Label Description
name string
namespace string
container_id string

RemovePodResponse

Field Type Label Description
result RemovePodResponse.Result

AddPodResponse.Result

Name Number Description
RESULT_UNSPECIFIED 0
RESULT_SUCCESS 1
RESULT_ERROR 2
RESULT_IGNORED 3 RESULT_IGNORED: the pod is not mesh-managed (aether.io/managed != "true", a system namespace, or no IPs) — the agent stored no config and the CNI plugin must install NO capture/redirect (the label is only visible to the agent, which fetches it from the API; the CNI cannot see labels via CRI).

RemovePodResponse.Result

Name Number Description
RESULT_UNSPECIFIED 0
RESULT_SUCCESS 1
RESULT_ERROR 2
RESULT_IGNORED 3 RESULT_IGNORED: the pod is not mesh-managed (aether.io/managed != "true", a system namespace, or no IPs) — the agent stored no config and the CNI plugin must install NO capture/redirect (the label is only visible to the agent, which fetches it from the API; the CNI cannot see labels via CRI).

CNIService

Method Name Request Type Response Type Description
AddPod AddPodRequest AddPodResponse
RemovePod RemovePodRequest RemovePodResponse