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 ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Druid.
func (*Druid) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Druid) DeepCopyObject ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DruidList.
func (*DruidList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DruidList) DeepCopyObject ¶
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"` 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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DruidSpec.
func (*DruidSpec) DeepCopyInto ¶
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.