v1alpha1

package
v0.0.8-internal Latest Latest
Warning

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

Go to latest
Published: Feb 17, 2025 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the kaiwo v1 API group. +kubebuilder:object:generate=true +groupName=kaiwo.silogen.ai

Index

Constants

View Source
const (
	UserLabel  = "kaiwo/user"
	QueueLabel = "kueue.x-k8s.io/queue-name"
)

Common labels used across resources.

Variables

View Source
var (
	// GroupVersion is group version used to register these objects.
	GroupVersion = schema.GroupVersion{Group: "kaiwo.silogen.ai", Version: "v1alpha1"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme.
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

This section is empty.

Types

type AzureBlobStorageDownloadItem

type AzureBlobStorageDownloadItem struct {
	ConnectionString ValueReference        `json:"connectionString" yaml:"connectionString"`
	Containers       []CloudDownloadBucket `json:"containers"`
}

func (*AzureBlobStorageDownloadItem) DeepCopy

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

func (*AzureBlobStorageDownloadItem) DeepCopyInto

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

type CloudDownloadBucket

type CloudDownloadBucket struct {
	Name    string                `json:"name"`
	Files   []CloudDownloadFile   `json:"files,omitempty"`
	Folders []CloudDownloadFolder `json:"folders,omitempty"`
}

func (*CloudDownloadBucket) DeepCopy

func (in *CloudDownloadBucket) DeepCopy() *CloudDownloadBucket

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

func (*CloudDownloadBucket) DeepCopyInto

func (in *CloudDownloadBucket) DeepCopyInto(out *CloudDownloadBucket)

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

type CloudDownloadFile

type CloudDownloadFile struct {
	Path       string `json:"path"`
	TargetPath string `json:"targetPath" yaml:"targetPath"`
}

func (*CloudDownloadFile) DeepCopy

func (in *CloudDownloadFile) DeepCopy() *CloudDownloadFile

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

func (*CloudDownloadFile) DeepCopyInto

func (in *CloudDownloadFile) DeepCopyInto(out *CloudDownloadFile)

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

type CloudDownloadFolder

type CloudDownloadFolder struct {
	Path       string `json:"path"`
	TargetPath string `json:"targetPath" yaml:"targetPath"`
	Glob       string `json:"glob,omitempty" yaml:"glob,omitempty"`
}

func (*CloudDownloadFolder) DeepCopy

func (in *CloudDownloadFolder) DeepCopy() *CloudDownloadFolder

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

func (*CloudDownloadFolder) DeepCopyInto

func (in *CloudDownloadFolder) DeepCopyInto(out *CloudDownloadFolder)

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

type ClusterQueue

type ClusterQueue struct {
	Name string `json:"name"`

	Spec kueuev1beta1.ClusterQueueSpec `json:"spec,omitempty"`
}

func (*ClusterQueue) DeepCopy

func (in *ClusterQueue) DeepCopy() *ClusterQueue

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

func (*ClusterQueue) DeepCopyInto

func (in *ClusterQueue) DeepCopyInto(out *ClusterQueue)

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

type CommonMetaSpec

type CommonMetaSpec struct {
	// Name is the name of the workload.
	Name string `json:"name,omitempty"`

	// Namespace defines the namespace in which the workload is deployed.
	Namespace string `json:"namespace,omitempty"`

	// Labels is a map of key-value pairs used for organizing workloads.
	Labels map[string]string `json:"labels,omitempty"`

	// Annotations provides additional metadata for the workload.
	Annotations map[string]string `json:"annotations,omitempty"`
}

CommonMetaSpec defines reusable metadata fields for workloads.

func (*CommonMetaSpec) DeepCopy

func (in *CommonMetaSpec) DeepCopy() *CommonMetaSpec

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

func (*CommonMetaSpec) DeepCopyInto

func (in *CommonMetaSpec) DeepCopyInto(out *CommonMetaSpec)

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

type ConfigSource

type ConfigSource struct {
	// Type specifies the type of configuration source. Valid values are:
	// - "ConfigMap": Configuration is stored in a Kubernetes ConfigMap.
	// - "S3": Configuration is stored in an S3-compatible object storage bucket.
	Type string `json:"type,omitempty"`

	// ConfigMapName specifies the name of the ConfigMap to be mounted.
	// This field is only relevant if Type is "ConfigMap".
	ConfigMapName string `json:"configMapName,omitempty"`

	// S3BucketName specifies the name of the S3 bucket where configuration files are stored.
	// This field is only relevant if Type is "S3".
	S3BucketName string `json:"s3BucketName,omitempty"`

	// S3Path specifies an optional path within the S3 bucket where the configuration files reside.
	// This field is only relevant if Type is "S3".
	S3Path string `json:"s3Path,omitempty"`

	// S3Credentials references a Kubernetes Secret containing credentials for accessing the S3 bucket.
	// The Secret should have standard AWS credential keys (e.g., "AWS_ACCESS_KEY_ID" and "AWS_SECRET_ACCESS_KEY").
	// This field is only relevant if Type is "S3".
	S3Credentials *corev1.SecretReference `json:"s3Credentials,omitempty"`
}

ConfigSource defines the source of configuration files for the workload.

func (*ConfigSource) DeepCopy

func (in *ConfigSource) DeepCopy() *ConfigSource

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

func (*ConfigSource) DeepCopyInto

func (in *ConfigSource) DeepCopyInto(out *ConfigSource)

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

type ConfigSourceItem

type ConfigSourceItem struct {
	Path  string `json:"mountPath,omitempty"`
	Value string `json:"value,omitempty"`
}

func (*ConfigSourceItem) DeepCopy

func (in *ConfigSourceItem) DeepCopy() *ConfigSourceItem

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

func (*ConfigSourceItem) DeepCopyInto

func (in *ConfigSourceItem) DeepCopyInto(out *ConfigSourceItem)

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

type DataStorageSpec

type DataStorageSpec struct {
	// MountPath specifies where the data PVC will be mounted to in each pod
	MountPath string `json:"mountPath,omitempty"`

	// StorageSize specifies the amount of storage allocated to the data PVC
	StorageSize string `json:"storageSize,omitempty"`

	// Download optional object storage pre-downloads
	Download ObjectStorageDownloadSpec `json:"download,omitempty"`
}

func (*DataStorageSpec) DeepCopy

func (in *DataStorageSpec) DeepCopy() *DataStorageSpec

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

func (*DataStorageSpec) DeepCopyInto

func (in *DataStorageSpec) DeepCopyInto(out *DataStorageSpec)

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

func (*DataStorageSpec) IsRequested

func (spec *DataStorageSpec) IsRequested() bool

type DownloadTaskConfig

type DownloadTaskConfig struct {
	// DownloadRoot specifies the common root for all the downloads
	DownloadRoot string `json:"downloadRoot" yaml:"downloadRoot"`

	// HfHome specifies path for $HF_HOME env variable
	HfHome string `json:"hfHome" yaml:"hfHome"`

	S3        []S3DownloadItem               `json:"s3,omitempty" yaml:"s3,omitempty"`
	GCS       []GCSDownloadItem              `json:"gcs,omitempty" yaml:"gcs,omitempty"`
	HF        []HuggingFaceDownloadItem      `json:"hf,omitempty" yaml:"hf,omitempty"`
	AzureBlob []AzureBlobStorageDownloadItem `json:"azureBlob,omitempty" yaml:"azureBlob,omitempty"`
}

func (*DownloadTaskConfig) DeepCopy

func (in *DownloadTaskConfig) DeepCopy() *DownloadTaskConfig

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

func (*DownloadTaskConfig) DeepCopyInto

func (in *DownloadTaskConfig) DeepCopyInto(out *DownloadTaskConfig)

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

type GCSDownloadItem

type GCSDownloadItem struct {
	ApplicationCredentials ValueReference        `json:"applicationCredentials" yaml:"applicationCredentials"`
	Buckets                []CloudDownloadBucket `json:"buckets"`
}

func (*GCSDownloadItem) DeepCopy

func (in *GCSDownloadItem) DeepCopy() *GCSDownloadItem

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

func (*GCSDownloadItem) DeepCopyInto

func (in *GCSDownloadItem) DeepCopyInto(out *GCSDownloadItem)

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

type HfStorageSpec

type HfStorageSpec struct {
	// MountPath specifies where the data HF will be mounted to in each pod.
	// This is also used to set the HF_HOME environmental variable into each container.
	MountPath string `json:"mountPath,omitempty"`

	// StorageSize specifies the amount of storage allocated to the HF PVC
	StorageSize string `json:"storageSize,omitempty"`

	// PreCacheRepos is a list of repositories (and their files) that should be cached before the workload starts
	PreCacheRepos []HuggingFaceDownloadItem `json:"preCacheRepos,omitempty"`
}

func (*HfStorageSpec) DeepCopy

func (in *HfStorageSpec) DeepCopy() *HfStorageSpec

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

func (*HfStorageSpec) DeepCopyInto

func (in *HfStorageSpec) DeepCopyInto(out *HfStorageSpec)

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

func (*HfStorageSpec) IsRequested

func (spec *HfStorageSpec) IsRequested() bool

type HuggingFaceDownloadItem

type HuggingFaceDownloadItem struct {
	RepoID string   `json:"repoId" yaml:"repoId"`
	Files  []string `json:"files"`
}

func (*HuggingFaceDownloadItem) DeepCopy

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

func (*HuggingFaceDownloadItem) DeepCopyInto

func (in *HuggingFaceDownloadItem) DeepCopyInto(out *HuggingFaceDownloadItem)

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

type KaiwoJob

type KaiwoJob struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   KaiwoJobSpec   `json:"spec,omitempty"`
	Status KaiwoJobStatus `json:"status,omitempty"`
}

+kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.Status" +kubebuilder:printcolumn:name="StartTime",type="string",JSONPath=".status.startTime" +kubebuilder:printcolumn:name="CompletionTime",type="string",JSONPath=".status.completionTime" +kubebuilder:printcolumn:name="Duration(s)",type="integer",JSONPath=".status.duration"

func (*KaiwoJob) DeepCopy

func (in *KaiwoJob) DeepCopy() *KaiwoJob

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

func (*KaiwoJob) DeepCopyInto

func (in *KaiwoJob) DeepCopyInto(out *KaiwoJob)

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

func (*KaiwoJob) DeepCopyObject

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

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

type KaiwoJobList

type KaiwoJobList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []KaiwoJob `json:"items"`
}

