Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/asdf2014/druid-helm

Helm Chart for Apache Druid
https://github.com/asdf2014/druid-helm

druid helm kubernetes

Last synced: 3 months ago
JSON representation

Helm Chart for Apache Druid

Awesome Lists containing this project

README

        

# Helm Chart for Apache Druid

## Quick Start

[Apache Druid Helm Chart](https://github.com/asdf2014/druid-helm) can be used to deploy a Druid cluster on Kubernetes with following commands:

```bash
# Add repository
$ helm repo add druid-helm https://asdf2014.github.io/druid-helm/

# Install chart
$ helm install my-druid druid-helm/druid --version 30.1.0
```

## Install Local Chart

In addition to the above method, also you can install this local Druid Helm Chart.

First, you need update the dependencies:

```bash
$ helm dependency update .
```

To install the Druid Chart into your Kubernetes cluster:

```bash
$ helm install druid . --namespace dev --create-namespace
```

After installation succeeds, you can get a status of Chart:

```bash
$ helm status druid -n dev
```

If you want to delete your Chart, use this command:

```bash
$ helm uninstall druid -n dev
```

## Helm Chart Configuration

The following table lists the configurable parameters of the Druid Helm Chart and their default values.

### Common

| Parameter | Description | Default |
| -------------------------- | ---------------------------------------------------- | -------------- |
| `image.repository` | container image name | `apache/druid` |
| `image.tag` | container image tag | `30.0.1` |
| `image.pullPolicy` | container pull policy | `IfNotPresent` |
| `image.pullSecrets` | image pull secrets for private repository | `[]` |
| `configMap.enabled` | enable druid configuration as configmap | `true` |
| `configVars` | druid configuration variables for all components | `` |
| `gCloudStorage.enabled` | look for secret to set google cloud credentials | `false` |
| `gCloudStorage.secretName` | secretName to be mounted as google cloud credentials | `false` |
| `rbac.create` | Create roles and roleBindings for service Accounts | `true` |

### Router

| Parameter | Description | Default |
| ---------------------------------------------------- | ------------------------------------------------- | -------------------------------- |
| `router.enabled` | enable router | `true` |
| `router.name` | router component name | `router` |
| `router.replicaCount` | router node replicas (deployment) | `1` |
| `router.port` | port of router component | `8888` |
| `router.serviceType` | service type for service | `ClusterIP` |
| `router.serviceAccount.create` | Create a service account for router service | `true` |
| `router.serviceAccount.name` | Service account name | Derived from the name of service |
| `router.serviceAccount.annotations` | Annotations applied to created service account | `{}` |
| `router.serviceAccount.labels` | Labels applied to created service account | `{}` |
| `router.serviceAccount.automountServiceAccountToken` | Automount API credentials for the Service Account | `true` |
| `router.resources` | router node resources requests & limits | `{}` |
| `router.podAnnotations` | router Deployment annotations | `{}` |
| `router.nodeSelector` | node labels for router pod assignment | `{}` |
| `router.tolerations` | router tolerations | `[]` |
| `router.config` | router private config such as `JAVA_OPTS` | |
| `router.affinity` | router affinity policy | `{}` |
| `router.ingress.enabled` | enable ingress | `false` |
| `router.ingress.hosts` | hosts for the router api | `[ "chart-example.local" ]` |
| `router.ingress.path` | path of the router api | `/` |
| `router.ingress.annotations` | annotations for the router api ingress | `{}` |
| `router.ingress.tls` | TLS configuration for the ingress | `[]` |

### Broker

| Parameter | Description | Default |
| ---------------------------------------------------- | ------------------------------------------------- | -------------------------------- |
| `broker.enabled` | enable broker | `true` |
| `broker.name` | broker component name | `broker` |
| `broker.replicaCount` | broker node replicas (deployment) | `1` |
| `broker.port` | port of broker component | `8082` |
| `broker.serviceAccount.create` | Create a service account for broker service | `true` |
| `broker.serviceAccount.name` | Service account name | Derived from the name of service |
| `broker.serviceAccount.annotations` | Annotations applied to created service account | `{}` |
| `broker.serviceAccount.labels` | Labels applied to created service account | `{}` |
| `broker.serviceAccount.automountServiceAccountToken` | Automount API credentials for the Service Account | `true` |
| `broker.serviceType` | service type for service | `ClusterIP` |
| `broker.resources` | broker node resources requests & limits | `{}` |
| `broker.podAnnotations` | broker deployment annotations | `{}` |
| `broker.nodeSelector` | Node labels for broker pod assignment | `{}` |
| `broker.tolerations` | broker tolerations | `[]` |
| `broker.config` | broker private config such as `JAVA_OPTS` | |
| `broker.affinity` | broker affinity policy | `{}` |
| `broker.ingress.enabled` | enable ingress | `false` |
| `broker.ingress.hosts` | hosts for the broker api | `[ "chart-example.local" ]` |
| `broker.ingress.path` | path of the broker api | `/` |
| `broker.ingress.annotations` | annotations for the broker api ingress | `{}` |
| `broker.ingress.tls` | TLS configuration for the ingress | `[]` |

### Overlord

| Parameter | Description | Default |
| ------------------------------------------------------ | ------------------------------------------------- | -------------------------------- |
| `overlord.enabled` | enable overlord | `true` |
| `overlord.name` | overlord component name | `overlord` |
| `overlord.replicaCount` | overlord node replicas (deployment) | `1` |
| `overlord.port` | port of overlord component | `8081` |
| `overlord.serviceType` | service type for service | `ClusterIP` |
| `overlord.serviceAccount.create` | Create a service account for overlord service | `true` |
| `overlord.serviceAccount.name` | Service account name | Derived from the name of service |
| `overlord.serviceAccount.annotations` | Annotations applied to created service account | `{}` |
| `overlord.serviceAccount.labels` | Labels applied to created service account | `{}` |
| `overlord.serviceAccount.automountServiceAccountToken` | Automount API credentials for the Service Account | `true` |
| `overlord.resources` | overlord node resources requests & limits | `{}` |
| `overlord.podAnnotations` | overlord Deployment annotations | `{}` |
| `overlord.nodeSelector` | node labels for overlord pod assignment | `{}` |
| `overlord.tolerations` | overlord tolerations | `[]` |
| `overlord.config` | overlord private config such as `JAVA_OPTS` | |
| `overlord.affinity` | overlord affinity policy | `{}` |
| `overlord.ingress.enabled` | enable ingress | `false` |
| `overlord.ingress.hosts` | hosts for the overlord api | `[ "chart-example.local" ]` |
| `overlord.ingress.path` | path of the overlord api | `/` |
| `overlord.ingress.annotations` | annotations for the overlord api ingress | `{}` |
| `overlord.ingress.tls` | TLS configuration for the ingress | `[]` |

### Coordinator

| Parameter | Description | Default |
| --------------------------------------------------------- | ------------------------------------------------- | -------------------------------- |
| `coordinator.enabled` | enable coordinator | `true` |
| `coordinator.name` | coordinator component name | `coordinator` |
| `coordinator.replicaCount` | coordinator node replicas (deployment) | `1` |
| `coordinator.port` | port of coordinator component | `8081` |
| `coordinator.serviceType` | service type for service | `ClusterIP` |
| `coordinator.serviceAccount.create` | Create a service account for coordinator service | `true` |
| `coordinator.serviceAccount.name` | Service account name | Derived from the name of service |
| `coordinator.serviceAccount.annotations` | Annotations applied to created service account | `{}` |
| `coordinator.serviceAccount.labels` | Labels applied to created service account | `{}` |
| `coordinator.serviceAccount.automountServiceAccountToken` | Automount API credentials for the Service Account | `true` |
| `coordinator.resources` | coordinator node resources requests & limits | `{}` |
| `coordinator.podAnnotations` | coordinator Deployment annotations | `{}` |
| `coordinator.nodeSelector` | node labels for coordinator pod assignment | `{}` |
| `coordinator.tolerations` | coordinator tolerations | `[]` |
| `coordinator.config` | coordinator private config such as `JAVA_OPTS` | |
| `coordinator.affinity` | coordinator affinity policy | `{}` |
| `coordinator.ingress.enabled` | enable ingress | `false` |
| `coordinator.ingress.hosts` | hosts for the coordinator api | `[ "chart-example.local" ]` |
| `coordinator.ingress.path` | path of the coordinator api | `/` |
| `coordinator.ingress.annotations` | annotations for the coordinator api ingress | `{}` |
| `coordinator.ingress.tls` | TLS configuration for the ingress | `[]` |

### MiddleManager

| Parameter | Description | Default |
| ----------------------------------------------------------- | ---------------------------------------------------- |---------------------------|
| `middleManager.enabled` | enable middleManager | `true` |
| `middleManager.name` | middleManager component name | `middleManager` |
| `middleManager.replicaCount` | middleManager node replicas (statefulset) | `1` |
| `middleManager.port` | port of middleManager component | `8091` |
| `middleManager.serviceType` | service type for service | `ClusterIP` |
| `middleManager.serviceAccount.create` | Create a service account for middleManager service | `true` |
| `middleManager.serviceAccount.name` | Service account name | `` |
| `middleManager.serviceAccount.annotations` | Annotations applied to created service account | `{}` |
| `middleManager.serviceAccount.labels` | Labels applied to created service account | `{}` |
| `middleManager.serviceAccount.automountServiceAccountToken` | Automount API credentials for the Service Account | `true` |
| `middleManager.resources` | middleManager node resources requests & limits | `{}` |
| `middleManager.podAnnotations` | middleManager Deployment annotations | `{}` |
| `middleManager.nodeSelector` | Node labels for middleManager pod assignment | `{}` |
| `middleManager.securityContext` | custom security context for middleManager containers | `{ fsGroup: 1000 }` |
| `middleManager.tolerations` | middleManager tolerations | `[]` |
| `middleManager.config` | middleManager private config such as `JAVA_OPTS` | |
| `middleManager.persistence.enabled` | middleManager persistent enabled/disabled | `true` |
| `middleManager.persistence.size` | middleManager persistent volume size | `4Gi` |
| `middleManager.persistence.storageClass` | middleManager persistent volume Class | `nil` |
| `middleManager.persistence.accessMode` | middleManager persistent Access Mode | `ReadWriteOnce` |
| `middleManager.antiAffinity` | middleManager anti-affinity policy | `soft` |
| `middleManager.nodeAffinity` | middleManager node affinity policy | `{}` |
| `middleManager.autoscaling.enabled` | enable horizontal pod autoscaling | `false` |
| `middleManager.autoscaling.minReplicas` | middleManager autoscaling min replicas | `2` |
| `middleManager.autoscaling.maxReplicas` | middleManager autoscaling max replicas | `5` |
| `middleManager.autoscaling.metrics` | middleManager autoscaling metrics | `[]` |
| `middleManager.ingress.enabled` | enable ingress | `false` |
| `middleManager.ingress.hosts` | hosts for the middleManager api | `[ "chart-example.local" ]` |
| `middleManager.ingress.path` | path of the middleManager api | `/` |
| `middleManager.ingress.annotations` | annotations for the middleManager api ingress | `{}` |
| `middleManager.ingress.tls` | TLS configuration for the ingress | `[]` |

### Historical

| Parameter | Description | Default |
| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------- |
| `historical.enabled` | enable historical | `true` |
| `historical.name` | historical component name | `historical` |
| `historical.replicaCount` | historical node replicas (statefulset) | `1` |
| `historical.port` | port of historical component | `8083` |
| `historical.serviceType` | service type for service | `ClusterIP` |
| `historical.serviceAccount.create` | Create a service account for historical service | `true` |
| `historical.serviceAccount.name` | Service account name | Derived from the name of service |
| `historical.serviceAccount.annotations` | Annotations applied to created service account | `{}` |
| `historical.serviceAccount.labels` | Labels applied to created service account | `{}` |
| `historical.serviceAccount.automountServiceAccountToken` | Automount API credentials for the Service Account | `true` |
| `historical.resources` | historical node resources requests & limits | `{}` |
| `historical.livenessProbeInitialDelaySeconds` | historical node liveness probe initial delay in seconds | `60` |
| `historical.readinessProbeInitialDelaySeconds` | historical node readiness probe initial delay in seconds | `60` |
| `historical.podAnnotations` | historical Deployment annotations | `{}` |
| `historical.nodeSelector` | node labels for historical pod assignment | `{}` |
| `historical.securityContext` | custom security context for historical containers | `{ fsGroup: 1000 }` |
| `historical.tolerations` | historical tolerations | `[]` |
| `historical.config` | historical node private config such as `JAVA_OPTS` | |
| `historical.persistence.enabled` | historical persistent enabled/disabled | `true` |
| `historical.persistence.size` | historical persistent volume size | `4Gi` |
| `historical.persistence.storageClass` | historical persistent volume Class | `nil` |
| `historical.persistence.accessMode` | historical persistent Access Mode | `ReadWriteOnce` |
| `historical.antiAffinity` | historical anti-affinity policy | `soft` |
| `historical.nodeAffinity` | historical node affinity policy | `{}` |
| `historical.ingress.enabled` | enable ingress | `false` |
| `historical.ingress.hosts` | hosts for the historical api | `[ "chart-example.local" ]` |
| `historical.ingress.path` | path of the historical api | `/` |
| `historical.ingress.annotations` | annotations for the historical api ingress | `{}` |
| `historical.ingress.tls` | TLS configuration for the ingress | `[]` |

### PostgreSQL

| Parameter | Description | Default |
| -------------------------- | ----------------------- | ------- |
| `postgresql.enabled` | enable PostgreSQL | `true` |
| `postgresql.auth.username` | PostgreSQL username | `druid` |
| `postgresql.auth.password` | PostgreSQL password | `druid` |
| `postgresql.auth.database` | PostgreSQL database | `druid` |
| `postgresql.service.port` | PostgreSQL service port | `5432` |

### Prometheus

| Parameter | Description | Default |
| ----------------------- | --------------------------------------------- | ------------------------------------------------------------ |
| `prometheus.enabled` | Support scraping from prometheus | `false` |
| `prometheus.port` | expose prometheus port | `9090` |
| `prometheus.annotation` | pods annotation to notify prometheus scraping | `{prometheus.io/scrape: "true", prometheus.io/port: "9090"}` |

Full and up-to-date documentation can be found in the comments of the `values.yaml` file.

## Druid Configuration

Druid configuration can be changed by using environment variables from Docker image.

See the [Druid Docker entry point](https://github.com/apache/druid/blob/master/distribution/docker/druid.sh) for more information.

## Ingress

The Chart provides ingress configuration to allow customization the installation by adapting the `values.yaml` depending on your setup. Please read the comments in the `values.yaml` file for more details on how to configure your reverse proxy or load balancer.

## Persistence

MiddleManagers and Historicals use StatefulSet. Persistence has been enabled by default.