v1alpha1

package
v0.0.0-...-9cec3f2 Latest Latest
Warning

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

Go to latest
Published: Feb 23, 2023 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the druid v1alpha1 API group +kubebuilder:object:generate=true +groupName=druid.apache.org

Index

Constants

This section is empty.

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "druid.apache.org", 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 AdditionalContainer

type AdditionalContainer struct {

	// This is the image for the additional container to run.
	// This is a required field
	Image string `json:"image"`

	// This is the name of the additional container.
	// This is a required field
	ContainerName string `json:"containerName"`

	// This is the command for the additional container to run.
	// This is a required field
	Command []string `json:"command"`

	// Optional: If not present, will be taken from top level spec
	ImagePullPolicy v1.PullPolicy `json:"imagePullPolicy,omitempty"`

	// Optional: Argument to call the command
	Args []string `json:"args,omitempty"`

	// Optional: ContainerSecurityContext. If not present, will be taken from top level pod
	ContainerSecurityContext *v1.SecurityContext `json:"securityContext,omitempty"`

	// Optional: CPU/Memory Resources
	Resources v1.ResourceRequirements `json:"resources,omitempty"`

	// Optional: volumes etc for the Druid pods
	VolumeMounts []v1.VolumeMount `json:"volumeMounts,omitempty"`

	// Optional: environment variables for the Additional Container
	Env []v1.EnvVar `json:"env,omitempty"`

	// Optional: Extra environment variables
	EnvFrom []v1.EnvFromSource `json:"envFrom,omitempty"`
}

AdditionalContainer defines the additional sidecar container

func (*AdditionalContainer) DeepCopy

func (in *AdditionalContainer) DeepCopy() *AdditionalContainer

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

func (*AdditionalContainer) DeepCopyInto

func (in *AdditionalContainer) DeepCopyInto(out *AdditionalContainer)

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

type DeepStorageSpec

type DeepStorageSpec struct {
	Type string          `json:"type"`
	Spec json.RawMessage `json:"spec"`
}

func (*DeepStorageSpec) DeepCopy

func (in *DeepStorageSpec) DeepCopy() *DeepStorageSpec

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

func (*DeepStorageSpec) DeepCopyInto

func (in *DeepStorageSpec) DeepCopyInto(out *DeepStorageSpec)

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

type Druid

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

	Spec   DruidSpec          `json:"spec"`
	Status DruidClusterStatus `json:"status,omitempty"`
}

+kubebuilder:object:root=true +kubebuilder:subresource:status Druid is the Schema for the druids API

func (*Druid) DeepCopy

func (in *Druid) DeepCopy() *Druid

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

func (*Druid) DeepCopyInto

func (in *Druid) DeepCopyInto(out *Druid)

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

func (*Druid) DeepCopyObject

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

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

type DruidClusterStatus

type DruidClusterStatus struct {
	// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
	// Important: Run "make" to regenerate code after modifying this file
	DruidNodeStatus        DruidNodeTypeStatus `json:"druidNodeStatus,omitempty"`
	StatefulSets           []string            `json:"statefulSets,omitempty"`
	Deployments            []string            `json:"deployments,omitempty"`
	Services               []string            `json:"services,omitempty"`
	ConfigMaps             []string            `json:"configMaps,omitempty"`
	PodDisruptionBudgets   []string            `json:"podDisruptionBudgets,omitempty"`
	Ingress                []string            `json:"ingress,omitempty"`
	HPAutoScalers          []string            `json:"hpAutoscalers,omitempty"`
	Pods                   []string            `json:"pods,omitempty"`
	PersistentVolumeClaims []string            `json:"persistentVolumeClaims,omitempty"`
}

DruidStatus defines the observed state of Druid

func (*DruidClusterStatus) DeepCopy

func (in *DruidClusterStatus) DeepCopy() *DruidClusterStatus

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

func (*DruidClusterStatus) DeepCopyInto

func (in *DruidClusterStatus) DeepCopyInto(out *DruidClusterStatus)

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

type DruidList

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

DruidList contains a list of Druid

func (*DruidList) DeepCopy

func (in *DruidList) DeepCopy() *DruidList

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

func (*DruidList) DeepCopyInto

func (in *DruidList) DeepCopyInto(out *DruidList)

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

func (*DruidList) DeepCopyObject

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

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

type DruidNodeConditionType

