Files
kserve/test/crds/wva_variantautoscalings.yaml
2026-04-03 19:12:00 +05:30

226 lines
9.7 KiB
YAML

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.2
name: variantautoscalings.llmd.ai
spec:
group: llmd.ai
names:
kind: VariantAutoscaling
listKind: VariantAutoscalingList
plural: variantautoscalings
shortNames:
- va
singular: variantautoscaling
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.scaleTargetRef.name
name: Target
type: string
- jsonPath: .spec.modelID
name: Model
type: string
- jsonPath: .spec.minReplicas
name: Min
type: integer
- jsonPath: .spec.maxReplicas
name: Max
type: integer
- jsonPath: .status.desiredOptimizedAlloc.numReplicas
name: Optimized
type: string
- jsonPath: .status.conditions[?(@.type=='MetricsAvailable')].status
name: MetricsReady
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
VariantAutoscaling is the Schema for the variantautoscalings API.
It represents the autoscaling configuration and status for a model variant.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: Spec defines the desired state for autoscaling the model
variant.
properties:
maxReplicas:
default: 2
description: |-
MaxReplicas is the upper bound on the number of replicas for this variant.
The autoscaler will never scale beyond this value regardless of load.
format: int32
minimum: 1
type: integer
minReplicas:
default: 1
description: |-
MinReplicas is the lower bound on the number of replicas for this variant.
A value of 0 enables scale-to-zero when the model is idle.
Defaults to 1, preserving existing behavior for VAs that omit this field.
format: int32
minimum: 0
type: integer
modelID:
description: ModelID specifies the unique identifier of the model
to be autoscaled.
minLength: 1
type: string
scaleTargetRef:
description: |-
ScaleTargetRef references the scalable resource to manage.
This follows the same pattern as HorizontalPodAutoscaler.
properties:
apiVersion:
description: apiVersion is the API version of the referent
type: string
kind:
description: 'kind is the kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
name:
description: 'name is the name of the referent; More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
required:
- kind
- name
type: object
variantCost:
default: "10.0"
description: VariantCost specifies the cost per replica for this variant
(used in saturation analysis).
pattern: ^\d+(\.\d+)?$
type: string
required:
- maxReplicas
- modelID
- scaleTargetRef
type: object
x-kubernetes-validations:
- message: minReplicas must be less than or equal to maxReplicas
rule: '!has(self.minReplicas) || self.minReplicas <= self.maxReplicas'
status:
description: Status represents the current status of autoscaling for the
model variant.
properties:
actuation:
description: Actuation provides details about the actuation process
and its current status.
properties:
applied:
description: Applied indicates whether the actuation was successfully
applied.
type: boolean
required:
- applied
type: object
conditions:
description: Conditions represent the latest available observations
of the VariantAutoscaling's state
items:
description: Condition contains details for one aspect of the current
state of this API Resource.
properties:
lastTransitionTime:
description: |-
lastTransitionTime is the last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
format: date-time
type: string
message:
description: |-
message is a human readable message indicating details about the transition.
This may be an empty string.
maxLength: 32768
type: string
observedGeneration:
description: |-
observedGeneration represents the .metadata.generation that the condition was set based upon.
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
with respect to the current state of the instance.
format: int64
minimum: 0
type: integer
reason:
description: |-
reason contains a programmatic identifier indicating the reason for the condition's last transition.
Producers of specific condition types may define expected values and meanings for this field,
and whether the values are considered a guaranteed API.
The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: type of condition in CamelCase or in foo.example.com/CamelCase.
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
desiredOptimizedAlloc:
description: DesiredOptimizedAlloc indicates the target optimized
allocation based on autoscaling logic.
properties:
accelerator:
description: |-
Accelerator is the type of accelerator for the optimized allocation.
Deprecated: This field is deprecated and will be removed in a future version. Use node selector or node affinity from scale target instead.
type: string
lastRunTime:
description: LastRunTime is the timestamp of the last optimization
run.
format: date-time
type: string
numReplicas:
description: |-
NumReplicas is the number of replicas for the optimized allocation.
nil means no optimization decision has been made yet.
format: int32
minimum: 0
type: integer
type: object
type: object
type: object
served: true
storage: true
subresources:
status: {}