+kubebuilder:object:root=true

func (*KaiwoJobList) DeepCopy

func (in *KaiwoJobList) DeepCopy() *KaiwoJobList

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

func (*KaiwoJobList) DeepCopyInto

func (in *KaiwoJobList) DeepCopyInto(out *KaiwoJobList)

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

func (*KaiwoJobList) DeepCopyObject

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

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

type KaiwoJobSpec

type KaiwoJobSpec struct {
	CommonMetaSpec `json:",inline"`

	// User specifies the owner or creator of the workload.
	// If authentication is enabled, this must be email address which is checked against authenticated user for match.
	User string `json:"user"`

	// ClusterQueue is the Kueue ClusterQueue name.
	ClusterQueue string `json:"clusterQueue,omitempty"`

	// PriorityClass specifies the Kubernetes PriorityClass for scheduling.
	PriorityClass string `json:"priorityClass,omitempty"`

	// EntryPoint specifies the command or script executed in a Job or RayJob.
	// Can also be defined inside Job struct as Command in the form of string array or
	// inside RayJob struct as Entrypoint in the form of string
	EntryPoint string `json:"entrypoint,omitempty"`

	// Gpus specifies the total number of GPUs allocated to the workload.
	// Default is 0.
	// +kubebuilder:default=0
	Gpus int `json:"gpus,omitempty"`

	// GpuVendor specifies the GPU vendor (e.g., AMD, NVIDIA, etc.).
	// Default is AMD.
	// +kubebuilder:default=AMD
	GpuVendor string `json:"gpuVendor,omitempty"`

	// Version is an optional field specifying the version of the workload.
	Version string `json:"version,omitempty"`

	// Replicas specifies the number of replicas for the workload.
	// If greater than one, the workload must use Ray.
	// Default is 0.
	// +kubebuilder:default=0
	Replicas int `json:"replicas,omitempty"`

	// GpusPerReplica specifies the number of GPUs allocated per replica.
	GpusPerReplica int `json:"gpus-per-replica,omitempty"`

	// Image defines the container image used for the workload.
	Image string `json:"image,omitempty"`

	// ImagePullSecrets contains the list of secrets used to pull the container image.
	ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"`

	// EnvVars specifies the environment variables to be passed to the container.
	EnvVars []corev1.EnvVar `json:"envVars,omitempty"`

	// Ray determines whether the operator should use RayCluster for workload execution.
	// Default is false.
	// +kubebuilder:default=false
	Ray bool `json:"ray"`

	// ConfigSource allows mounting from Git
	ConfigSource *ConfigSource `json:"configSource,omitempty"`

	// Storage configuration for the workload.
	Storage StorageSpec `json:"storage,omitempty"`

	// RayJob defines the RayJob configuration.
	RayJob *rayv1.RayJob `json:"rayJob,omitempty"`

	// Job defines the Kubernetes Job configuration.
	Job *batchv1.Job `json:"job,omitempty"`
}