type DruidNodeConditionType string
const (
	// DruidClusterReady indicates the underlying druid objects is fully deployed
	// Underlying pods are able to service requests
	DruidClusterReady DruidNodeConditionType = "DruidClusterReady"
	// DruidNodeRollingUpgrade means that Druid Node is rolling update.
	DruidNodeRollingUpdate DruidNodeConditionType = "DruidNodeRollingUpdate"
	// DruidNodeError indicates the DruidNode is in an error state.
	DruidNodeErrorState DruidNodeConditionType = "DruidNodeErrorState"
)

These are valid conditions of a druid Node

type DruidNodeSpec

type DruidNodeSpec struct {
	// Required: Druid node type e.g. Broker, Coordinator, Historical, MiddleManager, Router, Overlord etc
	NodeType string `json:"nodeType"`

	// Required: Port used by Druid Process
	DruidPort int32 `json:"druid.port"`

	// Defaults to statefulsets.
	// Note: volumeClaimTemplates are ignored when kind=Deployment
	Kind string `json:"kind,omitempty"`

	// Required
	// +kubebuilder:validation:Minimum=0
	Replicas int32 `json:"replicas"`

	// Optional
	PodLabels map[string]string `json:"podLabels,omitempty"`

	// Optional
	PodDisruptionBudgetSpec *v1beta1.PodDisruptionBudgetSpec `json:"podDisruptionBudgetSpec,omitempty"`

	// Required
	RuntimeProperties string `json:"runtime.properties"`

	// Optional: This overrides JvmOptions at top level
	JvmOptions string `json:"jvm.options,omitempty"`

	// Optional: This appends extra jvm options to JvmOptions field
	ExtraJvmOptions string `json:"extra.jvm.options,omitempty"`

	// Optional: This overrides Log4jConfig at top level
	Log4jConfig string `json:"log4j.config,omitempty"`

	// Required: in-container directory to mount with runtime.properties, jvm.config, log4j2.xml files
	NodeConfigMountPath string `json:"nodeConfigMountPath"`

	// Optional: Overrides services at top level
	Services []v1.Service `json:"services,omitempty"`

	// Optional: toleration to be used in order to run Druid on nodes tainted
	Tolerations []v1.Toleration `json:"tolerations,omitempty"`

	// Optional: affinity to be used to for enabling node, pod affinity and anti-affinity
	Affinity *v1.Affinity `json:"affinity,omitempty"`

	// Optional: node selector to be used by Druid statefulsets
	NodeSelector map[string]string `json:"nodeSelector,omitempty"`

	// Optional: terminationGracePeriod
	TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`

	// Optional: extra ports to be added to pod spec
	Ports []v1.ContainerPort `json:"ports,omitempty"`

	// Optional: Overrides image from top level, Required if no image specified at top level
	Image string `json:"image,omitempty"`

	// Optional: Overrides imagePullSecrets from top level
	ImagePullSecrets []v1.LocalObjectReference `json:"imagePullSecrets,omitempty"`

	// Optional: Overrides imagePullPolicy from top level
	ImagePullPolicy v1.PullPolicy `json:"imagePullPolicy,omitempty"`

	// Optional: Extra environment variables
	Env []v1.EnvVar `json:"env,omitempty"`

	// Optional: Extra environment variables
	EnvFrom []v1.EnvFromSource `json:"envFrom,omitempty"`

	// Optional: CPU/Memory Resources
	Resources v1.ResourceRequirements `json:"resources,omitempty"`

	// Optional: Overrides securityContext at top level
	PodSecurityContext *v1.PodSecurityContext `json:"securityContext,omitempty"`

	// Optional: druid pods container-security-context
	ContainerSecurityContext *v1.SecurityContext `json:"containerSecurityContext,omitempty"`

	// Optional: custom annotations to be populated in Druid pods
	PodAnnotations map[string]string `json:"podAnnotations,omitempty"`

	// Optional: By default it is set to "parallel"
	PodManagementPolicy appsv1.PodManagementPolicyType `json:"podManagementPolicy,omitempty"`

	// Optional: maxSurge for deployment object, only applicable if kind=Deployment
	MaxSurge *int32 `json:"maxSurge,omitempty"`

	// Optional: maxUnavailable for deployment object, only applicable if kind=Deployment
	MaxUnavailable *int32 `json:"maxUnavailable,omitempty"`

	// Optional
	UpdateStrategy *appsv1.StatefulSetUpdateStrategy `json:"updateStrategy,omitempty"`

	// Optional
	LivenessProbe *v1.Probe `json:"livenessProbe,omitempty"`

	// Optional
	ReadinessProbe *v1.Probe `json:"readinessProbe,omitempty"`

	// Optional: StartupProbe for nodeSpec
	StartUpProbes *v1.Probe `json:"startUpProbes,omitempty"`

	// Optional: Ingress Annoatations to be populated in ingress spec
	IngressAnnotations map[string]string `json:"ingressAnnotations,omitempty"`

	// Optional: Ingress Spec
	Ingress *networkingv1.IngressSpec `json:"ingress,omitempty"`

	// Optional: Persistant volume claim
	PersistentVolumeClaim []v1.PersistentVolumeClaim `json:"persistentVolumeClaim,omitempty"`

	// Optional
	Lifecycle *v1.Lifecycle `json:"lifecycle,omitempty"`

	// Optional
	HPAutoScaler *autoscalev2beta2.HorizontalPodAutoscalerSpec `json:"hpAutoscaler,omitempty"`

	// Optional
	TopologySpreadConstraints []v1.TopologySpreadConstraint `json:"topologySpreadConstraints,omitempty"`

	VolumeClaimTemplates []v1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty"`
	VolumeMounts         []v1.VolumeMount           `json:"volumeMounts,omitempty"`
	Volumes              []v1.Volume                `json:"volumes,omitempty"`
}

