Service Mesh Interface (SMI) · JSON Structure

Service Mesh Interface Structure

Logical structure of the four SMI API groups and their resource kinds. Documents the conceptual API surface of an archived CNCF specification.

Type: Properties: 0
Service MeshKubernetesTraffic PolicyTraffic ManagementTraffic MetricsStandardsCNCFArchivedSpecificationCustom Resource Definitions

Service Mesh Interface Structure is a JSON Structure definition published by Service Mesh Interface (SMI). It conforms to the https://json-structure.org/schema/v1 meta-schema.

Meta-schema: https://json-structure.org/schema/v1

JSON Structure

service-mesh-interface-structure.json Raw ↑
{
  "$schema": "https://json-structure.org/schema/v1",
  "$id": "https://api-evangelist.github.io/service-mesh-interface/json-structure/service-mesh-interface-structure.json",
  "title": "Service Mesh Interface (SMI) Structure",
  "description": "Logical structure of the four SMI API groups and their resource kinds. Documents the conceptual API surface of an archived CNCF specification.",
  "version": "0.6.0",
  "status": "archived",
  "archivalDate": "2023-10-20",
  "successor": "Kubernetes Gateway API (GAMMA Initiative)",
  "successorUrl": "https://gateway-api.sigs.k8s.io/mesh/gamma/",
  "apiGroups": [
    {
      "group": "access.smi-spec.io",
      "version": "v1alpha3",
      "concern": "Traffic Policy / Authorization",
      "kinds": ["TrafficTarget"],
      "relations": {
        "TrafficTarget.spec.rules": "references specs.smi-spec.io kinds (HTTPRouteGroup, TCPRoute, UDPRoute)",
        "TrafficTarget.spec.sources": "Kubernetes ServiceAccount references",
        "TrafficTarget.spec.destination": "Kubernetes ServiceAccount reference"
      }
    },
    {
      "group": "specs.smi-spec.io",
      "version": "v1alpha4",
      "concern": "Traffic Specs / Routing",
      "kinds": ["HTTPRouteGroup", "TCPRoute", "UDPRoute"],
      "relations": {
        "HTTPRouteGroup": "consumed by TrafficTarget.rules and TrafficSplit.matches",
        "TCPRoute": "consumed by TrafficTarget.rules",
        "UDPRoute": "consumed by TrafficTarget.rules"
      }
    },
    {
      "group": "split.smi-spec.io",
      "version": "v1alpha4",
      "concern": "Traffic Management / Progressive Delivery",
      "kinds": ["TrafficSplit"],
      "relations": {
        "TrafficSplit.spec.service": "root Kubernetes Service",
        "TrafficSplit.spec.backends[].service": "backend Kubernetes Service with integer weight",
        "TrafficSplit.spec.matches": "optional HTTPRouteGroup references for header-based segmentation"
      }
    },
    {
      "group": "metrics.smi-spec.io",
      "version": "v1alpha1",
      "concern": "Traffic Telemetry / Observability",
      "kinds": ["TrafficMetrics", "TrafficMetricsList"],
      "exposure": "Kubernetes APIService aggregation layer at /apis/metrics.smi-spec.io/v1alpha1",
      "scopedResources": ["Pod", "Deployment", "Namespace"],
      "metrics": [
        "p99_response_latency",
        "p90_response_latency",
        "p50_response_latency",
        "success_count",
        "failure_count"
      ]
    }
  ]
}