KaiwoJobSpec defines the desired state of KaiwoJob.

func (*KaiwoJobSpec) DeepCopy

func (in *KaiwoJobSpec) DeepCopy() *KaiwoJobSpec

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

func (*KaiwoJobSpec) DeepCopyInto

func (in *KaiwoJobSpec) DeepCopyInto(out *KaiwoJobSpec)

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

type KaiwoJobStatus

type KaiwoJobStatus struct {
	StartTime          *metav1.Time       `json:"startTime,omitempty"`
	CompletionTime     *metav1.Time       `json:"completionTime,omitempty"`
	Conditions         []metav1.Condition `json:"conditions,omitempty"`
	Status             Status             `json:"Status,omitempty"`
	Duration           int64              `json:"duration,omitempty"`
	ObservedGeneration int64              `json:"observedGeneration,omitempty"`
}

KaiwoJobStatus defines the observed state of KaiwoJob.

func (*KaiwoJobStatus) DeepCopy

func (in *KaiwoJobStatus) DeepCopy() *KaiwoJobStatus

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

func (*KaiwoJobStatus) DeepCopyInto

func (in *KaiwoJobStatus) DeepCopyInto(out *KaiwoJobStatus)

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

type KaiwoQueueConfig

type KaiwoQueueConfig struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`
	Spec              KaiwoQueueConfigSpec   `json:"spec,omitempty"`
	Status            KaiwoQueueConfigStatus `json:"status,omitempty"`
}

+kubebuilder:object:root=true +kubebuilder:resource:scope=Cluster +kubebuilder:subresource:status +kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.Status" KaiwoQueueConfig manages Kueue resources.

func (*KaiwoQueueConfig) DeepCopy

func (in *KaiwoQueueConfig) DeepCopy() *KaiwoQueueConfig

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

func (*KaiwoQueueConfig) DeepCopyInto

func (in *KaiwoQueueConfig) DeepCopyInto(out *KaiwoQueueConfig)

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

func (*KaiwoQueueConfig) DeepCopyObject

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

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

type KaiwoQueueConfigList

type KaiwoQueueConfigList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []KaiwoQueueConfig `json:"items"`
}

+kubebuilder:object:root=true

func (*KaiwoQueueConfigList) DeepCopy

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

func (*KaiwoQueueConfigList) DeepCopyInto

func (in *KaiwoQueueConfigList) DeepCopyInto(out *KaiwoQueueConfigList)

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

func (*KaiwoQueueConfigList) DeepCopyObject

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

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

type KaiwoQueueConfigSpec

type KaiwoQueueConfigSpec struct {
	// +kubebuilder:validation:MaxItems=10
	ClusterQueues []ClusterQueue `json:"clusterQueues,omitempty"`

	ResourceFlavors []ResourceFlavorSpec `json:"resourceFlavors,omitempty"`

	// +kubebuilder:validation:MaxItems=5
	WorkloadPriorityClasses []kueuev1beta1.WorkloadPriorityClass `json:"workloadPriorityClasses,omitempty"`
}

KaiwoQueueConfigSpec defines the desired configuration for Kaiwo.

func (*KaiwoQueueConfigSpec) DeepCopy

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

func (*KaiwoQueueConfigSpec) DeepCopyInto

func (in *KaiwoQueueConfigSpec) DeepCopyInto(out *KaiwoQueueConfigSpec)

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

type KaiwoQueueConfigStatus

type KaiwoQueueConfigStatus struct {
	Conditions []metav1.Condition `json:"conditions,omitempty"`
	Status     Status             `json:"Status,omitempty"`
}

KaiwoQueueConfigStatus represents the observed state of KaiwoQueueConfig.

func (*KaiwoQueueConfigStatus) DeepCopy

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

func (*KaiwoQueueConfigStatus) DeepCopyInto

func (in *KaiwoQueueConfigStatus) DeepCopyInto(out *KaiwoQueueConfigStatus)

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

type KaiwoService

type KaiwoService struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   KaiwoServiceSpec   `json:"spec,omitempty"`
	Status KaiwoServiceStatus `json:"status,omitempty"`
}

+kubebuilder:object:root=true +kubebuilder:subresource:status

func (*KaiwoService) DeepCopy

func (in *KaiwoService) DeepCopy() *KaiwoService

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

func (*KaiwoService) DeepCopyInto

func (in *KaiwoService) DeepCopyInto(out *KaiwoService)

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

func (*KaiwoService) DeepCopyObject

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

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

type KaiwoServiceList

type KaiwoServiceList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []KaiwoService `json:"items"`
}

+kubebuilder:object:root=true

func (*KaiwoServiceList) DeepCopy

func (in *KaiwoServiceList) DeepCopy() *KaiwoServiceList

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

func (*KaiwoServiceList) DeepCopyInto

func (in *KaiwoServiceList) DeepCopyInto(out *KaiwoServiceList)

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

func (*KaiwoServiceList) DeepCopyObject

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

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

type KaiwoServiceSpec

type KaiwoServiceSpec struct {
	CommonMetaSpec `json:",inline"`

	// User specifies the owner or creator of the workload.
	// If authentication is enabled, this must be email address which is checked against authenticated user for match.
	User string `json:"user"`

	// ClusterQueue is the Kueue ClusterQueue name.
	ClusterQueue string `json:"clusterQueue,omitempty"`

	// PriorityClass specifies the Kubernetes PriorityClass for scheduling.
	PriorityClass string `json:"priorityClass,omitempty"`

	// EntryPoint specifies the command or script executed in a Deployment.
	// Can also be defined inside Deployment struct as regular command in the form of string array
	EntryPoint string `json:"entrypoint,omitempty"`

	// Defines the applications and deployments to deploy, should be a YAML multi-line scalar string.
	// Can also be defined inside RayService struct
	ServeConfigV2 string `json:"serveConfigV2,omitempty"`

	// Gpus specifies the total number of GPUs allocated to the workload.
	// Default is 0.
	// +kubebuilder:default=0
	Gpus int `json:"gpus,omitempty"`

	// GpuVendor specifies the GPU vendor (e.g., AMD, NVIDIA, etc.).
	// Default is AMD.
	// +kubebuilder:default=AMD
	GpuVendor string `json:"gpuVendor,omitempty"`

	// Version is an optional field specifying the version of the workload.
	Version string `json:"version,omitempty"`

	// Replicas specifies the number of replicas for the workload.
	// If greater than one, the workload must use Ray.
	// Default is 0.
	// +kubebuilder:default=0
	Replicas int `json:"replicas,omitempty"`

	// GpusPerReplica specifies the number of GPUs allocated per replica.
	GpusPerReplica int `json:"gpus-per-replica,omitempty"`

	// Image defines the container image used for the workload.
	Image string `json:"image,omitempty"`

	// ImagePullSecrets contains the list of secrets used to pull the container image.
	ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"`

	// EnvVars specifies the environment variables to be passed to the container.
	EnvVars []corev1.EnvVar `json:"envVars,omitempty"`

	// Ray determines whether the operator should use RayCluster for workload execution.
	// Default is false.
	// +kubebuilder:default=false
	Ray bool `json:"ray"`

	// ConfigSource allows mounting from Git repository
	ConfigSource *ConfigSource `json:"configSource,omitempty"`

	// Storage configuration for the workload.
	Storage StorageSpec `json:"storage,omitempty"`

	// Optional workload-specific configs (Pointers to avoid bloating CRD)
	RayService *rayv1.RayService  `json:"rayService,omitempty"`
	Deployment *appsv1.Deployment `json:"deployment,omitempty"`
}