func (*DruidNodeSpec) DeepCopy

func (in *DruidNodeSpec) DeepCopy() *DruidNodeSpec

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

func (*DruidNodeSpec) DeepCopyInto

func (in *DruidNodeSpec) DeepCopyInto(out *DruidNodeSpec)

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

type DruidNodeTypeStatus

type DruidNodeTypeStatus struct {
	DruidNode                string                 `json:"druidNode,omitempty"`
	DruidNodeConditionStatus v1.ConditionStatus     `json:"druidNodeConditionStatus,omitempty"`
	DruidNodeConditionType   DruidNodeConditionType `json:"druidNodeConditionType,omitempty"`
	Reason                   string                 `json:"reason,omitempty"`
}

func (*DruidNodeTypeStatus) DeepCopy

func (in *DruidNodeTypeStatus) DeepCopy() *DruidNodeTypeStatus

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

func (*DruidNodeTypeStatus) DeepCopyInto

func (in *DruidNodeTypeStatus) DeepCopyInto(out *DruidNodeTypeStatus)

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

type DruidSpec

type DruidSpec struct {

	// Optional: If true, this spec would be ignored by the operator
	Ignored bool `json:"ignored,omitempty"`

	// Required: common.runtime.properties contents
	CommonRuntimeProperties string `json:"common.runtime.properties"`

	// Optional: Default is true, will delete the sts pod if sts is set to ordered ready to ensure
	// issue: https://github.com/kubernetes/kubernetes/issues/67250
	// doc: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#forced-rollback
	ForceDeleteStsPodOnError bool `json:"forceDeleteStsPodOnError,omitempty"`

	// Optional: ScalePvcSts, defaults to false. When enabled, operator will allow volume expansion of sts and pvc's.
	ScalePvcSts bool `json:"scalePvcSts,omitempty"`

	// Required: in-container directory to mount with common.runtime.properties
	CommonConfigMountPath string `json:"commonConfigMountPath"`

	// Optional: Default is set to false, pvc shall be deleted on deletion of CR
	DisablePVCDeletionFinalizer bool `json:"disablePVCDeletionFinalizer,omitempty"`

	// Optional: Default is set to true, orphaned ( unmounted pvc's ) shall be cleaned up by the operator.
	// +optional
	DeleteOrphanPvc bool `json:"deleteOrphanPvc"`

	// Required: path to druid start script to be run on container start
	StartScript string `json:"startScript"`

	// Required here or at nodeSpec level
	Image string `json:"image,omitempty"`

	// Optional: ServiceAccount for the druid cluster
	ServiceAccount string `json:"serviceAccount,omitempty"`

	// Optional: imagePullSecrets for private registries
	ImagePullSecrets []v1.LocalObjectReference `json:"imagePullSecrets,omitempty"`

	// Optional:
	ImagePullPolicy v1.PullPolicy `json:"imagePullPolicy,omitempty"`

	// Optional: environment variables for druid containers
	Env []v1.EnvVar `json:"env,omitempty"`

	// Optional: Extra environment variables
	EnvFrom []v1.EnvFromSource `json:"envFrom,omitempty"`

	// Optional: jvm options for druid jvm processes
	JvmOptions string `json:"jvm.options,omitempty"`

	// Optional: log4j config contents
	Log4jConfig string `json:"log4j.config,omitempty"`

	// Optional: druid pods pod-security-context
	PodSecurityContext *v1.PodSecurityContext `json:"securityContext,omitempty"`

	// Optional: druid pods container-security-context
	ContainerSecurityContext *v1.SecurityContext `json:"containerSecurityContext,omitempty"`

	// Optional: volumes etc for the Druid pods
	VolumeClaimTemplates []v1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty"`
	VolumeMounts         []v1.VolumeMount           `json:"volumeMounts,omitempty"`
	Volumes              []v1.Volume                `json:"volumes,omitempty"`

	// Optional: custom annotations to be populated in Druid pods
	PodAnnotations map[string]string `json:"podAnnotations,omitempty"`

	// Optional: By default it is set to "parallel"
	PodManagementPolicy appsv1.PodManagementPolicyType `json:"podManagementPolicy,omitempty"`

	// Optional: custom labels to be populated in Druid pods
	PodLabels map[string]string `json:"podLabels,omitempty"`

	// Optional
	UpdateStrategy *appsv1.StatefulSetUpdateStrategy `json:"updateStrategy,omitempty"`

	// Optional, port is set to druid.port if not specified with httpGet handler
	LivenessProbe *v1.Probe `json:"livenessProbe,omitempty"`

	// Optional, port is set to druid.port if not specified with httpGet handler
	ReadinessProbe *v1.Probe `json:"readinessProbe,omitempty"`

	// Optional: StartupProbe for nodeSpec
	StartUpProbe *v1.Probe `json:"startUpProbe,omitempty"`

	// Optional: k8s service resources to be created for each Druid statefulsets
	Services []v1.Service `json:"services,omitempty"`

	// Optional: node selector to be used by Druid statefulsets
	NodeSelector map[string]string `json:"nodeSelector,omitempty"`

	// Optional: toleration to be used in order to run Druid on nodes tainted
	Tolerations []v1.Toleration `json:"tolerations,omitempty"`

	// Optional: affinity to be used to for enabling node, pod affinity and anti-affinity
	Affinity *v1.Affinity `json:"affinity,omitempty"`

	// Spec used to create StatefulSet specs etc, Many of the fields above can be overridden at the specific
	// node spec level.
	// Key in following map can be arbitrary string that helps you identify resources(pods, statefulsets etc) for specific nodeSpec.
	// But, it is used in the k8s resource names, so it must be compliant with restrictions
	// placed on k8s resource names.
	// that is, it must match regex '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*'
	Nodes map[string]DruidNodeSpec `json:"nodes"`

	// Operator deploys the sidecar container based on these properties. Sidecar will be deployed for all the Druid pods.
	AdditionalContainer []AdditionalContainer `json:"additionalContainer,omitempty"`

	// Operator deploys above list of nodes in the Druid prescribed order of Historical, Overlord, MiddleManager,
	// Broker, Coordinator etc.
	// Optional: If set to true then operator checks the rollout status of previous version StateSets before updating next.
	// Used only for updates.
	RollingDeploy bool `json:"rollingDeploy,omitempty"`

	// futuristic stuff to make Druid dependency setup extensible from within Druid operator
	// ignore for now.
	Zookeeper     *ZookeeperSpec     `json:"zookeeper,omitempty"`
	MetadataStore *MetadataStoreSpec `json:"metadataStore,omitempty"`
	DeepStorage   *DeepStorageSpec   `json:"deepStorage,omitempty"`

	// Optional: Custom Dimension Map Path for statsd emitter
	DimensionsMapPath string `json:"metricDimensions.json,omitempty"`
}

DruidSpec defines the desired state of Druid

func (*DruidSpec) DeepCopy

func (in *DruidSpec) DeepCopy() *DruidSpec

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

func (*DruidSpec) DeepCopyInto

func (in *DruidSpec) DeepCopyInto(out *DruidSpec)

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

type MetadataStoreSpec

type MetadataStoreSpec struct {
	Type string          `json:"type"`
	Spec json.RawMessage `json:"spec"`
}

func (*MetadataStoreSpec) DeepCopy

func (in *MetadataStoreSpec) DeepCopy() *MetadataStoreSpec

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

func (*MetadataStoreSpec) DeepCopyInto

func (in *MetadataStoreSpec) DeepCopyInto(out *MetadataStoreSpec)

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

type ZookeeperSpec

type ZookeeperSpec struct {
	Type string          `json:"type"`
	Spec json.RawMessage `json:"spec"`
}

func (*ZookeeperSpec) DeepCopy

func (in *ZookeeperSpec) DeepCopy() *ZookeeperSpec

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

func (*ZookeeperSpec) DeepCopyInto

func (in *ZookeeperSpec) DeepCopyInto(out *ZookeeperSpec)

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