v1alpha2

package
v0.0.0-...-1f686fe Latest Latest
Warning

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

Go to latest
Published: Nov 5, 2024 License: MIT Imports: 8 Imported by: 3

Documentation

Overview

Package v1alpha1 is the v1alpha1 version of the API. +groupName=flux-framework.org

Package v1alpha1 contains API Schema definitions for the v1alpha1 API group +kubebuilder:object:generate=true +groupName=flux-framework.org

Index

Constants

This section is empty.

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "flux-framework.org", Version: "v1alpha2"}

	// 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

Types

type BurstedCluster

type BurstedCluster struct {

	// The hostnames for the bursted clusters
	// If set, the user is responsible for ensuring
	// uniqueness. The operator will set to burst-N
	//+optional
	Name string `json:"name"`

	// Size of bursted cluster.
	// Defaults to same size as local minicluster if not set
	// +optional
	Size int32 `json:"size,omitempty"`
}

func (*BurstedCluster) DeepCopy

func (in *BurstedCluster) DeepCopy() *BurstedCluster

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

func (*BurstedCluster) DeepCopyInto

func (in *BurstedCluster) DeepCopyInto(out *BurstedCluster)

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

type Bursting

type Bursting struct {

	// The lead broker ip address to join to. E.g., if we burst
	// to cluster 2, this is the address to connect to cluster 1
	// For the first cluster, this should not be defined
	//+optional
	LeadBroker FluxBroker `json:"leadBroker"`

	// Hostlist is a custom hostlist for the broker.toml
	// that includes the local plus bursted cluster. This
	// is typically used for bursting to another resource
	// type, where we can predict the hostnames but they
	// don't follow the same convention as the Flux Operator
	//+optional
	Hostlist string `json:"hostlist"`

	// External clusters to burst to. Each external
	// cluster must share the same listing to align ranks
	//+optional
	// +listType=atomic
	Clusters []BurstedCluster `json:"clusters"`
}

Bursting Config For simplicity, we internally handle the name of the job (hostnames)

func (*Bursting) DeepCopy

func (in *Bursting) DeepCopy() *Bursting

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

func (*Bursting) DeepCopyInto

func (in *Bursting) DeepCopyInto(out *Bursting)

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

type Commands

type Commands struct {

	// Prefix to flux start / submit / broker
	// Typically used for a wrapper command to mount, etc.
	// +optional
	Prefix string `json:"prefix"`

	// Custom script for submit (e.g., multiple lines)
	// +optional
	Script string `json:"script"`

	// init command is run before anything
	// +optional
	Init string `json:"init"`

	// pre command is run after global PreCommand, after asFlux is set (can override)
	// +optional
	Pre string `json:"pre"`

	// post command is run in the entrypoint when the broker exits / finishes
	// +optional
	Post string `json:"post"`

	// A command only for workers to run
	// +optional
	WorkerPre string `json:"workerPre"`

	// A single command for only the broker to run
	// +optional
	BrokerPre string `json:"brokerPre"`

	// A command only for service start.sh tor run
	// +optional
	ServicePre string `json:"servicePre"`
}

func (*Commands) DeepCopy

func (in *Commands) DeepCopy() *Commands

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

func (*Commands) DeepCopyInto

func (in *Commands) DeepCopyInto(out *Commands)

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

type ContainerResource

type ContainerResource map[string]intstr.IntOrString

func (ContainerResource) DeepCopy

func (in ContainerResource) DeepCopy() ContainerResource

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

func (ContainerResource) DeepCopyInto

func (in ContainerResource) DeepCopyInto(out *ContainerResource)

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

type ContainerResources

type ContainerResources struct {

	// +optional
	Limits ContainerResource `json:"limits"`

	// +optional
	Requests ContainerResource `json:"requests"`
}

ContainerResources include limits and requests

func (*ContainerResources) DeepCopy

func (in *ContainerResources) DeepCopy() *ContainerResources

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

func (*ContainerResources) DeepCopyInto

func (in *ContainerResources) DeepCopyInto(out *ContainerResources)

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

type ContainerVolume

