v1beta1

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Mar 16, 2023 License: Apache-2.0 Imports: 25 Imported by: 1

Documentation

Overview

Package v1beta1 contains API Schema definitions for the flinkoperator v1beta1 API group +kubebuilder:object:generate=true +groupName=flinkoperator.k8s.io

Index

Constants

View Source
const (
	DefaultJobManagerReplicas  = 1
	DefaultTaskManagerReplicas = 3
)
View Source
const (
	AccessScopeCluster  = "Cluster"
	AccessScopeVPC      = "VPC"
	AccessScopeExternal = "External"
	AccessScopeNodePort = "NodePort"
	AccessScopeHeadless = "Headless"
)

AccessScope defines the access scope of JobManager service.

View Source
const (
	// control annotation key
	ControlAnnotation = "flinkclusters.flinkoperator.k8s.io/user-control"

	// control name
	ControlNameSavepoint = "savepoint"
	ControlNameJobCancel = "job-cancel"

	// control state
	ControlStateRequested  = "Requested"
	ControlStateInProgress = "InProgress"
	ControlStateSucceeded  = "Succeeded"
	ControlStateFailed     = "Failed"
)

User requested control

View Source
const (
	SavepointStateInProgress    = "InProgress"
	SavepointStateTriggerFailed = "TriggerFailed"
	SavepointStateFailed        = "Failed"
	SavepointStateSucceeded     = "Succeeded"

	SavepointReasonUserRequested SavepointReason = "user requested"
	SavepointReasonJobCancel     SavepointReason = "job cancel"
	SavepointReasonScheduled     SavepointReason = "scheduled"
	SavepointReasonUpdate        SavepointReason = "update"
)
View Source
const (
	// This refers to the Kubernetes Type [StatefulSet](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset)
	// Use persistent volumes for recovery.
	DeploymentTypeStatefulSet = "StatefulSet"

	// This refers to the Kubernetes Type [Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment)
	// Faster startup, but the volumes are ephemeral
	DeploymentTypeDeployment = "Deployment"
)
View Source
const (
	// CleanupActionKeepCluster - keep the entire cluster.
	CleanupActionKeepCluster = "KeepCluster"
	// CleanupActionDeleteCluster - delete the entire cluster.
	CleanupActionDeleteCluster = "DeleteCluster"
	// CleanupActionDeleteTaskManager - delete task manager, keep job manager.
	CleanupActionDeleteTaskManager = "DeleteTaskManager"
)
View Source
const (
	InvalidControlAnnMsg           = "invalid value for annotation key: %v, value: %v, available values: savepoint, job-cancel"
	InvalidJobStateForJobCancelMsg = "job-cancel is not allowed because job is not started yet or already terminated, annotation: %v"
	InvalidJobStateForSavepointMsg = "savepoint is not allowed because job is not started yet or already stopped, annotation: %v"
	InvalidSavepointDirMsg         = "savepoint is not allowed without spec.job.savepointsDir, annotation: %v"
	SessionClusterWarnMsg          = "%v is not allowed for session cluster, annotation: %v"
	ControlChangeWarnMsg           = "change is not allowed for control in progress, annotation: %v"
)

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "flinkoperator.k8s.io", Version: "v1beta1"}

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

type BatchSchedulerSpec struct {
	// BatchScheduler name.
	Name string `json:"name"`

	// _(Optional)_ Queue defines the queue in which resources will be allocates; if queue is
	// not specified, resources will be allocated in the schedulers default queue.
	// +optional
	Queue string `json:"queue,omitempty"`

	// _(Optional)_ If specified, indicates the PodGroup's priority. "system-node-critical" and
	// "system-cluster-critical" are two special keywords which indicate the
	// highest priorities with the former being the highest priority. Any other
	// name must be defined by creating a PriorityClass object with that name.
	// If not specified, the priority will be default or zero if there is no
	// default.
	// +optional
	PriorityClassName string `json:"priorityClassName,omitempty"`
}

func (*BatchSchedulerSpec) DeepCopy

func (in *BatchSchedulerSpec) DeepCopy() *BatchSchedulerSpec

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

func (*BatchSchedulerSpec) DeepCopyInto

func (in *BatchSchedulerSpec) DeepCopyInto(out *BatchSchedulerSpec)

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

type CleanupAction

type CleanupAction string

CleanupAction defines the action to take after job finishes.

type CleanupPolicy

type CleanupPolicy struct {
	// Action to take after job succeeds, default: `DeleteCluster`.
	// +kubebuilder:default=DeleteCluster
	// +kubebuilder:validation:Enum=KeepCluster;DeleteCluster;DeleteTaskManager
	AfterJobSucceeds CleanupAction `json:"afterJobSucceeds,omitempty"`
	// Action to take after job fails, default: `KeepCluster`.
	// +kubebuilder:default=KeepCluster
	// +kubebuilder:validation:Enum=KeepCluster;DeleteCluster;DeleteTaskManager
	AfterJobFails CleanupAction `json:"afterJobFails,omitempty"`
	// Action to take after job is cancelled, default: `DeleteCluster`.
	// +kubebuilder:default=DeleteCluster
	// +kubebuilder:validation:Enum=KeepCluster;DeleteCluster;DeleteTaskManager
	AfterJobCancelled CleanupAction `json:"afterJobCancelled,omitempty"`
}

CleanupPolicy defines the action to take after job finishes. Use one of `KeepCluster, DeleteCluster, DeleteTaskManager` for the below fields.

func (*CleanupPolicy) DeepCopy

func (in *CleanupPolicy) DeepCopy() *CleanupPolicy

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

func (*CleanupPolicy) DeepCopyInto

func (in *CleanupPolicy) DeepCopyInto(out *CleanupPolicy)

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

type ClusterState added in v0.4.2

type ClusterState string
const (
	ClusterStateCreating         ClusterState = "Creating"
	ClusterStateRunning          ClusterState = "Running"
	ClusterStateReconciling      ClusterState = "Reconciling"
	ClusterStateUpdating         ClusterState = "Updating"
	ClusterStateStopping         ClusterState = "Stopping"
	ClusterStatePartiallyStopped ClusterState = "PartiallyStopped"
	ClusterStateStopped          ClusterState = "Stopped"
)

ClusterState defines states for a cluster.

func (ClusterState) String added in v0.4.2

func (cs ClusterState) String() string

type ComponentState added in v0.4.2

type ComponentState string
const (
	ComponentStateNotReady ComponentState = "NotReady"
	ComponentStateReady    ComponentState = "Ready"
	ComponentStateUpdating ComponentState = "Updating"
	ComponentStateDeleted  ComponentState = "Deleted"
)

ComponentState defines states for a cluster component.

func (ComponentState) String added in v0.4.2

func (cs ComponentState) String() string

type ConfigMapStatus added in v0.4.2

type ConfigMapStatus struct {
	// The resource name of the component.
	Name string `json:"name"`

	// The state of the component.
	State ComponentState `json:"state"`
}

