Documentation ¶
Overview ¶
+kubebuilder:object:generate=true +groupName=druid.apache.org
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 { // RunAsInit indicate whether this should be an init container. // +optional RunAsInit bool `json:"runAsInit"` // Image Image of the additional container. // +required Image string `json:"image"` // ContainerName name of the additional container. // +required ContainerName string `json:"containerName"` // Command command for the additional container. // +required Command []string `json:"command"` // ImagePullPolicy If not present, will be taken from top level spec. // +optional ImagePullPolicy v1.PullPolicy `json:"imagePullPolicy,omitempty"` // Args Arguments to call the command. // +optional Args []string `json:"args,omitempty"` // ContainerSecurityContext If not present, will be taken from top level pod. // +optional ContainerSecurityContext *v1.SecurityContext `json:"securityContext,omitempty"` // Resources Kubernetes Native `resources` specification. // +optional Resources v1.ResourceRequirements `json:"resources,omitempty"` // VolumeMounts Kubernetes Native `VolumeMount` specification. // +optional VolumeMounts []v1.VolumeMount `json:"volumeMounts,omitempty"` // Env Environment variables for the additional container. // +optional Env []v1.EnvVar `json:"env,omitempty"` // EnvFrom Extra environment variables from remote source (ConfigMaps, Secrets...). // +optional EnvFrom []v1.EnvFromSource `json:"envFrom,omitempty"` }
AdditionalContainer defines additional sidecar containers to be deployed with the `Druid` pods. (will be part of Kubernetes native in the future: https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/753-sidecar-containers/README.md#summary).
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"` }
DeepStorageSpec IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator.
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"` }
Druid is the Schema for the druids API. +kubebuilder:object:root=true +kubebuilder:subresource:status
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"` }
DruidClusterStatus 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 handle requests. DruidClusterReady DruidNodeConditionType = "DruidClusterReady" // DruidNodeRollingUpdate means that Druid Node is rolling update. DruidNodeRollingUpdate DruidNodeConditionType = "DruidNodeRollingUpdate" // DruidNodeErrorState indicates the DruidNode is in an error state. DruidNodeErrorState DruidNodeConditionType = "DruidNodeErrorState" )
These are valid conditions of a druid Node.
type DruidNodeSpec ¶
type DruidNodeSpec struct { // NodeDruid `Druid` node type. // +required // +kubebuilder:validation:Enum:=historical;overlord;middleManager;indexer;broker;coordinator;router NodeType string `json:"nodeType"` // DruidPort Used by the `Druid` process. // +required DruidPort int32 `json:"druid.port"` // Kind Can be StatefulSet or Deployment. // Note: volumeClaimTemplates are ignored when kind=Deployment // +optional // +kubebuilder:default:="StatefulSet" Kind string `json:"kind,omitempty"` // Replicas replica of the workload // +optional // +kubebuilder:validation:Minimum=0 Replicas int32 `json:"replicas"` // PodLabels Custom labels to be populated in the workload's pods. // +optional PodLabels map[string]string `json:"podLabels,omitempty"` // PodDisruptionBudgetSpec Kubernetes native `podDisruptionBudget` specification. // +optional PodDisruptionBudgetSpec *policyv1.PodDisruptionBudgetSpec `json:"podDisruptionBudgetSpec,omitempty"` // PriorityClassName Kubernetes native `priorityClassName` specification. // +optional PriorityClassName string `json:"priorityClassName,omitempty"` // RuntimeProperties Additional runtime configuration for the specific workload. // +required RuntimeProperties string `json:"runtime.properties"` // JvmOptions overrides `JvmOptions` at top level. // +optional JvmOptions string `json:"jvm.options,omitempty"` // ExtraJvmOptions Appends extra jvm options to the `JvmOptions` field. // +optional ExtraJvmOptions string `json:"extra.jvm.options,omitempty"` // Log4jConfig Overrides `Log4jConfig` at top level. // +optional Log4jConfig string `json:"log4j.config,omitempty"` // NodeConfigMountPath in-container directory to mount with runtime.properties, jvm.config, log4j2.xml files. // +required NodeConfigMountPath string `json:"nodeConfigMountPath"` // Services Overrides services at top level. // +optional Services []v1.Service `json:"services,omitempty"` // Tolerations Kubernetes native `tolerations` specification. // +optional Tolerations []v1.Toleration `json:"tolerations,omitempty"` // Affinity Kubernetes native `affinity` specification. // +optional Affinity *v1.Affinity `json:"affinity,omitempty"` // NodeSelector Kubernetes native `nodeSelector` specification. // +optional NodeSelector map[string]string `json:"nodeSelector,omitempty"` // TerminationGracePeriodSeconds // +optional TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"` // Ports Extra ports to be added to pod spec. // +optional Ports []v1.ContainerPort `json:"ports,omitempty"` // Image Overrides image from top level, Required if no image specified at top level. // +optional Image string `json:"image,omitempty"` // ImagePullSecrets Overrides `imagePullSecrets` from top level. // +optional ImagePullSecrets []v1.LocalObjectReference `json:"imagePullSecrets,omitempty"` // ImagePullPolicy Overrides `imagePullPolicy` from top level. // +optional ImagePullPolicy v1.PullPolicy `json:"imagePullPolicy,omitempty"` // Env Environment variables for druid containers. // +optional Env []v1.EnvVar `json:"env,omitempty"` // EnvFrom Extra environment variables from remote source (ConfigMaps, Secrets...). // +optional EnvFrom []v1.EnvFromSource `json:"envFrom,omitempty"` // Resources Kubernetes Native `resources` specification. // +optional Resources v1.ResourceRequirements `json:"resources,omitempty"` // PodSecurityContext Overrides `securityContext` at top level. // +optional PodSecurityContext *v1.PodSecurityContext `json:"securityContext,omitempty"` // ContainerSecurityContext // +optional ContainerSecurityContext *v1.SecurityContext `json:"containerSecurityContext,omitempty"` // PodAnnotations Custom annotation to be populated in the workload's pods. // +optional PodAnnotations map[string]string `json:"podAnnotations,omitempty"` // PodManagementPolicy // +optional // +kubebuilder:default:="Parallel" PodManagementPolicy appsv1.PodManagementPolicyType `json:"podManagementPolicy,omitempty"` // MaxSurge For Deployment object only. // Set to 25% by default. // +optional MaxSurge *int32 `json:"maxSurge,omitempty"` // Set to 25% by default // +optional MaxUnavailable *int32 `json:"maxUnavailable,omitempty"` // UpdateStrategy // +optional UpdateStrategy *appsv1.StatefulSetUpdateStrategy `json:"updateStrategy,omitempty"` // LivenessProbe // Port is set to `druid.port` if not specified with httpGet handler. // +optional LivenessProbe *v1.Probe `json:"livenessProbe,omitempty"` // ReadinessProbe // Port is set to `druid.port` if not specified with httpGet handler. // +optional ReadinessProbe *v1.Probe `json:"readinessProbe,omitempty"` // StartUpProbe // +optional StartUpProbe *v1.Probe `json:"startUpProbe,omitempty"` // IngressAnnotations `Ingress` annotations to be populated in ingress spec. // +optional IngressAnnotations map[string]string `json:"ingressAnnotations,omitempty"` // Ingress Kubernetes Native `Ingress` specification. // +optional Ingress *networkingv1.IngressSpec `json:"ingress,omitempty"` // VolumeClaimTemplates Kubernetes Native `VolumeClaimTemplate` specification. // +optional PersistentVolumeClaim []v1.PersistentVolumeClaim `json:"persistentVolumeClaim,omitempty"` // Lifecycle // +optional Lifecycle *v1.Lifecycle `json:"lifecycle,omitempty"` // HPAutoScaler Kubernetes Native `HorizontalPodAutoscaler` specification. // +optional HPAutoScaler *autoscalev2.HorizontalPodAutoscalerSpec `json:"hpAutoscaler,omitempty"` // TopologySpreadConstraints Kubernetes Native `topologySpreadConstraints` specification. // +optional TopologySpreadConstraints []v1.TopologySpreadConstraint `json:"topologySpreadConstraints,omitempty"` // VolumeClaimTemplates Kubernetes Native `volumeClaimTemplates` specification. // +optional VolumeClaimTemplates []v1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty"` // VolumeMounts Kubernetes Native `volumeMounts` specification. // +optional VolumeMounts []v1.VolumeMount `json:"volumeMounts,omitempty"` // Volumes Kubernetes Native `volumes` specification. // +optional Volumes []v1.Volume `json:"volumes,omitempty"` // Operator deploys the sidecar container based on these properties. // +optional AdditionalContainer []AdditionalContainer `json:"additionalContainer,omitempty"` }
DruidNodeSpec Specification of `Druid` Node type and its configurations. The key in following map can be arbitrary string that helps you identify resources for a specific nodeSpec. It is used in the Kubernetes resources' names, so it must be compliant with restrictions placed on Kubernetes resource names: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/
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 { // Ignored is now deprecated API. In order to avoid reconciliation of objects use the // `druid.apache.org/ignored: "true"` annotation. // +optional // +kubebuilder:default:=false Ignored bool `json:"ignored,omitempty"` // CommonRuntimeProperties Content fo the `common.runtime.properties` configuration file. // +required CommonRuntimeProperties string `json:"common.runtime.properties"` // ExtraCommonConfig References to ConfigMaps holding more configuration files to mount to the // common configuration path. // +optional ExtraCommonConfig []*v1.ObjectReference `json:"extraCommonConfig"` // ForceDeleteStsPodOnError Delete the StatefulSet's pods if the StatefulSet is set to ordered ready. // issue: https://github.com/kubernetes/kubernetes/issues/67250 // doc: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#forced-rollback // +optional // +kubebuilder:default:=true ForceDeleteStsPodOnError bool `json:"forceDeleteStsPodOnError,omitempty"` // ScalePvcSts When enabled, operator will allow volume expansion of StatefulSet's PVCs. // +optional // +kubebuilder:default:=false ScalePvcSts bool `json:"scalePvcSts,omitempty"` // CommonConfigMountPath In-container directory to mount the Druid common configuration // +optional // +kubebuilder:default:="/opt/druid/conf/druid/cluster/_common" CommonConfigMountPath string `json:"commonConfigMountPath"` // DisablePVCDeletionFinalizer Whether PVCs shall be deleted on the deletion of the Druid cluster. // +optional // +kubebuilder:default:=false DisablePVCDeletionFinalizer bool `json:"disablePVCDeletionFinalizer,omitempty"` // DeleteOrphanPvc Orphaned (unmounted PVCs) shall be cleaned up by the operator. // +optional // +kubebuilder:default:=true DeleteOrphanPvc bool `json:"deleteOrphanPvc"` // StartScript Path to Druid's start script to be run on start. // +optional // +kubebuilder:default:="/druid.sh" StartScript string `json:"startScript"` // Image Required here or at the NodeSpec level. // +optional Image string `json:"image,omitempty"` // ServiceAccount // +optional ServiceAccount string `json:"serviceAccount,omitempty"` // ImagePullSecrets // +optional ImagePullSecrets []v1.LocalObjectReference `json:"imagePullSecrets,omitempty"` // ImagePullPolicy // +optional // +kubebuilder:default:="IfNotPresent" ImagePullPolicy v1.PullPolicy `json:"imagePullPolicy,omitempty"` // Env Environment variables for druid containers. // +optional Env []v1.EnvVar `json:"env,omitempty"` // EnvFrom Extra environment variables from remote source (ConfigMaps, Secrets...). // +optional EnvFrom []v1.EnvFromSource `json:"envFrom,omitempty"` // JvmOptions Contents of the shared `jvm.options` configuration file for druid JVM processes. // +optional JvmOptions string `json:"jvm.options,omitempty"` // Log4jConfig contents `log4j.config` configuration file. // +optional Log4jConfig string `json:"log4j.config,omitempty"` // PodSecurityContext // +optional PodSecurityContext *v1.PodSecurityContext `json:"securityContext,omitempty"` // ContainerSecurityContext // +optional ContainerSecurityContext *v1.SecurityContext `json:"containerSecurityContext,omitempty"` // VolumeClaimTemplates Kubernetes Native `VolumeClaimTemplate` specification. // +optional VolumeClaimTemplates []v1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty"` // VolumeMounts Kubernetes Native `VolumeMount` specification. // +optional VolumeMounts []v1.VolumeMount `json:"volumeMounts,omitempty"` // Volumes Kubernetes Native `Volumes` specification. // +optional Volumes []v1.Volume `json:"volumes,omitempty"` // PodAnnotations Custom annotations to be populated in `Druid` pods. // +optional PodAnnotations map[string]string `json:"podAnnotations,omitempty"` // PodManagementPolicy // +optional // +kubebuilder:default:="Parallel" PodManagementPolicy appsv1.PodManagementPolicyType `json:"podManagementPolicy,omitempty"` // PodLabels Custom labels to be populated in `Druid` pods. // +optional PodLabels map[string]string `json:"podLabels,omitempty"` // PriorityClassName Kubernetes native `priorityClassName` specification. // +optional PriorityClassName string `json:"priorityClassName,omitempty"` // UpdateStrategy // +optional UpdateStrategy *appsv1.StatefulSetUpdateStrategy `json:"updateStrategy,omitempty"` // LivenessProbe // Port is set to `druid.port` if not specified with httpGet handler. // +optional LivenessProbe *v1.Probe `json:"livenessProbe,omitempty"` // ReadinessProbe // Port is set to `druid.port` if not specified with httpGet handler. // +optional ReadinessProbe *v1.Probe `json:"readinessProbe,omitempty"` // StartUpProbe // +optional StartUpProbe *v1.Probe `json:"startUpProbe,omitempty"` // Services Kubernetes services to be created for each workload. // +optional Services []v1.Service `json:"services,omitempty"` // NodeSelector Kubernetes native `nodeSelector` specification. // +optional NodeSelector map[string]string `json:"nodeSelector,omitempty"` // Tolerations Kubernetes native `tolerations` specification. // +optional Tolerations []v1.Toleration `json:"tolerations,omitempty"` // Affinity Kubernetes native `affinity` specification. // +optional Affinity *v1.Affinity `json:"affinity,omitempty"` // Nodes a list of `Druid` Node types and their configurations. // `DruidSpec` is used to create Kubernetes workload specs. Many of the fields above can be overridden at the specific // `NodeSpec` level. // +required Nodes map[string]DruidNodeSpec `json:"nodes"` // AdditionalContainer defines additional sidecar containers to be deployed with the `Druid` pods. // +optional AdditionalContainer []AdditionalContainer `json:"additionalContainer,omitempty"` // RollingDeploy Whether to deploy the components in a rolling update as described in the documentation: // https://druid.apache.org/docs/latest/operations/rolling-updates.html // If set to true then operator checks the rollout status of previous version workloads before updating the next. // This will be done only for update actions. // +optional // +kubebuilder:default:=true RollingDeploy bool `json:"rollingDeploy"` // DefaultProbes If set to true this will add default probes (liveness / readiness / startup) for all druid components // but it won't override existing probes // +optional // +kubebuilder:default:=true DefaultProbes bool `json:"defaultProbes"` // Zookeeper IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator. // +optional Zookeeper *ZookeeperSpec `json:"zookeeper,omitempty"` // MetadataStore IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator. // +optional MetadataStore *MetadataStoreSpec `json:"metadataStore,omitempty"` // DeepStorage IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator. // +optional DeepStorage *DeepStorageSpec `json:"deepStorage,omitempty"` // DimensionsMapPath Custom Dimension Map Path for statsd emitter. // stastd documentation is described in the following documentation: // https://druid.apache.org/docs/latest/development/extensions-contrib/statsd.html // +optional DimensionsMapPath string `json:"metricDimensions.json,omitempty"` // HdfsSite Contents of `hdfs-site.xml`. // +optional HdfsSite string `json:"hdfs-site.xml,omitempty"` // CoreSite Contents of `core-site.xml`. // +optional CoreSite string `json:"core-site.xml,omitempty"` }
DruidSpec defines the desired state of the Druid cluster.
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"` }
MetadataStoreSpec IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator.
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"` }
ZookeeperSpec IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator.
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.