KaiwoServiceSpec defines the desired state of KaiwoService.

func (*KaiwoServiceSpec) DeepCopy

func (in *KaiwoServiceSpec) DeepCopy() *KaiwoServiceSpec

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

func (*KaiwoServiceSpec) DeepCopyInto

func (in *KaiwoServiceSpec) DeepCopyInto(out *KaiwoServiceSpec)

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

type KaiwoServiceStatus

type KaiwoServiceStatus struct {
	Conditions []metav1.Condition `json:"conditions,omitempty"`
	Status     Status             `json:"Status,omitempty"`
}

KaiwoServiceStatus defines the observed state of KaiwoService.

func (*KaiwoServiceStatus) DeepCopy

func (in *KaiwoServiceStatus) DeepCopy() *KaiwoServiceStatus

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

func (*KaiwoServiceStatus) DeepCopyInto

func (in *KaiwoServiceStatus) DeepCopyInto(out *KaiwoServiceStatus)

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

type ObjectStorageDownloadSpec

type ObjectStorageDownloadSpec struct {
	// S3 lists any S3 downloads
	S3 []S3DownloadItem `json:"s3,omitempty"`

	// GCS lists and Google Cloud Storage downloads
	GCS []GCSDownloadItem `json:"gcs,omitempty"`

	// AzureBlob lists any Azure Blob Storage downloads
	AzureBlob []AzureBlobStorageDownloadItem `json:"azureBlob,omitempty"`
}