func (*ConfigMapStatus) DeepCopy added in v0.4.2

func (in *ConfigMapStatus) DeepCopy() *ConfigMapStatus

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

func (*ConfigMapStatus) DeepCopyInto added in v0.4.2

func (in *ConfigMapStatus) DeepCopyInto(out *ConfigMapStatus)

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

type DeploymentType added in v0.4.2

type DeploymentType string

K8s workload API kind for TaskManager workers

type FlinkCluster

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

	Spec   FlinkClusterSpec   `json:"spec"`
	Status FlinkClusterStatus `json:"status,omitempty"`
}

FlinkCluster is the Schema for the flinkclusters API +kubebuilder:object:root=true +kubebuilder:resource:shortName={fc,fcs} +kubebuilder:subresource:status +kubebuilder:subresource:scale:specpath=.spec.taskManager.replicas,statuspath=.status.components.taskManager.replicas,selectorpath=.status.components.taskManager.selector +kubebuilder:printcolumn:name="version",type=string,JSONPath=`.spec.flinkVersion` +kubebuilder:printcolumn:name="status",type=string,JSONPath=`.status.state` +kubebuilder:printcolumn:name="age",type=date,JSONPath=`.metadata.creationTimestamp` +kubebuilder:printcolumn:name="jm replicas",type=string,priority=1,JSONPath=`.status.components.jobManager.ready` +kubebuilder:printcolumn:name="jm zone",type=string,priority=1,JSONPath=`.spec.jobManager.nodeSelector.topology\.kubernetes\.io\/zone` +kubebuilder:printcolumn:name="tm replicas",type=string,priority=1,JSONPath=`.status.components.taskManager.ready` +kubebuilder:printcolumn:name="tm zone",type=string,priority=1,JSONPath=`.spec.taskManager.nodeSelector.topology\.kubernetes\.io\/zone` +kubebuilder:printcolumn:name="Image",type="string",priority=1,JSONPath=".spec.image.name"

func (*FlinkCluster) DeepCopy

func (in *FlinkCluster) DeepCopy() *FlinkCluster

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

func (*FlinkCluster) DeepCopyInto

func (in *FlinkCluster) DeepCopyInto(out *FlinkCluster)

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

func (*FlinkCluster) DeepCopyObject

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

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

func (*FlinkCluster) Default

func (cluster *FlinkCluster) Default()

Default implements webhook.Defaulter so a webhook will be registered for the type.

func (*FlinkCluster) GetHAConfigMapName added in v0.4.2

func (fc *FlinkCluster) GetHAConfigMapName() string

func (*FlinkCluster) IsHighAvailabilityEnabled added in v0.4.2

func (fc *FlinkCluster) IsHighAvailabilityEnabled() bool

func (*FlinkCluster) SetupWebhookWithManager

func (cluster *FlinkCluster) SetupWebhookWithManager(mgr ctrl.Manager) error

SetupWebhookWithManager adds webhook for FlinkCluster.

func (*FlinkCluster) ValidateCreate

func (cluster *FlinkCluster) ValidateCreate() error

ValidateCreate implements webhook.Validator so a webhook will be registered for the type.

func (*FlinkCluster) ValidateDelete

func (cluster *FlinkCluster) ValidateDelete() error

ValidateDelete implements webhook.Validator so a webhook will be registered for the type.

func (*FlinkCluster) ValidateUpdate

func (cluster *FlinkCluster) ValidateUpdate(old runtime.Object) error

ValidateUpdate implements webhook.Validator so a webhook will be registered for the type.

type FlinkClusterComponentsStatus

type FlinkClusterComponentsStatus struct {
	// The state of configMap.
	ConfigMap *ConfigMapStatus `json:"configMap,omitempty"`

	// The state of JobManager.
	JobManager *JobManagerStatus `json:"jobManager,omitempty"`

	// The state of JobManager service.
	JobManagerService JobManagerServiceStatus `json:"jobManagerService,omitempty"`

	// The state of JobManager ingress.
	JobManagerIngress *JobManagerIngressStatus `json:"jobManagerIngress,omitempty"`

	// The state of TaskManager.
	TaskManager *TaskManagerStatus `json:"taskManager,omitempty"`

	// The status of the job, available only when JobSpec is provided.
	Job *JobStatus `json:"job,omitempty"`
}

FlinkClusterComponentsStatus defines the observed status of the components of a FlinkCluster.

func (*FlinkClusterComponentsStatus) DeepCopy

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

func (*FlinkClusterComponentsStatus) DeepCopyInto

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

type FlinkClusterControlStatus

type FlinkClusterControlStatus struct {
	// Control name
	Name string `json:"name"`

	// Control data
	Details map[string]string `json:"details,omitempty"`

	// State
	State string `json:"state"`

	// Message
	Message string `json:"message,omitempty"`

	// State update time
	UpdateTime string `json:"updateTime"`
}

Control state

func (*FlinkClusterControlStatus) DeepCopy

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

func (*FlinkClusterControlStatus) DeepCopyInto

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

type FlinkClusterList

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

FlinkClusterList contains a list of FlinkCluster

func (*FlinkClusterList) DeepCopy

func (in *FlinkClusterList) DeepCopy() *FlinkClusterList

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

func (*FlinkClusterList) DeepCopyInto

func (in *FlinkClusterList) DeepCopyInto(out *FlinkClusterList)

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

func (*FlinkClusterList) DeepCopyObject

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

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

type FlinkClusterSpec

