Skip to content

Commit df0a19d

Browse files
committed
Add ClickHouse node group support to comet_eks module
- Introduced variables for ClickHouse node group configuration, including name, instance types, size, and EBS volume settings. - Updated main.tf to include ClickHouse node group in the EKS module. - Modified variables.tf to add a toggle for enabling the ClickHouse node group and updated the description for additional node groups. This enhancement allows for dedicated ClickHouse nodes in the EKS cluster, improving data processing capabilities.
1 parent 358ee25 commit df0a19d

File tree

4 files changed

+169
-6
lines changed

4 files changed

+169
-6
lines changed

main.tf

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,11 @@ module "comet_eks" {
8585
enable_mpm_infra = var.enable_mpm_infra
8686

8787
# Node Group Toggles
88-
enable_admin_node_group = var.eks_enable_admin_node_group
89-
enable_comet_node_group = var.eks_enable_comet_node_group
90-
enable_druid_node_group = var.eks_enable_druid_node_group
91-
enable_airflow_node_group = var.eks_enable_airflow_node_group
88+
enable_admin_node_group = var.eks_enable_admin_node_group
89+
enable_comet_node_group = var.eks_enable_comet_node_group
90+
enable_druid_node_group = var.eks_enable_druid_node_group
91+
enable_airflow_node_group = var.eks_enable_airflow_node_group
92+
enable_clickhouse_node_group = var.eks_enable_clickhouse_node_group
9293

9394
# Admin Node Group
9495
eks_admin_name = var.eks_admin_name
@@ -118,6 +119,17 @@ module "comet_eks" {
118119
eks_airflow_max_size = var.eks_airflow_max_size
119120
eks_airflow_desired_size = var.eks_airflow_desired_size
120121

122+
# ClickHouse Node Group
123+
eks_clickhouse_name = var.eks_clickhouse_name
124+
eks_clickhouse_instance_types = var.eks_clickhouse_instance_types
125+
eks_clickhouse_min_size = var.eks_clickhouse_min_size
126+
eks_clickhouse_max_size = var.eks_clickhouse_max_size
127+
eks_clickhouse_desired_size = var.eks_clickhouse_desired_size
128+
eks_clickhouse_volume_size = var.eks_clickhouse_volume_size
129+
eks_clickhouse_volume_type = var.eks_clickhouse_volume_type
130+
eks_clickhouse_volume_encrypted = var.eks_clickhouse_volume_encrypted
131+
eks_clickhouse_delete_on_termination = var.eks_clickhouse_delete_on_termination
132+
121133
# Additional custom node groups
122134
additional_node_groups = var.eks_additional_node_groups
123135
}

modules/comet_eks/main.tf

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,34 @@ module "eks" {
137137
iam_role_additional_policies = var.s3_enabled ? { comet_s3_access = var.comet_ec2_s3_iam_policy } : {}
138138
}
139139
} : {},
140+
# ClickHouse Node Group
141+
var.enable_clickhouse_node_group ? {
142+
clickhouse = {
143+
name = var.eks_clickhouse_name
144+
instance_types = var.eks_clickhouse_instance_types
145+
min_size = var.eks_clickhouse_min_size
146+
max_size = var.eks_clickhouse_max_size
147+
desired_size = var.eks_clickhouse_desired_size
148+
block_device_mappings = {
149+
xvda = {
150+
device_name = "/dev/xvda"
151+
ebs = {
152+
volume_size = var.eks_clickhouse_volume_size
153+
volume_type = var.eks_clickhouse_volume_type
154+
encrypted = var.eks_clickhouse_volume_encrypted
155+
delete_on_termination = var.eks_clickhouse_delete_on_termination
156+
}
157+
}
158+
}
159+
labels = {
160+
nodegroup_name = "clickhouse"
161+
}
162+
tags = var.common_tags
163+
tags_propagate_at_launch = true
164+
launch_template_version = "$Latest"
165+
iam_role_additional_policies = var.s3_enabled ? { comet_s3_access = var.comet_ec2_s3_iam_policy } : {}
166+
}
167+
} : {},
140168
# Additional custom node groups
141169
var.additional_node_groups
142170
)

modules/comet_eks/variables.tf

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,70 @@ variable "common_tags" {
231231
default = {}
232232
}
233233