type ContainerVolume struct {

	// Path and claim name are always required if a secret isn't defined
	// +optional
	Path string `json:"path,omitempty"`

	// An existing hostPath to bind to path
	// +optional
	HostPath string `json:"hostPath,omitempty"`

	// Config map name if the existing volume is a config map
	// You should also define items if you are using this
	// +optional
	ConfigMapName string `json:"configMapName,omitempty"`

	// Items (key and paths) for the config map
	// +optional
	Items map[string]string `json:"items"`

	// Claim name if the existing volume is a PVC
	// +optional
	ClaimName string `json:"claimName,omitempty"`

	// An existing secret
	// +optional
	SecretName string `json:"secretName,omitempty"`

	// +kubebuilder:default=false
	// +default=false
	// +optional
	ReadOnly bool `json:"readOnly,omitempty"`

	// Add an empty directory custom type
	// +optional
	EmptyDirMedium string `json:"emptyDirMedium,omitempty"`

	// Add an empty directory sizeLimit
	// +optional
	EmptyDirSizeLimit string `json:"emptyDirSizeLimit,omitempty"`

	// +kubebuilder:default=false
	// +default=false
	// +optional
	EmptyDir bool `json:"emptyDir,omitempty"`
}

func (*ContainerVolume) DeepCopy

func (in *ContainerVolume) DeepCopy() *ContainerVolume

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

func (*ContainerVolume) DeepCopyInto

func (in *ContainerVolume) DeepCopyInto(out *ContainerVolume)

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

type FluxBroker

type FluxBroker struct {

	// Lead broker address (ip or hostname)
	Address string `json:"address"`

	// We need the name of the lead job to assemble the hostnames
	Name string `json:"name"`

	// Lead broker size
	Size int32 `json:"size"`

	// Lead broker port - should only be used for external cluster
	// +kubebuilder:default=8050
	// +default=8050
	// +optional
	Port int32 `json:"port,omitempty"`
}

A FluxBroker defines a broker for flux

func (*FluxBroker) DeepCopy

func (in *FluxBroker) DeepCopy() *FluxBroker

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

func (*FluxBroker) DeepCopyInto

func (in *FluxBroker) DeepCopyInto(out *FluxBroker)

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

type FluxContainer

type FluxContainer struct {

	// Disable the sidecar container, assuming that the main application container has flux
	// +kubebuilder:default=false
	// +default=false
	Disable bool `json:"disable,omitempty"`

	// Container name is only required for non flux runners
	// +kubebuilder:default="flux-view"
	// +default="flux-view"
	Name string `json:"name,omitempty"`

	// Working directory to run command from
	// +optional
	WorkingDir string `json:"workingDir"`

	// Customize python path for flux
	// +optional
	PythonPath string `json:"pythonPath"`

	// Resources include limits and requests
	// These must be defined for cpu and memory
	// for the QoS to be Guaranteed
	// +optional
	Resources ContainerResources `json:"resources"`

	// Allow the user to pull authenticated images
	// By default no secret is selected. Setting
	// this with the name of an already existing
	// imagePullSecret will specify that secret
	// in the pod spec.
	// +optional
	ImagePullSecret string `json:"imagePullSecret"`

	// +kubebuilder:default="ghcr.io/converged-computing/flux-view-rocky:tag-9"
	// +default="ghcr.io/converged-computing/flux-view-rocky:tag-9"
	Image string `json:"image,omitempty"`

	// Allow the user to dictate pulling
	// By default we pull if not present. Setting
	// this to true will indicate to pull always
	// +kubebuilder:default=false
	// +default=false
	// +optional
	PullAlways bool `json:"pullAlways,omitempty"`

	// Mount path for flux to be at (will be added to path)
	// +kubebuilder:default="/mnt/flux"
	// +default="/mnt/flux"
	MountPath string `json:"mountPath,omitempty"`
}

A FluxContainer is equivalent to a MiniCluster container but has a different default image

func (*FluxContainer) DeepCopy

func (in *FluxContainer) DeepCopy() *FluxContainer

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

func (*FluxContainer) DeepCopyInto

func (in *FluxContainer) DeepCopyInto(out *FluxContainer)

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

type FluxScheduler

type FluxScheduler struct {

	// Scheduler queue policy, defaults to "fcfs" can also be "easy"
	// +optional
	QueuePolicy string `json:"queuePolicy"`
}

FluxScheduler attributes

func (*FluxScheduler) DeepCopy

func (in *FluxScheduler) DeepCopy() *FluxScheduler

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