func (*ObjectStorageDownloadSpec) DeepCopy

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

func (*ObjectStorageDownloadSpec) DeepCopyInto

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

type ResourceFlavorSpec

type ResourceFlavorSpec struct {
	Name string `json:"name"`
	// NodeLabels must not exceed a reasonable limit to prevent CRD validation failures
	// +kubebuilder:validation:MaxProperties=10
	NodeLabels map[string]string `json:"nodeLabels,omitempty"`

	// +kubebuilder:validation:MaxItems=5
	Taints []corev1.Taint `json:"taints,omitempty"`

	// // +kubebuilder:validation:MaxItems=5
	Tolerations []corev1.Toleration `json:"tolerations,omitempty"`
}

ResourceFlavorSpec defines the configuration for a specific resource flavor.

func (*ResourceFlavorSpec) DeepCopy

func (in *ResourceFlavorSpec) DeepCopy() *ResourceFlavorSpec

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

func (*ResourceFlavorSpec) DeepCopyInto

func (in *ResourceFlavorSpec) DeepCopyInto(out *ResourceFlavorSpec)

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

type S3DownloadItem

type S3DownloadItem struct {
	// EndpointUrl is the endpoint of the S3 API
	EndpointUrl ValueReference `json:"endpointUrl" yaml:"endpointUrl"`

	// AccessKeyId
	AccessKeyId ValueReference        `json:"accessKeyId" yaml:"accessKeyId"`
	SecretKey   ValueReference        `json:"secretKey" yaml:"secretKey"`
	Buckets     []CloudDownloadBucket `json:"buckets"`
}