type FlinkClusterSpec struct {
	// The version of Flink to be managed. This version must match the version in the image.
	FlinkVersion string `json:"flinkVersion"`

	// Flink image for JobManager, TaskManager and job containers.
	Image ImageSpec `json:"image"`

	// _(Optional)_ The service account assigned to JobManager, TaskManager and Job submitter Pods. If empty, the default service account in the namespace will be used.
	ServiceAccountName *string `json:"serviceAccountName,omitempty"`

	// Deprecated: BatchSchedulerName specifies the batch scheduler name for JobManager, TaskManager.
	// If empty, no batch scheduling is enabled.
	BatchSchedulerName *string `json:"batchSchedulerName,omitempty"`

	// _(Optional)_ BatchScheduler specifies the batch scheduler for JobManager, TaskManager.
	// If empty, no batch scheduling is enabled.
	BatchScheduler *BatchSchedulerSpec `json:"batchScheduler,omitempty"`

	// _(Optional)_ Defines the PodDisruptionBudget for JobManager and TaskManager.
	// If empty, no PodDisruptionBudget is created.
	PodDisruptionBudget *policyv1.PodDisruptionBudgetSpec `json:"podDisruptionBudget,omitempty"`

	// _(Optional)_ Flink JobManager spec.
	// +kubebuilder:default:={replicas:1}
	JobManager *JobManagerSpec `json:"jobManager,omitempty"`

	// _(Optional)_ Flink TaskManager spec.
	// +kubebuilder:default:={replicas:3}
	TaskManager *TaskManagerSpec `json:"taskManager,omitempty"`

	// _(Optional)_ Job spec. If specified, this cluster is an ephemeral Job
	// Cluster, which will be automatically terminated after the job finishes;
	// otherwise, it is a long-running Session Cluster.
	Job *JobSpec `json:"job,omitempty"`

	// _(Optional)_ Environment variables shared by all JobManager, TaskManager and job
	// containers.
	// [More info](https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/)
	EnvVars []corev1.EnvVar `json:"envVars,omitempty"`

	// _(Optional)_ Environment variables injected from a source, shared by all JobManager,
	// TaskManager and job containers.
	// [More info](https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables)
	EnvFrom []corev1.EnvFromSource `json:"envFrom,omitempty"`

	// _(Optional)_ Flink properties which are appened to flink-conf.yaml.
	FlinkProperties map[string]string `json:"flinkProperties,omitempty"`

	// _(Optional)_ Config for Hadoop.
	HadoopConfig *HadoopConfig `json:"hadoopConfig,omitempty"`

	// _(Optional)_ Config for GCP.
	GCPConfig *GCPConfig `json:"gcpConfig,omitempty"`

	// _(Optional)_ The logging configuration, which should have keys 'log4j-console.properties' and 'logback-console.xml'.
	// These will end up in the 'flink-config-volume' ConfigMap, which gets mounted at /opt/flink/conf.
	// If not provided, defaults that log to console only will be used.
	// <br> - log4j-console.properties: The contents of the log4j properties file to use. If not provided, a default that logs only to stdout will be provided.
	// <br> - logback-console.xml: The contents of the logback XML file to use. If not provided, a default that logs only to stdout will be provided.
	// <br> - Other arbitrary keys are also allowed, and will become part of the ConfigMap.
	LogConfig map[string]string `json:"logConfig,omitempty"`

	// The maximum number of revision history to keep, default: 10.
	RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty"`

	// Recreate components when updating flinkcluster, default: true.
	// +kubebuilder:default:=true
	RecreateOnUpdate *bool `json:"recreateOnUpdate,omitempty"`
}

FlinkClusterSpec defines the desired state of FlinkCluster

func (*FlinkClusterSpec) DeepCopy

func (in *FlinkClusterSpec) DeepCopy() *FlinkClusterSpec

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

func (*FlinkClusterSpec) DeepCopyInto

func (in *FlinkClusterSpec) DeepCopyInto(out *FlinkClusterSpec)

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

type FlinkClusterStatus

type FlinkClusterStatus struct {

	// The overall state of the Flink cluster.
	State ClusterState `json:"state"`

	// The status of the components.
	Components FlinkClusterComponentsStatus `json:"components"`

	// The status of control requested by user.
	Control *FlinkClusterControlStatus `json:"control,omitempty"`

	// The status of savepoint progress.
	Savepoint *SavepointStatus `json:"savepoint,omitempty"`

	// The status of revision.
	Revision RevisionStatus `json:"revision,omitempty"`

	// Last update timestamp for this status.
	LastUpdateTime string `json:"lastUpdateTime,omitempty"`
}

FlinkClusterStatus defines the observed state of FlinkCluster

func (*FlinkClusterStatus) DeepCopy

func (in *FlinkClusterStatus) DeepCopy() *FlinkClusterStatus

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

func (*FlinkClusterStatus) DeepCopyInto

func (in *FlinkClusterStatus) DeepCopyInto(out *FlinkClusterStatus)

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

type GCPConfig

type GCPConfig struct {
	// GCP service account.
	ServiceAccount *GCPServiceAccount `json:"serviceAccount,omitempty"`
}

GCPConfig defines configs for GCP.

func (*GCPConfig) DeepCopy

func (in *GCPConfig) DeepCopy() *GCPConfig

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

func (*GCPConfig) DeepCopyInto

func (in *GCPConfig) DeepCopyInto(out *GCPConfig)

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

type GCPServiceAccount

type GCPServiceAccount struct {
	// The name of the Secret holding the GCP service account key file.
	// The Secret must be in the same namespace as the FlinkCluster.
	SecretName string `json:"secretName,omitempty"`

	// The name of the service account key file.
	KeyFile string `json:"keyFile,omitempty"`

	// The path where to mount the Volume of the Secret.
	MountPath string `json:"mountPath,omitempty"`
}

GCPServiceAccount defines the config about GCP service account.

func (*GCPServiceAccount) DeepCopy

func (in *GCPServiceAccount) DeepCopy() *GCPServiceAccount

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

func (*GCPServiceAccount) DeepCopyInto

func (in *GCPServiceAccount) DeepCopyInto(out *GCPServiceAccount)

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

type HadoopConfig

type HadoopConfig struct {
	// The name of the ConfigMap which contains the Hadoop config files.
	// The ConfigMap must be in the same namespace as the FlinkCluster.
	// +kubebuilder:validation:MinLength=1
	ConfigMapName string `json:"configMapName,omitempty"`

	// The path where to mount the Volume of the ConfigMap.
	// default: `/etc/hadoop/conf`.
	// +kubebuilder:default:=/etc/hadoop/conf
	MountPath string `json:"mountPath,omitempty"`
}

HadoopConfig defines configs for Hadoop.

func (*HadoopConfig) DeepCopy

func (in *HadoopConfig) DeepCopy() *HadoopConfig

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

func (*HadoopConfig) DeepCopyInto

func (in *HadoopConfig) DeepCopyInto(out *HadoopConfig)

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

type HorizontalPodAutoscalerSpec added in v0.5.0

type HorizontalPodAutoscalerSpec struct {
	// minReplicas is the lower limit for the number of replicas to which the autoscaler
	// can scale down.  It defaults to 1 pod.  minReplicas is allowed to be 0 if the
	// alpha feature gate HPAScaleToZero is enabled and at least one Object or External
	// metric is configured.  Scaling is active as long as at least one metric value is
	// available.
	MinReplicas *int32 `json:"minReplicas,omitempty"`
	// maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up.
	// It cannot be less that minReplicas.
	MaxReplicas int32 `json:"maxReplicas"`
	// metrics contains the specifications for which to use to calculate the
	// desired replica count (the maximum replica count across all metrics will
	// be used).  The desired replica count is calculated multiplying the
	// ratio between the target value and the current value by the current
	// number of pods.  Ergo, metrics used must decrease as the pod count is
	// increased, and vice-versa.  See the individual metric source types for
	// more information about how each type of metric must respond.
	// If not set, the default metric will be set to 80% average CPU utilization.
	Metrics []autoscalingv2.MetricSpec `json:"metrics,omitempty"`

	// behavior configures the scaling behavior of the target
	// in both Up and Down directions (scaleUp and scaleDown fields respectively).
	// If not set, the default HPAScalingRules for scale up and scale down are used.
	Behavior *autoscalingv2.HorizontalPodAutoscalerBehavior `json:"behavior,omitempty" protobuf:"bytes,5,opt,name=behavior"`
}

