# This spec only works on a single node kubernetes cluster(e.g. typical k8s cluster setup for dev using kind/minikube or single node AWS EKS cluster etc) # as it uses local disk as "deep storage". # apiVersion: "druid.apache.org/v1alpha1" kind: "Druid" metadata: name: tiny-cluster spec: image: apache/druid:0.20.0 # Optionally specify image for all nodes. Can be specify on nodes also # imagePullSecrets: # - name: tutu startScript: /druid.sh podLabels: environment: stage release: alpha podAnnotations: dummykey: dummyval readinessProbe: httpGet: path: /status/health port: 8088 securityContext: fsGroup: 1000 runAsUser: 1000 runAsGroup: 1000 services: - spec: type: ClusterIP clusterIP: None commonConfigMountPath: "/opt/druid/conf/druid/cluster/_common" jvm.options: |- -server -XX:MaxDirectMemorySize=10240g -Duser.timezone=UTC -Dfile.encoding=UTF-8 -Dlog4j.debug -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Djava.io.tmpdir=/druid/data log4j.config: |- common.runtime.properties: | # Zookeeper druid.zk.service.host=tiny-cluster-zk-0.tiny-cluster-zk druid.zk.paths.base=/druid druid.zk.service.compress=false # Metadata Store druid.metadata.storage.type=derby druid.metadata.storage.connector.connectURI=jdbc:derby://localhost:1527/druid/data/derbydb/metadata.db;create=true druid.metadata.storage.connector.host=localhost druid.metadata.storage.connector.port=1527 druid.metadata.storage.connector.createTables=true # Deep Storage druid.storage.type=local druid.storage.storageDirectory=/druid/deepstorage # # Extensions # druid.extensions.loadList=["druid-kafka-indexing-service"] # # Service discovery # druid.selectors.indexing.serviceName=druid/overlord druid.selectors.coordinator.serviceName=druid/coordinator druid.indexer.logs.type=file druid.indexer.logs.directory=/druid/data/indexing-logs druid.lookup.enableLookupSyncOnStartup=false volumeMounts: - mountPath: /druid/data name: data-volume - mountPath: /druid/deepstorage name: deepstorage-volume volumes: - name: data-volume emptyDir: {} - name: deepstorage-volume hostPath: path: /tmp/druid/deepstorage type: DirectoryOrCreate env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace nodes: brokers: # Optionally specify for running broker as Deployment # kind: Deployment nodeType: "broker" # Optionally specify for broker nodes # imagePullSecrets: # - name: tutu druid.port: 8088 nodeConfigMountPath: "/opt/druid/conf/druid/cluster/query/broker" replicas: 1 runtime.properties: | druid.service=druid/broker # HTTP server threads druid.broker.http.numConnections=5 druid.server.http.numThreads=10 # Processing threads and buffers druid.processing.buffer.sizeBytes=1 druid.processing.numMergeBuffers=1 druid.processing.numThreads=1 druid.sql.enable=true extra.jvm.options: |- -Xmx512M -Xms512M coordinators: # Optionally specify for running coordinator as Deployment # kind: Deployment nodeType: "coordinator" druid.port: 8088 nodeConfigMountPath: "/opt/druid/conf/druid/cluster/master/coordinator-overlord" replicas: 1 runtime.properties: | druid.service=druid/coordinator # HTTP server threads druid.coordinator.startDelay=PT30S druid.coordinator.period=PT30S # Configure this coordinator to also run as Overlord druid.coordinator.asOverlord.enabled=true druid.coordinator.asOverlord.overlordService=druid/overlord druid.indexer.queue.startDelay=PT30S druid.indexer.runner.type=local extra.jvm.options: |- -Xmx512M -Xms512M historicals: nodeType: "historical" druid.port: 8088 nodeConfigMountPath: "/opt/druid/conf/druid/cluster/data/historical" replicas: 1 runtime.properties: | druid.service=druid/historical druid.server.http.numThreads=5 druid.processing.buffer.sizeBytes=536870912 druid.processing.numMergeBuffers=1 druid.processing.numThreads=1 # Segment storage druid.segmentCache.locations=[{\"path\":\"/druid/data/segments\",\"maxSize\":10737418240}] druid.server.maxSize=10737418240 extra.jvm.options: |- -Xmx512M -Xms512M volumeClaimTemplates: - metadata: name: broker-data spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: rook-ceph-block routers: nodeType: "router" druid.port: 8088 nodeConfigMountPath: "/opt/druid/conf/druid/cluster/query/router" replicas: 1 runtime.properties: | druid.service=druid/router # HTTP proxy druid.router.http.numConnections=10 druid.router.http.readTimeout=PT5M druid.router.http.numMaxThreads=10 druid.server.http.numThreads=10 # Service discovery druid.router.defaultBrokerServiceName=druid/broker druid.router.coordinatorServiceName=druid/coordinator # Management proxy to coordinator / overlord: required for unified web console. druid.router.managementProxy.enabled=true extra.jvm.options: |- -Xmx512M -Xms512M