234+
# ClickHouse Node Group Toggle
235+
variable "enable_clickhouse_node_group" {
236+
description = "Enable dedicated ClickHouse node group"
237+
type = bool
238+
default = false
239+
}
240+
241+
# ClickHouse Node Group Variables
242+
variable "eks_clickhouse_name" {
243+
description = "Name for the ClickHouse node group"
244+
type = string
245+
default = "clickhouse"
246+
}
247+
248+
variable "eks_clickhouse_instance_types" {
249+
description = "Instance types for the ClickHouse node group"
250+
type = list(string)
251+
default = ["r5.2xlarge"]
252+
}
253+
254+
variable "eks_clickhouse_min_size" {
255+
description = "Minimum number of ClickHouse nodes"
256+
type = number
257+
default = 2
258+
}
259+
260+
variable "eks_clickhouse_max_size" {
261+
description = "Maximum number of ClickHouse nodes"
262+
type = number
263+
default = 3
264+
}
265+
266+
variable "eks_clickhouse_desired_size" {
267+
description = "Desired number of ClickHouse nodes"
268+
type = number
269+
default = 2
270+
}
271+
272+
variable "eks_clickhouse_volume_size" {
273+
description = "EBS volume size in GB for ClickHouse nodes"
274+
type = number
275+
default = 500
276+
}
277+
278+
variable "eks_clickhouse_volume_type" {
279+
description = "EBS volume type for ClickHouse nodes"
280+
type = string
281+
default = "gp3"
282+
}
283+
284+
variable "eks_clickhouse_volume_encrypted" {
285+
description = "Enable EBS encryption for ClickHouse volumes"
286+
type = bool
287+
default = true
288+
}
289+
290+
variable "eks_clickhouse_delete_on_termination" {
291+
description = "Delete EBS volumes on instance termination"
292+
type = bool
293+
default = true
294+
}
295+
234296
variable "additional_node_groups" {
235-
description = "Additional EKS managed node groups to create beyond the predefined ones (admin, comet, druid, airflow)"
297+
description = "Additional EKS managed node groups to create beyond the predefined ones (admin, comet, druid, airflow, clickhouse)"
236298
type = any
237299
default = {}
238300
}

variables.tf

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,12 @@ variable "eks_enable_airflow_node_group" {
189189
default = true
190190
}
191191

192+
variable "eks_enable_clickhouse_node_group" {
193+
description = "Enable dedicated ClickHouse node group"
194+
type = bool
195+
default = false
196+
}
197+
192198
# Admin Node Group Variables
193199
variable "eks_admin_name" {
194200
description = "Name for the admin node group"
@@ -351,8 +357,63 @@ variable "eks_airflow_desired_size" {
351357
default = 2
352358
}
353359

360+
# ClickHouse Node Group Variables
361+
variable "eks_clickhouse_name" {
362+
description = "Name for the ClickHouse node group"
363+
type = string
364+
default = "clickhouse"
365+
}
366+
367+
variable "eks_clickhouse_instance_types" {
368+
description = "Instance types for the ClickHouse node group"
369+
type = list(string)
370+
default = ["r5.2xlarge"]
371+
}
372+
373+
variable "eks_clickhouse_min_size" {
374+
description = "Minimum number of ClickHouse nodes"
375+
type = number
376+
default = 2
377+
}
378+
379+
variable "eks_clickhouse_max_size" {
380+
description = "Maximum number of ClickHouse nodes"
381+
type = number
382+
default = 3
383+
}
384+
385+
variable "eks_clickhouse_desired_size" {
386+
description = "Desired number of ClickHouse nodes"
387+
type = number
388+
default = 2
389+
}
390+
391+
variable "eks_clickhouse_volume_size" {
392+
description = "EBS volume size in GB for ClickHouse nodes"
393+
type = number
394+
default = 500
395+
}
396+
397+
variable "eks_clickhouse_volume_type" {
398+
description = "EBS volume type for ClickHouse nodes"
399+
type = string
400+
default = "gp3"
401+
}
402+
403+
variable "eks_clickhouse_volume_encrypted" {
404+
description = "Enable EBS encryption for ClickHouse volumes"
405+
type = bool
406+
default = true
407+
}
408+
409+
variable "eks_clickhouse_delete_on_termination" {
410+
description = "Delete EBS volumes on instance termination"
411+
type = bool
412+
default = true
413+
}
414+
354415
variable "eks_additional_node_groups" {
355-
description = "Additional EKS managed node groups to create beyond the predefined ones (admin, comet, druid, airflow)"
416+
description = "Additional EKS managed node groups to create beyond the predefined ones (admin, comet, druid, airflow, clickhouse)"
356417
type = any
357418
default = {}
358419
}

0 commit comments

Comments
 (0)