func (*HorizontalPodAutoscalerSpec) DeepCopy added in v0.5.0

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

func (*HorizontalPodAutoscalerSpec) DeepCopyInto added in v0.5.0

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

type ImageSpec

type ImageSpec struct {
	// Flink image name.
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`

	// Image pull policy. One of `Always, Never, IfNotPresent`, default: `Always`.
	// if :latest tag is specified, or IfNotPresent otherwise.
	// [More info](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy)
	// +kubebuilder:default:=Always
	// +kubebuilder:validation:Enum=Always;Never;IfNotPresent
	PullPolicy corev1.PullPolicy `json:"pullPolicy,omitempty"`

	// _(Optional)_ Secrets for image pull.
	// [More info](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#create-a-pod-that-uses-your-secret)
	PullSecrets []corev1.LocalObjectReference `json:"pullSecrets,omitempty"`
}

ImageSpec defines Flink image of JobManager and TaskManager containers.

func (*ImageSpec) DeepCopy

func (in *ImageSpec) DeepCopy() *ImageSpec

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

func (*ImageSpec) DeepCopyInto

func (in *ImageSpec) DeepCopyInto(out *ImageSpec)

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

type JobManagerIngressSpec

type JobManagerIngressSpec struct {
	// _(Optional)_ Ingress host format. ex) {{$clusterName}}.example.com
	HostFormat *string `json:"hostFormat,omitempty"`

	// _(Optional)_Annotations for ingress configuration.
	// [More info](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/)
	Annotations map[string]string `json:"annotations,omitempty"`

	// TLS use, default: `false`.
	// +kubebuilder:default:=false
	UseTLS *bool `json:"useTls,omitempty"`

	// _(Optional)_TLS secret name.
	TLSSecretName *string `json:"tlsSecretName,omitempty"`
}

JobManagerIngressSpec defines ingress of JobManager

func (*JobManagerIngressSpec) DeepCopy

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

func (*JobManagerIngressSpec) DeepCopyInto

func (in *JobManagerIngressSpec) DeepCopyInto(out *JobManagerIngressSpec)

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

type JobManagerIngressStatus

type JobManagerIngressStatus struct {
	// The name of the Kubernetes ingress resource.
	Name string `json:"name"`

	// The state of the component.
	State ComponentState `json:"state"`

	// The URLs of ingress.
	URLs []string `json:"urls,omitempty"`
}

JobManagerIngressStatus defines the status of a JobManager ingress.

func (*JobManagerIngressStatus) DeepCopy

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

func (*JobManagerIngressStatus) DeepCopyInto

func (in *JobManagerIngressStatus) DeepCopyInto(out *JobManagerIngressStatus)

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

type JobManagerPorts

type JobManagerPorts struct {
	// RPC port, default: `6123`.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	// +kubebuilder:default:=6123
	RPC *int32 `json:"rpc,omitempty"`

	// Blob port, default: `6124`.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	// +kubebuilder:default:=6124
	Blob *int32 `json:"blob,omitempty"`

	// Query port, default: `6125`.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	// +kubebuilder:default:=6125
	Query *int32 `json:"query,omitempty"`

	// UI port, default: `8081`.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	// +kubebuilder:default:=8081
	UI *int32 `json:"ui,omitempty"`
}

JobManagerPorts defines ports of JobManager.

func (*JobManagerPorts) DeepCopy

func (in *JobManagerPorts) DeepCopy() *JobManagerPorts

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

func (*JobManagerPorts) DeepCopyInto

func (in *JobManagerPorts) DeepCopyInto(out *JobManagerPorts)

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

type JobManagerServiceStatus

type JobManagerServiceStatus struct {
	// The name of the Kubernetes jobManager service.
	Name string `json:"name"`

	// The state of the component.
	State ComponentState `json:"state"`

	// (Optional) The node port, present when `accessScope` is `NodePort`.
	NodePort int32 `json:"nodePort,omitempty"`

	// (Optional) The load balancer ingress, present when `accessScope` is `VPC` or `External`
	LoadBalancerIngress []corev1.LoadBalancerIngress `json:"loadBalancerIngress,omitempty"`
}

JobManagerServiceStatus defines the observed state of FlinkCluster

func (*JobManagerServiceStatus) DeepCopy

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

func (*JobManagerServiceStatus) DeepCopyInto

func (in *JobManagerServiceStatus) DeepCopyInto(out *JobManagerServiceStatus)

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

type JobManagerSpec

type JobManagerSpec struct {
	// The number of JobManager replicas, default: `1`
	// +kubebuilder:default:=1
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=1
	Replicas *int32 `json:"replicas,omitempty"`

	// Access scope, default: `Cluster`.
	// `Cluster`: accessible from within the same cluster.
	// `VPC`: accessible from within the same VPC.
	// `External`: accessible from the internet.
	// `NodePort`: accessible through node port.
	// `Headless`: pod IPs assumed to be routable and advertised directly with `clusterIP: None“.
	// Currently `VPC, External` are only available for GKE.
	// +kubebuilder:default:=Cluster
	// +kubebuilder:validation:Enum=Cluster;VPC;External;NodePort;Headless
	AccessScope string `json:"accessScope,omitempty"`

	// _(Optional)_ Define JobManager Service annotations for configuration.
	ServiceAnnotations map[string]string `json:"ServiceAnnotations,omitempty"`

	// _(Optional)_ Define JobManager Service labels for configuration.
	ServiceLabels map[string]string `json:"ServiceLabels,omitempty"`

	// _(Optional)_ Provide external access to JobManager UI/API.
	Ingress *JobManagerIngressSpec `json:"ingress,omitempty"`

	// Ports that JobManager listening on.
	// +kubebuilder:default:={rpc:6123, blob:6124, query:6125, ui:8081}
	Ports JobManagerPorts `json:"ports,omitempty"`

	// _(Optional)_ Extra ports to be exposed. For example, Flink metrics reporter ports: Prometheus, JMX and so on.
	// Each port number and name must be unique among ports and extraPorts.
	ExtraPorts []NamedPort `json:"extraPorts,omitempty"`

	// Compute resources required by each JobManager container.
	// default: 2 CPUs with 2Gi Memory.
	// It Cannot be updated.
	// [More info](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/)
	// +kubebuilder:default:={requests:{cpu:"200m", memory:"512Mi"}, limits: {cpu:2, memory:"2Gi"}}
	Resources corev1.ResourceRequirements `json:"resources,omitempty"`

	// Percentage of off-heap memory in containers, as a safety margin to avoid OOM kill, default: `25`
	MemoryOffHeapRatio *int32 `json:"memoryOffHeapRatio,omitempty"`

	// Minimum amount of off-heap memory in containers, as a safety margin to avoid OOM kill, default: `600M`
	// You can express this value like 600M, 572Mi and 600e6
	// [More info](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-memory)
	MemoryOffHeapMin resource.Quantity `json:"memoryOffHeapMin,omitempty"`

	// For Flink 1.10+. Percentage of memory process, as a safety margin to avoid OOM kill, default: `80`
	MemoryProcessRatio *int32 `json:"memoryProcessRatio,omitempty"`

	// _(Optional)_ Volumes in the JobManager pod.
	// [More info](https://kubernetes.io/docs/concepts/storage/volumes/)
	Volumes []corev1.Volume `json:"volumes,omitempty"`

	// _(Optional)_ Volume mounts in the JobManager container.
	// [More info](https://kubernetes.io/docs/concepts/storage/volumes/)
	VolumeMounts []corev1.VolumeMount `json:"volumeMounts,omitempty"`

	// _(Optional)_ A template for persistent volume claim each requested and mounted to JobManager pod,
	// This can be used to mount an external volume with a specific storageClass or larger captivity (for larger/faster state backend).
	// [More info](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims)
	VolumeClaimTemplates []corev1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty"`

	// _(Optional)_ Init containers of the Job Manager pod.
	// [More info](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/)
	InitContainers []corev1.Container `json:"initContainers,omitempty"`

	// _(Optional)_ Defines the affinity of the JobManager pod
	// [More info](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity)
	Affinity *corev1.Affinity `json:"affinity,omitempty"`

	// _(Optional)_ Selector which must match a node's labels for the JobManager pod to be
	// scheduled on that node.
	// [More info](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/)
	NodeSelector map[string]string `json:"nodeSelector,omitempty"`

	// _(Optional)_ Defines the node affinity of the JobManager pod
	// [More info](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)
	Tolerations []corev1.Toleration `json:"tolerations,omitempty"`

	// _(Optional)_ Sidecar containers running alongside with the JobManager container in the pod.
	// [More info](https://kubernetes.io/docs/concepts/containers/)
	Sidecars []corev1.Container `json:"sidecars,omitempty"`

	// _(Optional)_ JobManager StatefulSet pod template annotations.
	// [More info](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/)
	PodAnnotations map[string]string `json:"podAnnotations,omitempty"`

	// _(Optional)_ SecurityContext of the JobManager pod.
	// [More info](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod)
	SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`

	// _(Optional)_ JobManager StatefulSet pod template labels.
	// [More info](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/)
	PodLabels map[string]string `json:"podLabels,omitempty"`

	// Container liveness probe
	// If omitted, a [default value](https://github.com/spotify/flink-on-k8s-operator/blob/a88ed2b/api/v1beta1/flinkcluster_default.go#L113-L123) will be used.
	// [More info](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)
	LivenessProbe *corev1.Probe `json:"livenessProbe,omitempty"`

	// Container readiness probe
	// If omitted, a [default value](https://github.com/spotify/flink-on-k8s-operator/blob/a88ed2b/api/v1beta1/flinkcluster_default.go#L129-L139) will be used.
	// [More info](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)
	ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty"`

	// _(Optional)_ Adding entries to JobManager pod /etc/hosts with HostAliases
	// [More info](https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/)
	HostAliases []corev1.HostAlias `json:"hostAliases,omitempty"`
}

