Seldon · Schema

SeldonDeployment

Schema for a SeldonDeployment Kubernetes custom resource managed via the Seldon Enterprise Platform API.

MLOpsMachine LearningModel ServingInferenceKubernetesAI OperationsDrift DetectionExplainabilityCanary DeploymentA/B TestingLLMOps

Properties

Name Type Description
apiVersion string The Seldon Core API version.
kind string Always SeldonDeployment.
metadata object Standard Kubernetes object metadata.
spec object The desired state of the SeldonDeployment.
status object The observed state of the SeldonDeployment (read-only).
View JSON Schema on GitHub

JSON Schema

seldon-deployment.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/seldon/main/json-schema/seldon-deployment.json",
  "title": "SeldonDeployment",
  "description": "Schema for a SeldonDeployment Kubernetes custom resource managed via the Seldon Enterprise Platform API.",
  "type": "object",
  "properties": {
    "apiVersion": {
      "type": "string",
      "const": "machinelearning.seldon.io/v1",
      "description": "The Seldon Core API version."
    },
    "kind": {
      "type": "string",
      "const": "SeldonDeployment",
      "description": "Always SeldonDeployment."
    },
    "metadata": {
      "type": "object",
      "description": "Standard Kubernetes object metadata.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the deployment."
        },
        "namespace": {
          "type": "string",
          "description": "The Kubernetes namespace."
        },
        "labels": {
          "type": "object",
          "additionalProperties": { "type": "string" }
        },
        "annotations": {
          "type": "object",
          "additionalProperties": { "type": "string" }
        }
      },
      "required": ["name"]
    },
    "spec": {
      "type": "object",
      "description": "The desired state of the SeldonDeployment.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The deployment name (used in the inference URL path)."
        },
        "predictors": {
          "type": "array",
          "description": "One or more predictor specifications defining model graphs.",
          "items": {
            "$ref": "#/$defs/PredictorSpec"
          },
          "minItems": 1
        },
        "annotations": {
          "type": "object",
          "additionalProperties": { "type": "string" }
        }
      },
      "required": ["predictors"]
    },
    "status": {
      "type": "object",
      "description": "The observed state of the SeldonDeployment (read-only).",
      "properties": {
        "state": {
          "type": "string",
          "enum": ["Available", "Creating", "Failed"],
          "description": "The current state of the deployment."
        },
        "description": {
          "type": "string"
        },
        "serviceUrl": {
          "type": "string",
          "description": "The external URL for the inference endpoint."
        }
      }
    }
  },
  "required": ["apiVersion", "kind", "metadata", "spec"],
  "$defs": {
    "PredictorSpec": {
      "type": "object",
      "title": "PredictorSpec",
      "description": "A predictor in the inference graph with optional traffic weight.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Unique name for this predictor within the deployment."
        },
        "traffic": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Percentage of traffic routed to this predictor (default 100)."
        },
        "replicas": {
          "type": "integer",
          "minimum": 1,
          "description": "Number of replicas for this predictor."
        },
        "graph": {
          "$ref": "#/$defs/PredictiveUnit"
        }
      },
      "required": ["name", "graph"]
    },
    "PredictiveUnit": {
      "type": "object",
      "title": "PredictiveUnit",
      "description": "A node in the inference graph representing a model, router, combiner, or transformer.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the predictive unit, matching a container name."
        },
        "type": {
          "type": "string",
          "enum": ["MODEL", "ROUTER", "COMBINER", "TRANSFORMER", "OUTPUT_TRANSFORMER"],
          "description": "The role of this unit in the inference graph."
        },
        "implementation": {
          "type": "string",
          "description": "A pre-packaged inference server implementation (e.g. SKLEARN_SERVER, TENSORFLOW_SERVER)."
        },
        "modelUri": {
          "type": "string",
          "description": "URI of the serialized model artifact (e.g. gs://, s3://, pvc://)."
        },
        "envSecretRefName": {
          "type": "string",
          "description": "Name of the Kubernetes Secret providing cloud storage credentials."
        },
        "children": {
          "type": "array",
          "items": { "$ref": "#/$defs/PredictiveUnit" },
          "description": "Child nodes in the inference pipeline."
        }
      },
      "required": ["name"]
    }
  },
  "examples": [
    {
      "apiVersion": "machinelearning.seldon.io/v1",
      "kind": "SeldonDeployment",
      "metadata": {
        "name": "iris-model",
        "namespace": "default"
      },
      "spec": {
        "name": "iris",
        "predictors": [
          {
            "name": "default",
            "traffic": 100,
            "replicas": 1,
            "graph": {
              "name": "classifier",
              "type": "MODEL",
              "implementation": "SKLEARN_SERVER",
              "modelUri": "gs://seldon-models/v1.20.0-dev/sklearn/iris"
            }
          }
        ]
      }
    }
  ]
}