func (*S3DownloadItem) DeepCopy

func (in *S3DownloadItem) DeepCopy() *S3DownloadItem

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

func (*S3DownloadItem) DeepCopyInto

func (in *S3DownloadItem) DeepCopyInto(out *S3DownloadItem)

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

type Status

type Status string
const (
	StatusNew      Status = ""
	StatusPending  Status = "PENDING"
	StatusStarting Status = "STARTING"
	StatusReady    Status = "READY"
	StatusRunning  Status = "RUNNING"
	StatusComplete Status = "COMPLETE"
	StatusFailed   Status = "FAILED"
)

type StorageSpec

type StorageSpec struct {
	// StorageEnabled tells whether to enable persistent storage.
	StorageEnabled bool `json:"storageEnabled,omitempty"`

	// StorageClassName specifies the storage class used for PVC.
	StorageClassName string `json:"storageClassName,omitempty"`

	// AccessMode determines the access mode for the storage
	// +kubebuilder:default=ReadWriteMany
	AccessMode corev1.PersistentVolumeAccessMode `json:"accessMode"`

	// Data specifies the main workload PVC and optional object storage pre-downloads
	Data DataStorageSpec `json:"data,omitempty"`

	// HuggingFace specifies any hugging face models that should be cached before the workload starts
	HuggingFace HfStorageSpec `json:"huggingFace,omitempty"`
}

StorageSpec defines the storage configuration for the workload.

func (*StorageSpec) CreateConfig

func (s *StorageSpec) CreateConfig() DownloadTaskConfig

CreateConfig creates the config required for the data downloader

func (*StorageSpec) DeepCopy

func (in *StorageSpec) DeepCopy() *StorageSpec

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

func (*StorageSpec) DeepCopyInto

func (in *StorageSpec) DeepCopyInto(out *StorageSpec)

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

type ValueReference

type ValueReference struct {
	// File determines the location of the secret value mounted on the disk
	File string `json:"file,omitempty"`

	// SecretName is the name of the secret where the value is kept
	SecretName string `json:"secretName,omitempty" yaml:"secretName,omitempty"`

	// SecretKey is the name of the key within the secret where the value is kept
	SecretKey string `json:"secretKey,omitempty" yaml:"secretKey,omitempty"`
}

func (*ValueReference) DeepCopy

func (in *ValueReference) DeepCopy() *ValueReference

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

func (*ValueReference) DeepCopyInto

func (in *ValueReference) DeepCopyInto(out *ValueReference)

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

Jump to

Keyboard shortcuts

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