JobManagerSpec defines properties of JobManager.

func (*JobManagerSpec) DeepCopy

func (in *JobManagerSpec) DeepCopy() *JobManagerSpec

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

func (*JobManagerSpec) DeepCopyInto

func (in *JobManagerSpec) DeepCopyInto(out *JobManagerSpec)

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

func (*JobManagerSpec) GetResources added in v0.4.2

func (jm *JobManagerSpec) GetResources() *corev1.ResourceList

type JobManagerStatus added in v0.4.2

type JobManagerStatus struct {
	// The resource name of the component.
	Name string `json:"name"`

	// The state of the component.
	State ComponentState `json:"state"`

	// replicas is the number of desired replicas.
	Replicas int32 `json:"replicas"`

	// readyReplicas is the number of created pods with a Ready Condition.
	ReadyReplicas int32 `json:"readyReplicas,omitempty"`

	Ready string `json:"ready"`
}

func (*JobManagerStatus) DeepCopy added in v0.4.2

func (in *JobManagerStatus) DeepCopy() *JobManagerStatus

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

func (*JobManagerStatus) DeepCopyInto added in v0.4.2

func (in *JobManagerStatus) DeepCopyInto(out *JobManagerStatus)

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

type JobMode

type JobMode string

JobMode defines the running mode for the job.

const (
	JobModeBlocking    JobMode = "Blocking"
	JobModeApplication JobMode = "Application"
	JobModeDetached    JobMode = "Detached"
)

type JobRestartPolicy

type JobRestartPolicy string

JobRestartPolicy defines the restart policy when a job fails.

const (
	// JobRestartPolicyNever - never restarts a failed job.
	JobRestartPolicyNever JobRestartPolicy = "Never"

	// JobRestartPolicyFromSavepointOnFailure - restart the job from the latest
	// savepoint if available, otherwise do not restart.
	JobRestartPolicyFromSavepointOnFailure JobRestartPolicy = "FromSavepointOnFailure"
)

type JobSpec

