v1alpha1

package
v0.9.2 Latest Latest
Warning

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

Go to latest
Published: Jun 23, 2026 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the llm-d.ai API group.

+kubebuilder:object:generate=true +groupName=llm-d.ai

Index

Constants

View Source
const GroupName = "llm-d.ai"

GroupName specifies the group name used to register the objects.

Variables

View Source
var (
	// localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes.
	SchemeBuilder runtime.SchemeBuilder

	// Deprecated: use Install instead
	AddToScheme = localSchemeBuilder.AddToScheme
	Install     = localSchemeBuilder.AddToScheme
)
View Source
var GroupVersion = v1.GroupVersion{Group: GroupName, Version: "v1alpha1"}

GroupVersion specifies the group and the version used to register the objects.

View Source
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}

SchemeGroupVersion is group version used to register these objects

Deprecated: use GroupVersion instead.

Functions

func Resource

func Resource(resource string) schema.GroupResource

Resource takes an unqualified resource and returns a Group qualified GroupResource

Types

type DataLayerConfig

type DataLayerConfig struct {
	// +optional
	// InjectDefaults controls automatic injection of the default metrics source and extractor.
	// Defaults to true when omitted. Set to false to disable all default source injection.
	InjectDefaults *bool `json:"injectDefaults,omitempty"`
	// +optional
	// Sources is the list of sources to define to the DataLayer
	Sources []DataLayerSource `json:"sources,omitempty"`
	// +optional
	// Discovery specifies which EndpointDiscovery plugin to use for populating the
	// endpoint datastore. When set, the EPP bypasses Kubernetes CRD reconcilers and
	// relies entirely on the referenced plugin to enumerate and track inference
	// endpoints. This enables running the EPP without a Kubernetes cluster.
	// If omitted, the EPP uses the default Kubernetes-based discovery.
	Discovery *DiscoveryConfig `json:"discovery,omitempty"`
}

DataLayerConfig contains the configuration of the DataLayer feature

func (*DataLayerConfig) DeepCopy

func (in *DataLayerConfig) DeepCopy() *DataLayerConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataLayerConfig.

func (*DataLayerConfig) DeepCopyInto

func (in *DataLayerConfig) DeepCopyInto(out *DataLayerConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DataLayerConfig) String

func (dlc *DataLayerConfig) String() string

type DataLayerExtractor

type DataLayerExtractor struct {
	// +required
	// +kubebuilder:validation:Required
	// PluginRef specifies a particular Plugin instance to be associated with
	// this Extractor. The reference is to the name of an entry of the Plugins
	// defined in the configuration's Plugins section
	PluginRef string `json:"pluginRef"`
}

DataLayerExtractor contains the configuration of an Extractor of the DataLayer feature

func (*DataLayerExtractor) DeepCopy

func (in *DataLayerExtractor) DeepCopy() *DataLayerExtractor

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataLayerExtractor.

func (*DataLayerExtractor) DeepCopyInto

func (in *DataLayerExtractor) DeepCopyInto(out *DataLayerExtractor)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (DataLayerExtractor) String

func (dle DataLayerExtractor) String() string

type DataLayerSource

type DataLayerSource struct {
	// +required
	// +kubebuilder:validation:Required
	// PluginRef specifies a particular Plugin instance to be associated with
	// this Source. The reference is to the name of an entry of the Plugins
	// defined in the configuration's Plugins section
	PluginRef string `json:"pluginRef"`

	// +required
	// +kubebuilder:validation:Required
	// Extractors specifies the list of Plugin instances to be associated with
	// this Source. The entries are references to the names of entries of the Plugins
	// defined in the configuration's Plugins section
	Extractors []DataLayerExtractor `json:"extractors"`
}

DataLayerSource contains the configuration of a DataSource of the DataLayer feature

func (*DataLayerSource) DeepCopy

func (in *DataLayerSource) DeepCopy() *DataLayerSource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataLayerSource.

func (*DataLayerSource) DeepCopyInto

