Cilium · Schema

Cilium Endpoint

A Cilium-managed network endpoint representing a Kubernetes pod or container with associated security identity, IP addressing, and policy enforcement state.

Cloud NativeeBPFKubernetesNetworkingSecurity

Properties

Name Type Description
id integer Numeric endpoint ID assigned by the Cilium agent.
spec object
status object
View JSON Schema on GitHub

JSON Schema

cilium-endpoint-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://cilium.io/schemas/endpoint.json",
  "title": "Cilium Endpoint",
  "description": "A Cilium-managed network endpoint representing a Kubernetes pod or container with associated security identity, IP addressing, and policy enforcement state.",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "Numeric endpoint ID assigned by the Cilium agent.",
      "minimum": 1
    },
    "spec": {
      "$ref": "#/$defs/EndpointSpec"
    },
    "status": {
      "$ref": "#/$defs/EndpointStatus"
    }
  },
  "$defs": {
    "EndpointSpec": {
      "type": "object",
      "description": "Desired configuration for a Cilium endpoint.",
      "properties": {
        "addressing": {
          "$ref": "#/$defs/AddressPair"
        },
        "containerID": {
          "type": "string",
          "description": "Container runtime identifier for this endpoint.",
          "minLength": 1
        },
        "containerName": {
          "type": "string",
          "description": "Container name as reported by the container runtime."
        },
        "k8sNamespace": {
          "type": "string",
          "description": "Kubernetes namespace in which the pod runs."
        },
        "k8sPodName": {
          "type": "string",
          "description": "Kubernetes pod name associated with this endpoint."
        },
        "k8sUID": {
          "type": "string",
          "description": "Kubernetes pod UID uniquely identifying the pod object."
        },
        "labels": {
          "type": "array",
          "description": "Security labels associated with this endpoint in key=value format.",
          "items": {
            "type": "string",
            "pattern": "^[^=]+=.*$"
          }
        },
        "datapath-configuration": {
          "$ref": "#/$defs/DatapathConfiguration"
        }
      }
    },
    "AddressPair": {
      "type": "object",
      "description": "IPv4 and IPv6 address pair assigned to an endpoint.",
      "properties": {
        "ipv4": {
          "type": "string",
          "description": "IPv4 address assigned to the endpoint.",
          "format": "ipv4"
        },
        "ipv4-expiry-time": {
          "type": "string",
          "description": "Expiry time for the IPv4 address lease.",
          "format": "date-time"
        },
        "ipv6": {
          "type": "string",
          "description": "IPv6 address assigned to the endpoint.",
          "format": "ipv6"
        },
        "ipv6-expiry-time": {
          "type": "string",
          "description": "Expiry time for the IPv6 address lease.",
          "format": "date-time"
        }
      }
    },
    "DatapathConfiguration": {
      "type": "object",
      "description": "BPF datapath-specific configuration for an endpoint.",
      "properties": {
        "disable-sip-verification": {
          "type": "boolean",
          "description": "Disable source IP verification for this endpoint."
        },
        "external-ipam": {
          "type": "boolean",
          "description": "Whether IP addressing is managed by an external IPAM provider."
        },
        "install-endpoint-route": {
          "type": "boolean",
          "description": "Whether to install a per-endpoint host route."
        },
        "require-arp-passthrough": {
          "type": "boolean",
          "description": "Whether ARP passthrough is required for this endpoint."
        },
        "require-egress-prog": {
          "type": "boolean",
          "description": "Whether an egress BPF program is required."
        },
        "require-routing": {
          "type": "boolean",
          "description": "Whether routing is required for this endpoint."
        }
      }
    },
    "EndpointStatus": {
      "type": "object",
      "description": "Current observed state of a Cilium endpoint.",
      "properties": {
        "state": {
          "type": "string",
          "description": "Current lifecycle state of the endpoint.",
          "enum": [
            "waiting-for-identity",
            "not-ready",
            "waiting-to-regenerate",
            "regenerating",
            "restoring",
            "ready",
            "disconnecting",
            "disconnected",
            "invalid"
          ]
        },
        "identity": {
          "$ref": "#/$defs/Identity"
        },
        "networking": {
          "$ref": "#/$defs/EndpointNetworking"
        },
        "policy": {
          "$ref": "#/$defs/EndpointPolicyStatus"
        },
        "health": {
          "$ref": "#/$defs/EndpointHealth"
        },
        "controllers": {
          "type": "array",
          "description": "Status of background controllers managing this endpoint.",
          "items": {
            "$ref": "#/$defs/ControllerStatus"
          }
        },
        "log": {
          "type": "array",
          "description": "Recent status change log entries for this endpoint.",
          "items": {
            "$ref": "#/$defs/EndpointStatusChange"
          },
          "maxItems": 100
        }
      }
    },
    "Identity": {
      "type": "object",
      "description": "Cilium security identity derived from a workload's label set.",
      "required": ["id"],
      "properties": {
        "id": {
          "type": "integer",
          "format": "int64",
          "description": "Unique numeric security identity ID.",
          "minimum": 1
        },
        "labels": {
          "type": "array",
          "description": "Labels that define this security identity.",
          "items": {
            "type": "string"
          }
        },
        "labelsSHA256": {
          "type": "string",
          "description": "SHA256 hash of the serialized label set for change detection.",
          "pattern": "^[0-9a-f]{64}$"
        }
      }
    },
    "EndpointNetworking": {
      "type": "object",
      "description": "Network addressing and routing information for an endpoint.",
      "properties": {
        "addressing": {
          "type": "array",
          "description": "IP addresses assigned to this endpoint.",
          "items": {
            "$ref": "#/$defs/AddressPair"
          }
        },
        "node": {
          "type": "string",
          "description": "IP address of the Kubernetes node hosting this endpoint."
        },
        "interface-index": {
          "type": "integer",
          "description": "Linux network interface index for this endpoint's veth."
        },
        "interface-name": {
          "type": "string",
          "description": "Linux network interface name for this endpoint's veth device."
        }
      }
    },
    "EndpointPolicyStatus": {
      "type": "object",
      "description": "Policy enforcement status for ingress and egress traffic.",
      "properties": {
        "spec": {
          "$ref": "#/$defs/EndpointPolicy"
        },
        "realized": {
          "$ref": "#/$defs/EndpointPolicy"
        },
        "proxy-statistics": {
          "type": "array",
          "description": "Statistics from L7 proxy enforcement.",
          "items": {
            "$ref": "#/$defs/ProxyStatistics"
          }
        }
      }
    },
    "EndpointPolicy": {
      "type": "object",
      "description": "The set of policy rules applied to an endpoint.",
      "properties": {
        "allowed-egress-identities": {
          "type": "array",
          "description": "Numeric identity IDs that egress traffic from this endpoint may reach.",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        },
        "allowed-ingress-identities": {
          "type": "array",
          "description": "Numeric identity IDs permitted to send traffic to this endpoint.",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        },
        "denied-egress-identities": {
          "type": "array",
          "description": "Numeric identity IDs explicitly denied for egress.",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        },
        "denied-ingress-identities": {
          "type": "array",
          "description": "Numeric identity IDs explicitly denied for ingress.",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        },
        "cidr-policy": {
          "type": "object",
          "description": "CIDR-based policy configuration.",
          "properties": {
            "egress": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/CIDRRule"
              },
              "description": "CIDR rules for egress traffic."
            },
            "ingress": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/CIDRRule"
              },
              "description": "CIDR rules for ingress traffic."
            }
          }
        },
        "id": {
          "type": "integer",
          "format": "int64",
          "description": "Policy revision number when these rules were last computed."
        }
      }
    },
    "CIDRRule": {
      "type": "object",
      "description": "A CIDR-based policy rule.",
      "required": ["cidr"],
      "properties": {
        "cidr": {
          "type": "string",
          "description": "CIDR block this rule applies to.",
          "pattern": "^([0-9]{1,3}\\.){3}[0-9]{1,3}/[0-9]{1,2}$|^[0-9a-fA-F:]+/[0-9]{1,3}$"
        },
        "except": {
          "type": "array",
          "description": "CIDR blocks to exclude from this rule.",
          "items": {
            "type": "string"
          }
        },
        "derived-from-rules": {
          "type": "array",
          "description": "Policy rule labels from which this CIDR rule was derived.",
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "ProxyStatistics": {
      "type": "object",
      "description": "L7 proxy traffic statistics for an endpoint port.",
      "properties": {
        "location": {
          "type": "string",
          "description": "Location of the proxy (ingress or egress).",
          "enum": ["Ingress", "Egress"]
        },
        "port": {
          "type": "integer",
          "description": "Port number being proxied."
        },
        "protocol": {
          "type": "string",
          "description": "Application protocol being proxied (HTTP, Kafka, DNS, etc.)."
        },
        "statistics": {
          "type": "object",
          "description": "Traffic statistics counters.",
          "properties": {
            "requests": {
              "$ref": "#/$defs/TrafficStatistics"
            },
            "responses": {
              "$ref": "#/$defs/TrafficStatistics"
            }
          }
        }
      }
    },
    "TrafficStatistics": {
      "type": "object",
      "description": "Traffic counters for a direction.",
      "properties": {
        "received": {
          "type": "integer",
          "format": "int64",
          "description": "Number of requests or responses received."
        },
        "sent": {
          "type": "integer",
          "format": "int64",
          "description": "Number of requests or responses sent."
        },
        "forwarded": {
          "type": "integer",
          "format": "int64",
          "description": "Number of requests or responses forwarded."
        },
        "denied": {
          "type": "integer",
          "format": "int64",
          "description": "Number of requests or responses denied by policy."
        },
        "error": {
          "type": "integer",
          "format": "int64",
          "description": "Number of requests or responses that encountered errors."
        }
      }
    },
    "EndpointHealth": {
      "type": "object",
      "description": "Health status of an endpoint's BPF programs and policy.",
      "properties": {
        "bpf": {
          "type": "string",
          "description": "Health status of BPF programs for this endpoint.",
          "enum": ["OK", "Warning", "Failure", "Disabled", "Pending"]
        },
        "connected": {
          "type": "boolean",
          "description": "Whether the endpoint's network interface is connected."
        },
        "overallHealth": {
          "type": "string",
          "description": "Overall health status of the endpoint.",
          "enum": ["OK", "Warning", "Failure", "Disabled", "Pending"]
        },
        "policy": {
          "type": "string",
          "description": "Health status of policy enforcement for this endpoint.",
          "enum": ["OK", "Warning", "Failure", "Disabled", "Pending"]
        }
      }
    },
    "ControllerStatus": {
      "type": "object",
      "description": "Status of a background controller managing endpoint reconciliation.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Controller name."
        },
        "configuration": {
          "type": "object",
          "description": "Controller configuration settings."
        },
        "status": {
          "type": "object",
          "description": "Current controller run status.",
          "properties": {
            "consecutiveFailureCount": {
              "type": "integer",
              "description": "Number of consecutive failed runs.",
              "minimum": 0
            },
            "failureCount": {
              "type": "integer",
              "description": "Total number of failed runs.",
              "minimum": 0
            },
            "lastFailureTimestamp": {
              "type": "string",
              "format": "date-time",
              "description": "Timestamp of the most recent failure."
            },
            "lastSuccessTimestamp": {
              "type": "string",
              "format": "date-time",
              "description": "Timestamp of the most recent successful run."
            },
            "successCount": {
              "type": "integer",
              "description": "Total number of successful runs.",
              "minimum": 0
            }
          }
        },
        "uuid": {
          "type": "string",
          "description": "Unique identifier for this controller instance."
        }
      }
    },
    "EndpointStatusChange": {
      "type": "object",
      "description": "A single status change entry in the endpoint log.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Status change result code.",
          "enum": ["ok", "failed"]
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of the status change event."
        },
        "state": {
          "type": "string",
          "description": "Endpoint state after this change.",
          "enum": [
            "waiting-for-identity",
            "not-ready",
            "waiting-to-regenerate",
            "regenerating",
            "restoring",
            "ready",
            "disconnecting",
            "disconnected",
            "invalid"
          ]
        },
        "timestamp": {
          "type": "string",
          "description": "ISO 8601 timestamp when this status change occurred."
        }
      }
    }
  }
}