type JobSpec struct {
	// _(Optional)_ Adds URLs to each user code classloader on all nodes in the cluster.
	// The paths must specify a protocol (e.g. file://) and be accessible on all nodes (e.g. by means of a NFS share).
	// The protocol must be supported by the {@link java.net.URLClassLoader}.
	// You may add support to more protocol by setting the `java.protocol.handler.pkgs` java option
	ClassPath []string `json:"classPath,omitempty"`

	// _(Optional)_ JAR file of the job. It could be a local file or remote URI,
	// depending on which protocols (e.g., `https://, gs://`) are supported by the Flink image.
	JarFile *string `json:"jarFile,omitempty"`

	// _(Optional)_ Fully qualified Java class name of the job.
	ClassName *string `json:"className,omitempty"`

	// _(Optional)_ Python file of the job. It could be a local file or remote URI (e.g.,`https://`, `gs://`).
	PyFile *string `json:"pyFile,omitempty"`

	// _(Optional)_ Python files of the job. It could be a local file (with .py/.egg/.zip/.whl), directory or remote URI (e.g.,`https://`, `gs://`).
	// See the Flink argument `--pyFiles` for the detail.
	PyFiles *string `json:"pyFiles,omitempty"`

	// _(Optional)_ Python module path of the job entry point. Must use with pythonFiles.
	PyModule *string `json:"pyModule,omitempty"`

	// _(Optional)_ Command-line args of the job.
	Args []string `json:"args,omitempty"`

	// _(Optional)_ FromSavepoint where to restore the job from
	// Savepoint where to restore the job from (e.g., gs://my-savepoint/1234).
	// If flink job must be restored from the latest available savepoint when Flink job updating, this field must be unspecified.
	FromSavepoint *string `json:"fromSavepoint,omitempty"`

	// Allow non-restored state, default: `false`.
	// +kubebuilder:default:=false
	AllowNonRestoredState *bool `json:"allowNonRestoredState,omitempty"`

	// _(Optional)_ Savepoints dir where to store savepoints of the job.
	SavepointsDir *string `json:"savepointsDir,omitempty"`

	// _(Optional)_ Should take savepoint before updating job, default: `true`.
	// If this is set as false, maxStateAgeToRestoreSeconds must be provided to limit the savepoint age to restore.
	TakeSavepointOnUpdate *bool `json:"takeSavepointOnUpdate,omitempty"`

	// _(Optional)_ Maximum age of the savepoint that allowed to restore state.
	// This is applied to auto restart on failure, update from stopped state and update without taking savepoint.
	// If nil, job can be restarted only when the latest savepoint is the final job state (created by "stop with savepoint")
	// - that is, only when job can be resumed from the suspended state.
	// +kubebuilder:validation:Minimum=0
	MaxStateAgeToRestoreSeconds *int32 `json:"maxStateAgeToRestoreSeconds,omitempty"`

	// _(Optional)_ Automatically take a savepoint to the `savepointsDir` every n seconds.
	AutoSavepointSeconds *int32 `json:"autoSavepointSeconds,omitempty"`

	// _(Optional)_ Update this field to `jobStatus.savepointGeneration + 1` for a running job
	// cluster to trigger a new savepoint to `savepointsDir` on demand.
	SavepointGeneration int32 `json:"savepointGeneration,omitempty"`

	// _(Optional)_ Job parallelism; if not set parallelism will be #replicas * #slots.
	Parallelism *int32 `json:"parallelism,omitempty"`

	// No logging output to STDOUT, default: `false`.
	// +kubebuilder:default:=false
	NoLoggingToStdout *bool `json:"noLoggingToStdout,omitempty"`

	// _(Optional)_ Volumes in the Job pod.
	// [More info](https://kubernetes.io/docs/concepts/storage/volumes/)
	Volumes []corev1.Volume `json:"volumes,omitempty"`

	// _(Optional)_ Volume mounts in the Job container.
	// [More info](https://kubernetes.io/docs/concepts/storage/volumes/)
	VolumeMounts []corev1.VolumeMount `json:"volumeMounts,omitempty"`

	// _(Optional)_ Init containers of the Job pod. A typical use case could be using an init
	// container to download a remote job jar to a local path which is
	// referenced by the `jarFile` property.
	// [More info](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/)
	InitContainers []corev1.Container `json:"initContainers,omitempty"`

	// _(Optional)_ Defines the affinity of the Job submitter pod
	// [More info](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity)
	Affinity *corev1.Affinity `json:"affinity,omitempty"`

	// _(Optional)_ Selector which must match a node's labels for the Job submitter pod to be
	// scheduled on that node.
	// [More info](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/)
	NodeSelector map[string]string `json:"nodeSelector,omitempty"`

	// _(Optional)_ Defines the node affinity of the Job submitter pod
	// [More info](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)
	Tolerations []corev1.Toleration `json:"tolerations,omitempty"`

	// Restart policy when the job fails, one of `Never, FromSavepointOnFailure`,
	// default: `Never`.
	// `Never` means the operator will never try to restart a failed job, manual
	// cleanup and restart is required.
	// `FromSavepointOnFailure` means the operator will try to restart the failed
	// job from the savepoint recorded in the job status if available; otherwise,
	// the job will stay in failed state. This option is usually used together
	// with `autoSavepointSeconds` and `savepointsDir`.
	// +kubebuilder:default:=Never
	// +kubebuilder:validation:Enum=Never;FromSavepointOnFailure
	RestartPolicy *JobRestartPolicy `json:"restartPolicy,omitempty"`

	// The action to take after job finishes.
	// +kubebuilder:default:={afterJobSucceeds:DeleteCluster, afterJobFails:KeepCluster, afterJobCancelled:DeleteCluster}
	CleanupPolicy *CleanupPolicy `json:"cleanupPolicy,omitempty"`

	// Deprecated: _(Optional)_ Request the job to be cancelled. Only applies to running jobs. If
	// `savePointsDir` is provided, a savepoint will be taken before stopping the
	// job.
	CancelRequested *bool `json:"cancelRequested,omitempty"`

	// _(Optional)_ Job pod template annotations.
	// [More info](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/)
	PodAnnotations map[string]string `json:"podAnnotations,omitempty"`

	// _(Optional)_ Job pod template labels.
	// [More info](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/)
	PodLabels map[string]string `json:"podLabels,omitempty"`

	// _(Optional)_ Compute resources required by each Job container.
	// If omitted, a default value will be used.
	// It Cannot be updated.
	// More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
	// +kubebuilder:default:={requests:{cpu:"200m", memory:"512Mi"}, limits: {cpu:2, memory:"2Gi"}}
	Resources corev1.ResourceRequirements `json:"resources,omitempty"`

	// _(Optional)_ SecurityContext of the Job pod.
	// [More info](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod)
	SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`

	// _(Optional)_ Adding entries to Job pod /etc/hosts with HostAliases
	// [More info](https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/)
	HostAliases []corev1.HostAlias `json:"hostAliases,omitempty"`

	// Job running mode, `"Blocking", "Detached"`, default: `"Detached"`
	// +kubebuilder:validation:Enum=Detached;Blocking;Application
	// +kubebuilder:default:=Detached
	Mode *JobMode `json:"mode,omitempty"`
}

JobSpec defines properties of a Flink job.

func (*JobSpec) DeepCopy

func (in *JobSpec) DeepCopy() *JobSpec

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

func (*JobSpec) DeepCopyInto

func (in *JobSpec) DeepCopyInto(out *JobSpec)

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

type JobState added in v0.4.2

type JobState string

JobState defines states for a Flink job deployment.

const (
	JobStatePending      JobState = "Pending"
	JobStateUpdating     JobState = "Updating"
	JobStateRestarting   JobState = "Restarting"
	JobStateDeploying    JobState = "Deploying"
	JobStateDeployFailed JobState = "DeployFailed"
	JobStateRunning      JobState = "Running"
	JobStateSucceeded    JobState = "Succeeded"
	JobStateCancelled    JobState = "Cancelled"
	JobStateFailed       JobState = "Failed"
	JobStateLost         JobState = "Lost"
	JobStateUnknown      JobState = "Unknown"
)

func (JobState) String added in v0.4.2

func (js JobState) String() string

type JobStatus

type JobStatus struct {
	// The ID of the Flink job.
	ID string `json:"id,omitempty"`

	// The Name of the Flink job.
	Name string `json:"name,omitempty"`

	// The name of the Kubernetes job resource.
	SubmitterName string `json:"submitterName,omitempty"`

	// Exit code of the JubSubmitter job resource.
	SubmitterExitCode int32 `json:"submitterExitCode,omitempty"`

	// The state of the Flink job deployment.
	State JobState `json:"state"`

	// The actual savepoint from which this job started.
	// In case of restart, it might be different from the savepoint in the job
	// spec.
	FromSavepoint string `json:"fromSavepoint,omitempty"`

	// The generation of the savepoint in `savepointsDir` taken by the operator.
	// The value starts from 0 when there is no savepoint and increases by 1 for
	// each successful savepoint.
	SavepointGeneration int32 `json:"savepointGeneration,omitempty"`

	// Savepoint location.
	SavepointLocation string `json:"savepointLocation,omitempty"`

	// Last successful savepoint completed timestamp.
	SavepointTime string `json:"savepointTime,omitempty"`

	// The savepoint recorded in savepointLocation is the final state of the job.
	FinalSavepoint bool `json:"finalSavepoint,omitempty"`

	// The timestamp of the Flink job deployment that creating job submitter.
	DeployTime string `json:"deployTime,omitempty"`

	// The Flink job started timestamp.
	StartTime string `json:"startTime,omitempty"`

	// The number of restarts.
	RestartCount int32 `json:"restartCount,omitempty"`

	// Job completion time. Present when job is terminated regardless of its state.
	CompletionTime *metav1.Time `json:"completionTime,omitempty"`

	// Reasons for the job failure. Present if job state is Failure
	FailureReasons []string `json:"failureReasons,omitempty"`
}

JobStatus defines the status of a job.

func (*JobStatus) DeepCopy

func (in *JobStatus) DeepCopy() *JobStatus

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

func (*JobStatus) DeepCopyInto

func (in *JobStatus) DeepCopyInto(out *JobStatus)

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

func (*JobStatus) IsActive

func (j *JobStatus) IsActive() bool

func (*JobStatus) IsFailed

func (j *JobStatus) IsFailed() bool

func (*JobStatus) IsPending

func (j *JobStatus) IsPending() bool

func (*JobStatus) IsSavepointUpToDate

func (j *JobStatus) IsSavepointUpToDate(spec *JobSpec, compareTime time.Time) bool

IsSavepointUpToDate check if the recorded savepoint is up-to-date compared to maxStateAgeToRestoreSeconds. If maxStateAgeToRestoreSeconds is not set, the savepoint is up-to-date only when the recorded savepoint is the final job state.

func (*JobStatus) IsStopped

func (j *JobStatus) IsStopped() bool

func (*JobStatus) IsTerminated

func (j *JobStatus) IsTerminated(spec *JobSpec) bool

func (*JobStatus) ShouldRestart

func (j *JobStatus) ShouldRestart(spec *JobSpec) bool

ShouldRestart returns true if the controller should restart failed job. The controller can restart the job only if there is a savepoint that is close to the end time of the job.

func (*JobStatus) UpdateReady

func (j *JobStatus) UpdateReady(spec *JobSpec, observeTime time.Time) bool

UpdateReady returns true if job is ready to proceed update.

type NamedPort

type NamedPort struct {
	// _(Optional)_ If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
	// named port in a pod must have a unique name. Name for the port that can be
	// referred to by services.
	Name string `json:"name,omitempty"`

	// Number of port to expose on the pod's IP address.
	// This must be a valid port number, 0 < x < 65536.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	ContainerPort int32 `json:"containerPort"`

	// Protocol for port. One of `UDP, TCP, or SCTP`, default: `TCP`.
	// +kubebuilder:validation:Enum=TCP;UDP;SCTP
	Protocol string `json:"protocol,omitempty"`
}

NamedPort defines the container port properties.

func (*NamedPort) DeepCopy

func (in *NamedPort) DeepCopy() *NamedPort

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

func (*NamedPort) DeepCopyInto

func (in *NamedPort) DeepCopyInto(out *NamedPort)

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

type RevisionStatus

type RevisionStatus struct {

	// CurrentRevision indicates the version of FlinkCluster.
	CurrentRevision string `json:"currentRevision,omitempty"`

	// NextRevision indicates the version of FlinkCluster updating.
	NextRevision string `json:"nextRevision,omitempty"`

	// collisionCount is the count of hash collisions for the FlinkCluster. The controller
	// uses this field as a collision avoidance mechanism when it needs to create the name for the
	// newest ControllerRevision.
	CollisionCount *int32 `json:"collisionCount,omitempty"`
}

func (*RevisionStatus) DeepCopy

func (in *RevisionStatus) DeepCopy() *RevisionStatus

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

func (*RevisionStatus) DeepCopyInto

func (in *RevisionStatus) DeepCopyInto(out *RevisionStatus)

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

func (*RevisionStatus) IsUpdateTriggered

func (r *RevisionStatus) IsUpdateTriggered() bool

type SavepointReason

type SavepointReason string

Savepoint status

type SavepointStatus

type SavepointStatus struct {
	// The ID of the Flink job.
	JobID string `json:"jobID,omitempty"`

	// Savepoint trigger ID.
	TriggerID string `json:"triggerID,omitempty"`

	// Savepoint triggered time.
	TriggerTime string `json:"triggerTime,omitempty"`

	// Savepoint triggered reason.
	TriggerReason SavepointReason `json:"triggerReason,omitempty"`

	// Savepoint status update time.
	UpdateTime string `json:"requestTime,omitempty"`

	// Savepoint state.
	State string `json:"state"`

	// Savepoint message.
	Message string `json:"message,omitempty"`
}

SavepointStatus is the status of savepoint progress.

func (*SavepointStatus) DeepCopy

func (in *SavepointStatus) DeepCopy() *SavepointStatus

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

func (*SavepointStatus) DeepCopyInto

func (in *SavepointStatus) DeepCopyInto(out *SavepointStatus)

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

func (*SavepointStatus) IsFailed

func (s *SavepointStatus) IsFailed() bool

type TaskManagerPorts

type TaskManagerPorts struct {
	// Data port, default: `6121`.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	// +kubebuilder:default:=6121
	Data *int32 `json:"data,omitempty"`

	// RPC port, default: `6122`.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	// +kubebuilder:default:=6122
	RPC *int32 `json:"rpc,omitempty"`

	// Query port, default: `6125`.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	// +kubebuilder:default:=6125
	Query *int32 `json:"query,omitempty"`
}

TaskManagerPorts defines ports of TaskManager.

func (*TaskManagerPorts) DeepCopy

func (in *TaskManagerPorts) DeepCopy() *TaskManagerPorts

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

func (*TaskManagerPorts) DeepCopyInto

func (in *TaskManagerPorts) DeepCopyInto(out *TaskManagerPorts)

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

type TaskManagerSpec

type TaskManagerSpec struct {
	// _(Optional)_ Defines the replica workload's type: `StatefulSet` or `Deployment`. If not specified, the default value is `StatefulSet`.
	// +kubebuilder:default:=StatefulSet
	DeploymentType DeploymentType `json:"deploymentType,omitempty"`

	// The number of replicas. default: `3`
	// +kubebuilder:default:=3
	// +kubebuilder:validation:Minimum=1
	Replicas *int32 `json:"replicas,omitempty"`

	// Ports that TaskManager listening on.
	// +kubebuilder:default:={data:6121, rpc:6122, query:6125}
	Ports TaskManagerPorts `json:"ports,omitempty"`

	// _(Optional)_ Extra ports to be exposed. For example, Flink metrics reporter ports: Prometheus, JMX and so on.
	ExtraPorts []NamedPort `json:"extraPorts,omitempty"`

	// Compute resources required by each TaskManager container.
	// default: 2 CPUs with 2Gi Memory.
	// It Cannot be updated.
	// [More info](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/)
	// +kubebuilder:default:={requests:{cpu:"200m", memory:"512Mi"}, limits: {cpu:2, memory:"2Gi"}}
	Resources corev1.ResourceRequirements `json:"resources,omitempty"`

	// Percentage of off-heap memory in containers, as a safety margin to avoid OOM kill, default: `25`
	MemoryOffHeapRatio *int32 `json:"memoryOffHeapRatio,omitempty"`

	// Minimum amount of off-heap memory in containers, as a safety margin to avoid OOM kill, default: `600M`
	// You can express this value like 600M, 572Mi and 600e6
	// [More info](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-memory)
	MemoryOffHeapMin resource.Quantity `json:"memoryOffHeapMin,omitempty"`

	// For Flink 1.10+. Percentage of process memory, as a safety margin to avoid OOM kill, default: `20`
	MemoryProcessRatio *int32 `json:"memoryProcessRatio,omitempty"`

	// _(Optional)_ Volumes in the TaskManager pods.
	// [More info](https://kubernetes.io/docs/concepts/storage/volumes/)
	Volumes []corev1.Volume `json:"volumes,omitempty"`

	// _(Optional)_ Volume mounts in the TaskManager containers.
	// [More info](https://kubernetes.io/docs/concepts/storage/volumes/)
	VolumeMounts []corev1.VolumeMount `json:"volumeMounts,omitempty"`

	// _(Optional)_ A template for persistent volume claim each requested and mounted to TaskManager pod,
	// This can be used to mount an external volume with a specific storageClass or larger captivity (for larger/faster state backend).
	// [More info](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims)
	// If deploymentType: StatefulSet is used, these templates will be added to the taskManager statefulset template,
	// hence mounting persistent-pvcs to the indexed statefulset pods.
	// If deploymentType: Deployment is used, these templates are appended to the Ephemeral Volumes in the PodSpec,
	// hence mounting ephemeral-pvcs to the replicaset pods.
	VolumeClaimTemplates []corev1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty"`

	// _(Optional)_ Init containers of the Task Manager pod.
	// [More info](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/)
	InitContainers []corev1.Container `json:"initContainers,omitempty"`

	// _(Optional)_ Defines the affinity of the Task Manager pod
	// [More info](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity)
	Affinity *corev1.Affinity `json:"affinity,omitempty"`

	// _(Optional)_ Selector which must match a node's labels for the Task Manager pod to be
	// scheduled on that node.
	// [More info](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/)
	NodeSelector map[string]string `json:"nodeSelector,omitempty"`

	// _(Optional)_ Defines the node affinity of the Task Manager pod
	// [More info](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)
	Tolerations []corev1.Toleration `json:"tolerations,omitempty"`

	// _(Optional)_ Sidecar containers running alongside with the TaskManager container in the pod.
	// [More info](https://kubernetes.io/docs/concepts/containers/)
	Sidecars []corev1.Container `json:"sidecars,omitempty"`

	// _(Optional)_ TaskManager StatefulSet pod template annotations.
	// [More info](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/)
	PodAnnotations map[string]string `json:"podAnnotations,omitempty"`

	// _(Optional)_ SecurityContext of the TaskManager pod.
	// [More info](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod)
	SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`

	// _(Optional)_ TaskManager StatefulSet pod template labels.
	// [More info](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/)
	PodLabels map[string]string `json:"podLabels,omitempty"`

	// Container liveness probe
	// If omitted, a [default value](https://github.com/spotify/flink-on-k8s-operator/blob/a88ed2b/api/v1beta1/flinkcluster_default.go#L177-L187) will be used.
	// [More info](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)
	LivenessProbe *corev1.Probe `json:"livenessProbe,omitempty"`

	// Container readiness probe
	// If omitted, a [default value](https://github.com/spotify/flink-on-k8s-operator/blob/a88ed2b/api/v1beta1/flinkcluster_default.go#L193-L203) will be used.
	// [More info](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)
	ReadinessProbe *corev1.Probe `json:"readinessProbe,omitempty"`

	// _(Optional)_ Adding entries to TaskManager pod /etc/hosts with HostAliases
	// [More info](https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/)
	HostAliases []corev1.HostAlias `json:"hostAliases,omitempty"`

	// _(Optional)_ HorizontalPodAutoscaler for TaskManager.
	// [More info](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/)
	HorizontalPodAutoscaler *HorizontalPodAutoscalerSpec `json:"horizontalPodAutoscaler,omitempty"`
}

TaskManagerSpec defines properties of TaskManager.

func (*TaskManagerSpec) DeepCopy

func (in *TaskManagerSpec) DeepCopy() *TaskManagerSpec

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

func (*TaskManagerSpec) DeepCopyInto

func (in *TaskManagerSpec) DeepCopyInto(out *TaskManagerSpec)

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

func (*TaskManagerSpec) GetResources added in v0.4.2

func (tm *TaskManagerSpec) GetResources() *corev1.ResourceList

type TaskManagerStatus added in v0.4.2

type TaskManagerStatus struct {
	// The resource name of the component.
	Name string `json:"name"`

	// The state of the component.
	State ComponentState `json:"state"`

	// replicas is the number of desired Pods.
	Replicas int32 `json:"replicas"`

	// readyReplicas is the number of created pods with a Ready Condition.
	ReadyReplicas int32 `json:"readyReplicas,omitempty"`

	Ready string `json:"ready"`

	Selector string `json:"selector"`
}

func (*TaskManagerStatus) DeepCopy added in v0.4.2

func (in *TaskManagerStatus) DeepCopy() *TaskManagerStatus

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

func (*TaskManagerStatus) DeepCopyInto added in v0.4.2

func (in *TaskManagerStatus) DeepCopyInto(out *TaskManagerStatus)

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

type Validator

type Validator struct{}

Validator validates CUD requests for the CR.

func (*Validator) DeepCopy

func (in *Validator) DeepCopy() *Validator

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

func (*Validator) DeepCopyInto

func (in *Validator) DeepCopyInto(out *Validator)

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

func (*Validator) ValidateCreate

func (v *Validator) ValidateCreate(cluster *FlinkCluster) error

ValidateCreate validates create request.

func (*Validator) ValidateUpdate

func (v *Validator) ValidateUpdate(old *FlinkCluster, new *FlinkCluster) error

ValidateUpdate validates update request.

Jump to

Keyboard shortcuts

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