func (*FluxScheduler) DeepCopyInto

func (in *FluxScheduler) DeepCopyInto(out *FluxScheduler)

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

type FluxSpec

type FluxSpec struct {

	// Container base for flux
	// +optional
	Container FluxContainer `json:"container,omitempty"`

	// Change the arch string - determines the binaries
	// that are downloaded to run the entrypoint
	// +optional
	Arch string `json:"arch,omitempty"`

	// Modify flux submit to be something else
	// +optional
	SubmitCommand string `json:"submitCommand,omitempty"`

	// Commands for flux start --wrap
	// +optional
	Wrap string `json:"wrap,omitempty"`

	// Single user executable to provide to flux start
	// +kubebuilder:default="5s"
	// +default="5s"
	ConnectTimeout string `json:"connectTimeout,omitempty"`

	// Flux option flags, usually provided with -o
	// optional - if needed, default option flags for the server
	// These can also be set in the user interface to override here.
	// This is only valid for a FluxRunner "runFlux" true
	// +optional
	OptionFlags string `json:"optionFlags"`

	// Only expose the broker service (to reduce load on DNS)
	// +optional
	MinimalService bool `json:"minimalService"`

	// Disable specifying the socket path
	// +optional
	DisableSocket bool `json:"disableSocket"`

	// Specify a custom Topology
	// +optional
	Topology string `json:"topology"`

	// Do not wait for the socket
	// +optional
	NoWaitSocket bool `json:"noWaitSocket"`

	// Complete workers when they fail
	// This is ideal if you don't want them to restart
	// +optional
	CompleteWorkers bool `json:"completeWorkers"`

	// Log level to use for flux logging (only in non TestMode)
	// +kubebuilder:default=6
	// +default=6
	// +optional
	LogLevel int32 `json:"logLevel,omitempty"`

	// Optionally provide an already existing curve certificate
	// This is not recommended in favor of providing the secret
	// name as curveCertSecret, below
	//+optional
	CurveCert string `json:"curveCert"`

	// Custom attributes for the fluxion scheduler
	//+optional
	Scheduler FluxScheduler `json:"scheduler"`

	// Expect a secret (named according to this string)
	// for a munge key. This is intended for bursting.
	// Assumed to be at /etc/munge/munge.key
	// This is binary data.
	//+optional
	MungeSecret string `json:"mungeSecret"`

	// Bursting - one or more external clusters to burst to
	// We assume a single, central MiniCluster with an ipaddress
	// that all connect to.
	//+optional
	Bursting Bursting `json:"bursting"`

	// Optionally provide a manually created broker config
	// this is intended for bursting to remote clusters
	//+optional
	BrokerConfig string `json:"brokerConfig"`
}

func (*FluxSpec) DeepCopy

func (in *FluxSpec) DeepCopy() *FluxSpec

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

func (*FluxSpec) DeepCopyInto

func (in *FluxSpec) DeepCopyInto(out *FluxSpec)

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

type LifeCycle

type LifeCycle struct {

	// +optional
	PostStartExec string `json:"postStartExec"`

	// +optional
	PreStopExec string `json:"preStopExec"`
}

func (*LifeCycle) DeepCopy

func (in *LifeCycle) DeepCopy() *LifeCycle

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

func (*LifeCycle) DeepCopyInto

func (in *LifeCycle) DeepCopyInto(out *LifeCycle)

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

type LoggingSpec

type LoggingSpec struct {

	// Quiet mode silences all output so the job only shows the test running
	// +kubebuilder:default=false
	// +default=false
	// +optional
	Quiet bool `json:"quiet,omitempty"`

	// Strict mode ensures any failure will not continue in the job entrypoint
	// +kubebuilder:default=false
	// +default=false
	// +optional
	Strict bool `json:"strict,omitempty"`

	// Debug mode adds extra verbosity to Flux
	// +kubebuilder:default=false
	// +default=false
	// +optional
	Debug bool `json:"debug,omitempty"`

	// Enable Zeromq logging
	// +kubebuilder:default=false
	// +default=false
	// +optional
	Zeromq bool `json:"zeromq,omitempty"`

	// Timed mode adds timing to Flux commands
	// +kubebuilder:default=false
	// +default=false
	// +optional
	Timed bool `json:"timed,omitempty"`
}

func (*LoggingSpec) DeepCopy

