All Projects → spaghettifunk → terraform-aws-druid

spaghettifunk / terraform-aws-druid

Licence: Apache-2.0 license
Terraform module to deploy Apache Druid in Kubernetes

Programming Languages

HCL
1544 projects
shell
77523 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to terraform-aws-druid

Postgresql cluster
PostgreSQL High-Availability Cluster (based on "Patroni" and "DCS(etcd)"). Automating deployment with Ansible.
Stars: ✭ 294 (+1737.5%)
Mutual labels:  postgres, cluster
Kudo
Kubernetes Universal Declarative Operator (KUDO)
Stars: ✭ 849 (+5206.25%)
Mutual labels:  cluster, zookeeper
Teleport
Certificate authority and access plane for SSH, Kubernetes, web apps, databases and desktops
Stars: ✭ 10,602 (+66162.5%)
Mutual labels:  postgres, cluster
Udacity Data Engineering Projects
Few projects related to Data Engineering including Data Modeling, Infrastructure setup on cloud, Data Warehousing and Data Lake development.
Stars: ✭ 458 (+2762.5%)
Mutual labels:  postgres, cluster
Repmgr
A lightweight replication manager for PostgreSQL (Postgres) - latest version 5.2.1 (2020-12-07)
Stars: ✭ 1,207 (+7443.75%)
Mutual labels:  postgres, cluster
Postgres Operator
Postgres operator creates and manages PostgreSQL clusters running in Kubernetes
Stars: ✭ 2,194 (+13612.5%)
Mutual labels:  postgres, cluster
Yoke
Postgres high-availability cluster with auto-failover and automated cluster recovery.
Stars: ✭ 1,360 (+8400%)
Mutual labels:  postgres, cluster
terraform-aws-rds-cluster
Terraform module to provision an RDS Aurora cluster for MySQL or Postgres
Stars: ✭ 115 (+618.75%)
Mutual labels:  cluster, terraform-modules
node-advanced
Node Advanced Courseware
Stars: ✭ 80 (+400%)
Mutual labels:  cluster
koinos
Official home of the Koinos Blockchain. Use this umbrella repository to launch a Koinos cluster using Docker.
Stars: ✭ 24 (+50%)
Mutual labels:  cluster
springboot-dubbo-zookeeper-demo
spring boot 集成dubbo和zookeeper
Stars: ✭ 42 (+162.5%)
Mutual labels:  zookeeper
terraform-aws-api-gateway
Terraform module to create Route53 resource on AWS for create api gateway with it's basic elements.
Stars: ✭ 43 (+168.75%)
Mutual labels:  terraform-modules
terraform-aws-base-networking
Terraform module for building base networking in AWS
Stars: ✭ 15 (-6.25%)
Mutual labels:  terraform-modules
create-fastify-app
An utility that help you to generate or add plugin to your Fastify project
Stars: ✭ 53 (+231.25%)
Mutual labels:  postgres
docker-compose-moodle
This project quickly builds a local workspace for Moodle (Apache2, PHP-FPM with XDEBUG y Postgres) using containers for each of its main components. The local workspace is built and managed by Docker Compose
Stars: ✭ 33 (+106.25%)
Mutual labels:  postgres
kubectl-node-restart
Krew plugin to restart Kubernetes Nodes sequentially and gracefully
Stars: ✭ 73 (+356.25%)
Mutual labels:  cluster
zookeeper
Apache ZooKeeper .NET async Client
Stars: ✭ 229 (+1331.25%)
Mutual labels:  zookeeper
dlock
Interval Lock
Stars: ✭ 19 (+18.75%)
Mutual labels:  postgres
props
config source library for golang, support properties/yaml/ini file、zookeeper\consul\etcd k/v k/props
Stars: ✭ 57 (+256.25%)
Mutual labels:  zookeeper
general-angular
Realtime Angular Admin/CRUD Front End App
Stars: ✭ 24 (+50%)
Mutual labels:  postgres

Lint

Apache Druid terraform

This is a Terraform module for installing Druid on your Kubernetes cluster. This modules uses normal Kubernetes definitions files instead of the Helm Chart. Despite the Helm chart would make this module way more smaller, we think that for faster testing and deployment, it would have been simpler using multiple yaml files rather then templating.

