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
- Variables
- func Resource(resource string) schema.GroupResource
- type DataLayerConfig
- type DataLayerExtractor
- type DataLayerSource
- type DiscoveryConfig
- type EndpointPickerConfig
- type FeatureGates
- type FlowControlConfig
- type ParserConfig
- type PluginSpec
- type PriorityBandConfig
- type RequestHandlerConfig
- type SaturationDetectorConfig
- type SchedulingPlugin
- type SchedulingProfile
Constants ¶
const GroupName = "llm-d.ai"
GroupName specifies the group name used to register the objects.
Variables ¶
var ( // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. SchemeBuilder runtime.SchemeBuilder // Deprecated: use Install instead AddToScheme = localSchemeBuilder.AddToScheme Install = localSchemeBuilder.AddToScheme )
var GroupVersion = v1.GroupVersion{Group: GroupName, Version: "v1alpha1"}
GroupVersion specifies the group and the version used to register the objects.
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 ¶
func (in *EndpointPickerConfig) DeepCopy() *EndpointPickerConfig
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 ¶
func (in *RequestHandlerConfig) DeepCopy() *RequestHandlerConfig
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 ¶
func (in *SaturationDetectorConfig) DeepCopy() *SaturationDetectorConfig
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