func (in *LoggingSpec) DeepCopy() *LoggingSpec

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

func (*LoggingSpec) DeepCopyInto

func (in *LoggingSpec) DeepCopyInto(out *LoggingSpec)

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

type MiniCluster

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

	Spec   MiniClusterSpec   `json:"spec,omitempty"`
	Status MiniClusterStatus `json:"status,omitempty"`
}

MiniCluster is the Schema for a Flux job launcher on K8s +genclient +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:subresource:scale:specpath=.spec.size,statuspath=.status.size,selectorpath=.status.selector

func (*MiniCluster) DeepCopy

func (in *MiniCluster) DeepCopy() *MiniCluster

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

func (*MiniCluster) DeepCopyInto

func (in *MiniCluster) DeepCopyInto(out *MiniCluster)

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

func (*MiniCluster) DeepCopyObject

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

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

func (*MiniCluster) EntrypointConfigMapName

func (f *MiniCluster) EntrypointConfigMapName() string

Consistent functions to return config map names

func (*MiniCluster) ExistingContainerVolumes

func (f *MiniCluster) ExistingContainerVolumes() map[string]ContainerVolume

Return a lookup of all container existing volumes (for the higher level Pod) Volumes are unique by name.

func (*MiniCluster) ExistingServiceVolumes

func (f *MiniCluster) ExistingServiceVolumes() map[string]ContainerVolume

Return a lookup of all service existing volumes (for the higher level Pod) Volumes are unique by name.

func (*MiniCluster) Validate

func (f *MiniCluster) Validate() bool

Validate ensures we have data that is needed, and sets defaults if needed

type MiniClusterArchive

type MiniClusterArchive struct {

	// Save or load from this directory path
	// +optional
	Path string `json:"path,omitempty"`
}

func (*MiniClusterArchive) DeepCopy

func (in *MiniClusterArchive) DeepCopy() *MiniClusterArchive

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

func (*MiniClusterArchive) DeepCopyInto

func (in *MiniClusterArchive) DeepCopyInto(out *MiniClusterArchive)

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

type MiniClusterContainer

type MiniClusterContainer struct {

	// Allow the user to pull authenticated images
	// By default no secret is selected. Setting
	// this with the name of an already existing
	// imagePullSecret will specify that secret
	// in the pod spec.
	// +optional
	ImagePullSecret string `json:"imagePullSecret"`

	// Container image must contain flux and flux-sched install
	// +kubebuilder:default="ghcr.io/rse-ops/accounting:app-latest"
	// +default="ghcr.io/rse-ops/accounting:app-latest"
	Image string `json:"image,omitempty"`

	// Working directory to run command from
	// +optional
	WorkingDir string `json:"workingDir"`

	// Container name is only required for non flux runners
	// +optional
	Name string `json:"name"`

	// Single user executable to provide to flux start
	// +optional
	Command string `json:"command"`

	// Allow the user to dictate pulling
	// By default we pull if not present. Setting
	// this to true will indicate to pull always
	// +kubebuilder:default=false
	// +default=false
	// +optional
	PullAlways bool `json:"pullAlways,omitempty"`

	// Ports to be exposed to other containers in the cluster
	// We take a single list of integers and map to the same
	// +optional
	// +listType=atomic
	Ports []int32 `json:"ports"`

	// Key/value pairs for the environment
	// +optional
	Environment map[string]string `json:"environment"`

	// Secrets that will be added to the environment
	// The user is expected to create their own secrets for the operator to find
	// +optional
	Secrets map[string]Secret `json:"secrets"`

	// Indicate that the command is a launcher that will
	// ask for its own jobs (and provided directly to flux start)
	// +optional
	Launcher bool `json:"launcher"`

	// Indicate that the command is a batch job that will be written to a file to submit
	// +optional
	Batch bool `json:"batch"`

	// Don't wrap batch commands in flux submit (provide custom logic myself)
	// +optional
	BatchRaw bool `json:"batchRaw"`

	// Log output directory
	// +optional
	Logs string `json:"logs"`

	// Application container intended to run flux (broker)
	// +optional
	RunFlux bool `json:"runFlux"`

	// Do not wrap the entrypoint to wait for flux, add to path, etc?
	// +optional
	NoWrapEntrypoint bool `json:"noWrapEntrypoint"`

	// Existing volumes that can be mounted
	// +optional
	Volumes map[string]ContainerVolume `json:"volumes"`

	// Lifecycle can handle post start commands, etc.
	// +optional
	LifeCycle LifeCycle `json:"lifeCycle"`

	// Resources include limits and requests
	// +optional
	Resources ContainerResources `json:"resources"`

	// More specific or detailed commands for just workers/broker
	// +optional
	Commands Commands `json:"commands"`

	// Security Context
	// https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
	// +optional
	SecurityContext SecurityContext `json:"securityContext"`
}