Currently the this module works only with S3. We ❤️ contributions! Open a PR to support multiple cloud providers.

Build the docker image

To build the Druid docker image, follow the steps below:

  1. cd docker
  2. docker build -t your-repo/druid:latest .
  3. docker push your-repo/druid:latest

Remeber to use your own repository

Deploy the module

Once the image is built and pushed to the registry, you can install the module in your cluster.

It will take few minutes before it gets everything up and running. Once it's ready, you should be able to port-forward towards the Druid UI. To do so, run kubectl port-forward --namespace druid svc/router-cs 8888:8888, open your browser at http://localhost:8888/unified-console.html# and you should see the UI running. If you see 500 Errors within the boxes of the services, it means that it's not ready yet. Wait a little longer and then refresh. If it stays that way, you need to check where the error is.

If you are able to see all the services in the Druid UI it means that your cluster is ready to be used.

Affinity and AntiAffinity

In this module, we followed what the production documentation explains. The location/colocation of the services are done by associating the nodes according to the master, data and query services.

Postsgres resource

If you want to deploy Postgres without using different values for Database name, user and password, mind that you need to keep the same namespace as the druid resources. Those values are defined in a configmap and you cannot share configmaps across namespaces.

Requirements

Name Version
terraform >= 0.12.9
kubernetes >= 1.11.1

Providers

Name Version
kubernetes >= 1.11.1

Inputs

Name Description Type Default Required
aws_access_key AWS Access Key value. Permissions needed for S3 string n/a yes
aws_bucket_index S3 bucket for storing the indexes string n/a yes
aws_bucket_storage S3 bucket for storing the segments string n/a yes
aws_region AWS region string n/a yes
aws_secret_key AWS Secret Key value. Permissions needed for S3 string n/a yes
broker_replicas Number of replicas for the Broker service number 3 no
coordinator_replicas Number of replicas for the Coordinator service number 1 no
create_postgres Controls if Postgres database resources should be created (it affects almost all resources) bool true no
create_zookeeper Controls if Zookeeper resources should be created (it affects almost all resources) bool true no
druid_image_registry Docker registry used to fetch the Apache Druid image string "davideberdin" no
druid_image_repository Docker image of Apache Druid compatible for this module string "apache-druid" no
druid_image_tag Docker image tag string "0.18.1" no
historical_replicas Number of replicas for the Historical service number 1 no
middlemanager_replicas Number of replicas for the Middlemanager service number 1 no
namespace Namespace where Druid will be deployed string "druid" no
overlord_replicas Number of replicas for the Overlord service number 1 no
postgres_db Postgress Database name for Druid string "druid" no
postgres_host Postgress Database hostname for Druid string "postgres-cs.druid.svc.cluster.local" no
postgres_namespace namespace where to deploy the postgres resource string "druid" no
postgres_password Postgress Password of the user string "druid" no
postgres_port Postgress Database port for Druid string "5432" no
postgres_user Postgres username for accessing the DB string "druid" no
router_replicas Number of replicas for the Router service number 1 no
tolerations_broker toleration to apply to the deployment of the broker
list(object({
effect = string
key = string
operator = string
toleration_seconds = string
value = string
}))
[] no
tolerations_coordinator toleration to apply to the deployment of the coordinator
list(object({
effect = string
key = string
operator = string
toleration_seconds = string
value = string
}))
[] no
tolerations_historical toleration to apply to the deployment of the historical
list(object({
effect = string
key = string
operator = string
toleration_seconds = string
value = string
}))
[] no
tolerations_middlemanager toleration to apply to the deployment of the middlemanager
list(object({
effect = string
key = string
operator = string
toleration_seconds = string
value = string
}))
[] no
tolerations_overlord toleration to apply to the deployment of the overlord
list(object({
effect = string
key = string
operator = string
toleration_seconds = string
value = string
}))
[] no
tolerations_router toleration to apply to the deployment of the router
list(object({
effect = string
key = string
operator = string
toleration_seconds = string
value = string
}))
[] no
zookeeper_host Zookeeper hostname for Druid string "zk-cs.zk-druid.svc.cluster.local" no
zookeeper_namespace namespace where to deploy the zookeeper resource string "zk-druid" no
zookeeper_replicas Number of replicas for the Zookeeper service number 3 no

Outputs

No output.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].