func (in *DataLayerSource) DeepCopyInto(out *DataLayerSource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (DataLayerSource) String

func (dls DataLayerSource) String() string

type DiscoveryConfig

type DiscoveryConfig struct {
	// +required
	// +kubebuilder:validation:Required
	// PluginRef is the name of the plugin instance (from the Plugins list) that
	// implements EndpointDiscovery.
	PluginRef string `json:"pluginRef"`
}

DiscoveryConfig references the EndpointDiscovery plugin to use.

func (*DiscoveryConfig) DeepCopy

func (in *DiscoveryConfig) DeepCopy() *DiscoveryConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DiscoveryConfig.

func (*DiscoveryConfig) DeepCopyInto

func (in *DiscoveryConfig) DeepCopyInto(out *DiscoveryConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DiscoveryConfig) String

func (dc *DiscoveryConfig) String() string

type EndpointPickerConfig

type EndpointPickerConfig struct {
	metav1.TypeMeta `json:",inline"`

	// +optional
	// FeatureGates is a set of flags that enable various experimental features with the EPP.
	// If omitted none of these experimental features will be enabled.
	FeatureGates FeatureGates `json:"featureGates,omitempty"`

	// +required
	// +kubebuilder:validation:Required
	// Plugins is the list of plugins that will be instantiated.
	Plugins []PluginSpec `json:"plugins"`

	// +required
	// +kubebuilder:validation:Required
	// SchedulingProfiles is the list of named SchedulingProfiles
	// that will be created.
	SchedulingProfiles []SchedulingProfile `json:"schedulingProfiles"`

	// +optional
	// DataLayer configures the DataLayer. It is required if the new DataLayer is enabled.
	DataLayer *DataLayerConfig `json:"dataLayer"`

	// +optional
	// FlowControl configures the Flow Control layer.
	// This configuration is only respected if the "flowControl" FeatureGate is enabled.
	FlowControl *FlowControlConfig `json:"flowControl,omitempty"`

	// +optional
	// RequestHandler specifies the handling logic used by the EPP to process incoming requests.
	RequestHandler *RequestHandlerConfig `json:"requestHandler,omitempty"`

	// +optional
	// SaturationDetector specifies which saturation detector plugin to use.
	//
	// Deprecated: use flowControl.saturationDetector instead. If both are set, the new field is used.
	// Tracked in https://github.com/llm-d/llm-d-router/issues/1308
	SaturationDetector *SaturationDetectorConfig `json:"saturationDetector,omitempty"`

	// +optional
	// Parser specifies the parsing logic used by the EPP to process protocol messages.
	//
	// Deprecated: use requestHandler.parser instead. If both are set, the new field is used.
	// Tracked in https://github.com/llm-d/llm-d-router/issues/1308
	Parser *ParserConfig `json:"parser,omitempty"`
}

EndpointPickerConfig is the Schema for the endpointpickerconfigs API

func (*EndpointPickerConfig) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EndpointPickerConfig.

func (*EndpointPickerConfig) DeepCopyInto

func (in *EndpointPickerConfig) DeepCopyInto(out *EndpointPickerConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*EndpointPickerConfig) DeepCopyObject

func (in *EndpointPickerConfig) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (EndpointPickerConfig) String

func (cfg EndpointPickerConfig) String() string

type FeatureGates

type FeatureGates []string

FeatureGates is a set of flags that enable various experimental features with the EPP

func (FeatureGates) DeepCopy

func (in FeatureGates) DeepCopy() FeatureGates

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FeatureGates.

func (FeatureGates) DeepCopyInto

func (in FeatureGates) DeepCopyInto(out *FeatureGates)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (FeatureGates) String

func (fg FeatureGates) String() string

type FlowControlConfig

type FlowControlConfig struct {
	// +optional
	// MaxBytes defines the global maximum aggregate byte size of all active requests across all priority
	// levels. If this limit is exceeded, new requests will be rejected even if their specific
	// priority band has capacity.
	// Accepts standard Kubernetes resource quantities (e.g., "1Gi", "500M").
	// If omitted, no global byte limit is enforced.
	MaxBytes *resource.Quantity `json:"maxBytes,omitempty"`

	// +optional
	// MaxRequests defines the global maximum number of concurrent requests across all priority
	// levels. If this limit is exceeded, new requests will be rejected even if their specific
	// priority band has capacity.
	// Accepts standard Kubernetes resource quantities (e.g., "100", "1k").
	// If omitted, no global request limit is enforced.
	MaxRequests *resource.Quantity `json:"maxRequests,omitempty"`

	// +optional
	// DefaultRequestTTL serves as a fallback timeout for requests that do not specify their own
	// deadline.
	// It ensures that requests do not hang indefinitely in the queue.
	// If 0 or omitted, it defaults to the client context deadline, meaning requests may wait
	// indefinitely unless cancelled by the client.
	DefaultRequestTTL *metav1.Duration `json:"defaultRequestTTL,omitempty"`

	// +optional
	// DefaultPriorityBand allows you to define a template for handling traffic with priority levels
	// that are not explicitly configured in `PriorityBands`.
	// This ensures that unforeseen traffic classes are still managed (e.g., given a default capacity
	// limit) rather than being rejected or treated arbitrarily.
	// If not specified, a system-default template is used to dynamically provision bands for new
	// priority levels. This template cascades to the standard `PriorityBandConfig` defaults.
	DefaultPriorityBand *PriorityBandConfig `json:"defaultPriorityBand,omitempty"`

	// +optional
	// DefaultNegativePriorityBand allows you to define a separate template for priority levels
	// strictly below zero. This enables designating negative-priority traffic as sheddable by
	// setting lower capacity limits (e.g., maxBytes: "0" to drop immediately).
	// If not specified, negative priorities fall back to DefaultPriorityBand.
	DefaultNegativePriorityBand *PriorityBandConfig `json:"defaultNegativePriorityBand,omitempty"`

	// PriorityBands allows you to explicitly define policies (like capacity limits) for specific
	// priority levels. Traffic matching these priorities will be handled according to these rules.
	// If a priority band is not specified, it uses specific defaults.
	PriorityBands []PriorityBandConfig `json:"priorityBands,omitempty"`

	// +optional
	// UsageLimitPolicyPluginRef specifies the UsageLimitPolicy plugin to use for adaptive capacity management.
	// Must reference a named plugin instance defined in the top-level Plugins section.
	// If omitted, a default static policy (threshold=1.0, no gating) is used.
	UsageLimitPolicyPluginRef string `json:"usageLimitPolicyPluginRef,omitempty"`

	// +optional
	// SaturationDetector specifies which saturation detector plugin to use for both Admission and
	// Flow Control. If omitted, "utilization-detector" is used by default.
	SaturationDetector *SaturationDetectorConfig `json:"saturationDetector,omitempty"`
}

FlowControlConfig configures the Flow Control layer.

func (*FlowControlConfig) DeepCopy

func (in *FlowControlConfig) DeepCopy() *FlowControlConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlowControlConfig.

func (*FlowControlConfig) DeepCopyInto

func (in *FlowControlConfig) DeepCopyInto(out *FlowControlConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*FlowControlConfig) String

func (fcc *FlowControlConfig) String() string

type ParserConfig

type ParserConfig struct {
	// +required
	// +kubebuilder:validation:Required
	// PluginRef specifies a particular Plugin instance to be associated with
	// this Parser. The reference is to the name of an entry of the Plugins
	// defined in the configuration's Plugins section
	// Default: openai-parser
	PluginRef string `json:"pluginRef"`
}

ParserConfig contains the configuration for a parser.

func (*ParserConfig) DeepCopy

func (in *ParserConfig) DeepCopy() *ParserConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParserConfig.

func (*ParserConfig) DeepCopyInto

func (in *ParserConfig) DeepCopyInto(out *ParserConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ParserConfig) String

func (pc *ParserConfig) String() string

type PluginSpec

type PluginSpec struct {
	// +optional
	// Name provides a name for plugin entries to reference. If
	// omitted, the value of the Plugin's Type field will be used.
	Name string `json:"name"`

	// +required
	// +kubebuilder:validation:Required
	// Type specifies the plugin type to be instantiated.
	Type string `json:"type"`

	// +optional
	// Parameters are the set of parameters to be passed to the plugin's
	// factory function. The factory function is responsible
	// to parse the parameters.
	Parameters json.RawMessage `json:"parameters"`
}

PluginSpec contains the information that describes a plugin that will be instantiated.

func (*PluginSpec) DeepCopy

func (in *PluginSpec) DeepCopy() *PluginSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PluginSpec.

func (*PluginSpec) DeepCopyInto

func (in *PluginSpec) DeepCopyInto(out *PluginSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (PluginSpec) String

func (ps PluginSpec) String() string

type PriorityBandConfig

type PriorityBandConfig struct {
	// Priority is the integer priority level for this band.
	// Higher values indicate higher priority.
	Priority int `json:"priority"`

	// +optional
	// MaxBytes is the maximum number of bytes allowed for this priority band.
	// Accepts standard Kubernetes resource quantities (e.g., "1Gi", "500M").
	// If omitted, the system default is used.
	MaxBytes *resource.Quantity `json:"maxBytes,omitempty"`

	// +optional
	// MaxRequests is the maximum number of concurrent requests allowed for this priority band.
	// Accepts standard Kubernetes resource quantities (e.g., "100", "1k").
	// If omitted, no request limit is enforced.
	MaxRequests *resource.Quantity `json:"maxRequests,omitempty"`

	// +optional
	// FairnessPolicyRef specifies the name of the policy that governs flow selection.
	// If omitted, the system default ("global-strict-fairness-policy") is used.
	FairnessPolicyRef string `json:"fairnessPolicyRef,omitempty"`

	// +optional
	// OrderingPolicyRef specifies the name of the policy that governs request selection within a flow.
	// If omitted, the system default ("fcfs-ordering-policy") is used.
	OrderingPolicyRef string `json:"orderingPolicyRef,omitempty"`
}

PriorityBandConfig configures a single priority band.

func (*PriorityBandConfig) DeepCopy

func (in *PriorityBandConfig) DeepCopy() *PriorityBandConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PriorityBandConfig.

func (*PriorityBandConfig) DeepCopyInto

func (in *PriorityBandConfig) DeepCopyInto(out *PriorityBandConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (PriorityBandConfig) String

func (pbc PriorityBandConfig) String() string

type RequestHandlerConfig

type RequestHandlerConfig struct {
	// +optional
	// Parsers specifies the parsing plugins used by the EPP to process protocol messages.
	// If unspecified, default parsing behavior will be applied.
	Parsers []ParserConfig `json:"parsers,omitempty"`
}

RequestHandlerConfig contains the configuration for incoming request handling.

func (*RequestHandlerConfig) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequestHandlerConfig.

func (*RequestHandlerConfig) DeepCopyInto

func (in *RequestHandlerConfig) DeepCopyInto(out *RequestHandlerConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RequestHandlerConfig) String

func (rhc *RequestHandlerConfig) String() string

type SaturationDetectorConfig

type SaturationDetectorConfig struct {
	// +optional
	// PluginRef specifies the name of the plugin instance to use for saturation detection.
	// The reference is to the name of an entry of the Plugins defined in the configuration's Plugins section.
	// If unspecified, "utilization-detector" is used by default.
	PluginRef string `json:"pluginRef,omitempty"`
}

SaturationDetectorConfig contains the configuration for a saturation detector.

func (*SaturationDetectorConfig) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SaturationDetectorConfig.

func (*SaturationDetectorConfig) DeepCopyInto

func (in *SaturationDetectorConfig) DeepCopyInto(out *SaturationDetectorConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SaturationDetectorConfig) String

func (sdc *SaturationDetectorConfig) String() string

type SchedulingPlugin

type SchedulingPlugin struct {
	// +required
	// +kubebuilder:validation:Required
	// PluginRef specifies a particular Plugin instance to be associated with
	// this SchedulingProfile. The reference is to the name of an
	// entry of the Plugins defined in the configuration's Plugins
	// section
	PluginRef string `json:"pluginRef"`

	// +optional
	// Weight is the weight to be used if this plugin is a Scorer.
	Weight *float64 `json:"weight"`
}

SchedulingPlugin describes a plugin that will be associated with a SchedulingProfile entry.

func (*SchedulingPlugin) DeepCopy

func (in *SchedulingPlugin) DeepCopy() *SchedulingPlugin

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingPlugin.

func (*SchedulingPlugin) DeepCopyInto

func (in *SchedulingPlugin) DeepCopyInto(out *SchedulingPlugin)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (SchedulingPlugin) String

func (sp SchedulingPlugin) String() string

type SchedulingProfile

type SchedulingProfile struct {
	// +kubebuilder:validation:Required
	// Name specifies the name of this SchedulingProfile
	Name string `json:"name"`

	// +required
	// +kubebuilder:validation:Required
	// Plugins is the list of plugins for this SchedulingProfile. They are assigned
	// to the appropriate "slots" based on their type.
	Plugins []SchedulingPlugin `json:"plugins"`
}

SchedulingProfile contains the information to create a SchedulingProfile entry to be used by the scheduler.

func (*SchedulingProfile) DeepCopy

func (in *SchedulingProfile) DeepCopy() *SchedulingProfile

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingProfile.

func (*SchedulingProfile) DeepCopyInto

func (in *SchedulingProfile) DeepCopyInto(out *SchedulingProfile)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (SchedulingProfile) String

func (sp SchedulingProfile) String() string

Jump to

Keyboard shortcuts

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