func (*MiniClusterContainer) DeepCopy

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

func (*MiniClusterContainer) DeepCopyInto

func (in *MiniClusterContainer) DeepCopyInto(out *MiniClusterContainer)

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

func (*MiniClusterContainer) GenerateEntrypoint

func (c *MiniClusterContainer) GenerateEntrypoint() bool

Determine if we should generate a start.sh entrypoint for a sidecar Only do so (for now) if we are customizing the command

func (*MiniClusterContainer) HasCommands

func (c *MiniClusterContainer) HasCommands() bool

Determine if a MiniCluster container has custom commands if we have custom commands and a command entrypoint we can support additional custom logic

type MiniClusterList

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

MiniClusterList contains a list of MiniCluster

func (*MiniClusterList) DeepCopy

func (in *MiniClusterList) DeepCopy() *MiniClusterList

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

func (*MiniClusterList) DeepCopyInto

func (in *MiniClusterList) DeepCopyInto(out *MiniClusterList)

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

func (*MiniClusterList) DeepCopyObject

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

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

type MiniClusterSpec

type MiniClusterSpec struct {

	// Containers is one or more containers to be created in a pod.
	// There should only be one container to run flux with runFlux
	// +listType=atomic
	Containers []MiniClusterContainer `json:"containers"`

	// Services are one or more service containers to bring up
	// alongside the MiniCluster.
	// +optional
	// +listType=atomic
	Services []MiniClusterContainer `json:"services"`

	// A spec for exposing or defining the cluster headless service
	//+optional
	Network Network `json:"network"`

	// Labels for the job
	// +optional
	JobLabels map[string]string `json:"jobLabels"`

	// Run a single-user, interactive minicluster
	// +kubebuilder:default=false
	// +optional
	Interactive bool `json:"interactive"`

	// Flux options for the broker, shared across cluster
	// +optional
	Flux FluxSpec `json:"flux"`

	// Logging modes determine the output you see in the job log
	// +optional
	Logging LoggingSpec `json:"logging"`

	// Archive to load or save
	// +optional
	Archive MiniClusterArchive `json:"archive"`

	// Share process namespace?
	// +optional
	ShareProcessNamespace bool `json:"shareProcessNamespace"`

	// Cleanup the pods and storage when the index broker pod is complete
	// +kubebuilder:default=false
	// +default=false
	// +optional
	Cleanup bool `json:"cleanup,omitempty"`

	// Size (number of job pods to run, size of minicluster in pods)
	// This is also the minimum number required to start Flux
	// +kubebuilder:default=1
	// +default=1
	// +optional
	Size int32 `json:"size,omitempty"`

	// MaxSize (maximum number of pods to allow scaling to)
	// +optional
	MaxSize int32 `json:"maxSize,omitempty"`

	// MinSize (minimum number of pods that must be up for Flux)
	// Note that this option does not edit the number of tasks,
	// so a job could run with fewer (and then not start)
	// +optional
	MinSize int32 `json:"minSize,omitempty"`

	// Total number of CPUs being run across entire cluster
	// +kubebuilder:default=1
	// +default=1
	// +optional
	Tasks int32 `json:"tasks,omitempty"`

	// Should the job be limited to a particular number of seconds?
	// Approximately one year. This cannot be zero or job won't start
	// +kubebuilder:default=31500000
	// +default=31500000
	// +optional
	DeadlineSeconds int64 `json:"deadlineSeconds,omitempty"`

	// Pod spec details
	// +optional
	Pod PodSpec `json:"pod"`
}

MiniCluster is an HPC cluster in Kubernetes you can control Either to submit a single job (and go away) or for a persistent single- or multi- user cluster

func (*MiniClusterSpec) DeepCopy

func (in *MiniClusterSpec) DeepCopy() *MiniClusterSpec

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

func (*MiniClusterSpec) DeepCopyInto

func (in *MiniClusterSpec) DeepCopyInto(out *MiniClusterSpec)

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

type MiniClusterStatus

type MiniClusterStatus struct {

	// These are for the sub-resource scale functionality
	Size     int32  `json:"size"`
	Selector string `json:"selector"`

	// The Jobid is set internally to associate to a miniCluster
	// This isn't currently in use, we only have one!
	Jobid string `json:"jobid"`

	// We keep the original size of the MiniCluster request as
	// this is the absolute maximum
	MaximumSize int32 `json:"maximumSize"`

	// conditions hold the latest Flux Job and MiniCluster states
	// +listType=atomic
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

MiniClusterStatus defines the observed state of Flux

func (*MiniClusterStatus) DeepCopy

func (in *MiniClusterStatus) DeepCopy() *MiniClusterStatus

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

func (*MiniClusterStatus) DeepCopyInto

func (in *MiniClusterStatus) DeepCopyInto(out *MiniClusterStatus)

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

type MiniClusterUser

type MiniClusterUser struct {

	// If a user is defined, the username is required
	Name string `json:"name"`

	// +optional
	Password string `json:"password"`
}

func (*MiniClusterUser) DeepCopy

func (in *MiniClusterUser) DeepCopy() *MiniClusterUser

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

func (*MiniClusterUser) DeepCopyInto

func (in *MiniClusterUser) DeepCopyInto(out *MiniClusterUser)

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

type Network

type Network struct {

	// Name for cluster headless service
	// +kubebuilder:default="flux-service"
	// +default="flux-service"
	// +optional
	HeadlessName string `json:"headlessName,omitempty"`

	// Disable affinity rules that guarantee one network address / node
	// +optional
	DisableAffinity bool `json:"disableAffinity,omitempty"`
}

func (*Network) DeepCopy

func (in *Network) DeepCopy() *Network

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

func (*Network) DeepCopyInto

func (in *Network) DeepCopyInto(out *Network)

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

type PodSpec

type PodSpec struct {

	// Annotations for each pod
	// +optional
	Annotations map[string]string `json:"annotations"`

	// Labels for each pod
	// +optional
	Labels map[string]string `json:"labels"`

	// Restart Policy
	// +optional
	RestartPolicy string `json:"restartPolicy,omitempty"`

	// Service account name for the pod
	// +optional
	ServiceAccountName string `json:"serviceAccountName,omitempty"`

	// RuntimeClassName for the pod
	// +optional
	RuntimeClassName string `json:"runtimeClassName,omitempty"`

	// Automatically mount the service account name
	// +optional
	AutomountServiceAccountToken bool `json:"automountServiceAccountToken,omitempty"`

	// Scheduler name for the pod
	// +optional
	SchedulerName string `json:"schedulerName,omitempty"`

	// NodeSelectors for a pod
	// +optional
	NodeSelector map[string]string `json:"nodeSelector,omitempty"`

	// Resources include limits and requests
	// +optional
	Resources ContainerResource `json:"resources"`
}

PodSpec controlls variables for the cluster pod

func (*PodSpec) DeepCopy

func (in *PodSpec) DeepCopy() *PodSpec

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

func (*PodSpec) DeepCopyInto

func (in *PodSpec) DeepCopyInto(out *PodSpec)

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

type Secret

type Secret struct {

	// Name under secretKeyRef->Name
	Name string `json:"name"`

	// Key under secretKeyRef->Key
	Key string `json:"key"`
}

Secret describes a secret from the environment. The envar name should be the key of the top level map.

func (*Secret) DeepCopy

func (in *Secret) DeepCopy() *Secret

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

func (*Secret) DeepCopyInto

func (in *Secret) DeepCopyInto(out *Secret)

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

type SecurityContext

type SecurityContext struct {

	// Privileged container
	// +optional
	Privileged bool `json:"privileged,omitempty"`

	// Capabilities to add
	// +optional
	// +listType=atomic
	AddCapabilities []string `json:"addCapabilities,omitempty"`
}

func (*SecurityContext) DeepCopy

func (in *SecurityContext) DeepCopy() *SecurityContext

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

func (*SecurityContext) DeepCopyInto

func (in *SecurityContext) DeepCopyInto(out *SecurityContext)

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